|
FAQ Туториалы и часто задаваемые вопросы |
10.06.2012, 22:29
|
#1
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
WriteString записывает не только указанное значение
Здравствуйте, когда я записываю определённое значение в файл оператором WriteString, то он перед этим значением в файле записывает и непонятный набор символов. Чтобы вам было яснее, предоставляю код:
Graphics 300,300
writer = WriteFile("write.txt")
WriteString(writer, "String")
CloseFile(writer)
WaitKey()
А в файле я получаю вот такое:
Или вот такое:
Или даже вот такое:
Пробовал вот такой код:
Graphics 300,300
writer = WriteFile("write.txt")
WriteString(writer, Mid("String",1,10000)
CloseFile(writer)
WaitKey()
Не помогло. Помогите мне убрать эти непонятные символы, а оставить только String. Использовать WriteLine мне нельзя, так как буду записывать несколько строчек.
|
(Offline)
|
|
10.06.2012, 22:32
|
#2
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: WriteString записывает не только указанное значение
ReadString прочитает нормально из файла небоись. Главное в правильном порядке применить чтение. также как и записывал.
|
(Offline)
|
|
10.06.2012, 22:34
|
#3
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Function WriteString2(file,str$)
For i = 1 To Len(str)
WriteByte(file,Asc(Mid(str,i,1)))
Next
EndFunction
Запишет только строку.
|
(Offline)
|
|
10.06.2012, 22:34
|
#4
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: WriteString записывает не только указанное значение
radiobutton, я читаю обычным блокнотом.
|
(Offline)
|
|
10.06.2012, 22:35
|
#5
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Сообщение от infuzo
Не помогло. Помогите мне убрать эти непонятные символы, а оставить только String. Использовать WriteLine мне нельзя, так как буду записывать несколько строчек.
|
Из хелпа:
Each string is stored in the file as a 4 byte (32bit) integer followed by the characters that form the string. The integer contains the number of characters in the string, i.e. its length. Note, that Carriage Return, Line Feed and Null characters are NOT use to indicate the end of the string. A file of strings cannot be read like a text file, since it contains string variables and not text. A null string, i.e. a string of zero length ("") is stored as 4 bytes, an integer count with a value = zero, followed by no Characters. Note strings are not limited to 255 characters as in some languages. Reading beyond the end of file does not result in an error, but each value read will be a zero length string.
|
Короче так и будет записываться с байтами-символами. Writeline тут как лучше раз. Просто просуммируй строку на запись.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.06.2012, 22:39
|
#6
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: WriteString записывает не только указанное значение
А вот мне нужно записывать несколько строк. По идее, это оператор должен подходить, но то что он делает - nicht gut.
cannot be read like a text file
|
Что за бред? А для чего тогда он нужен?
|
(Offline)
|
|
10.06.2012, 22:42
|
#7
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Сообщение от infuzo
А вот мне нужно записывать несколько строк. По идее, это оператор должен подходить, но то что он делает - nicht gut.
Что за бред? А для чего тогда он нужен?
|
А почему бы не заюзать так:
строка_на_запись=строка_на_запись+другая_строка
writeline строка_на_запись
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
10.06.2012, 22:43
|
#8
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: WriteString записывает не только указанное значение
А вот мне нужно записывать несколько строк.
|
Ну, можешь вручную переводить строку:
WriteByte(f,13)
WriteByte(f,10)
|
(Offline)
|
|
10.06.2012, 22:46
|
#9
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Gector, я пишу функцию для записи значения ключа в конфигурационный файл ini. Суть заключена в том, что оператором ReadString считывается весь файл. Потом Replace'oм заменяется предыдущее значение на следующее, и WriteString записывает уже изменённую переменную. Вот так.
|
(Offline)
|
|
10.06.2012, 22:52
|
#10
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Сообщение от infuzo
Gector, я пишу функцию для записи значения ключа в конфигурационный файл ini. Суть заключена в том, что оператором ReadString считывается весь файл. Потом Replace'oм заменяется предыдущее значение на следующее, и WriteString записывает уже изменённую переменную. Вот так.
|
Ты на блице думаешь безопасность обеспечить? Не самый лучший выбор если честно.
Но вообще WriteString записывает строку и число ее символов чтобы потом считывать. Она в отличие от readline как обычный текст не читается.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
10.06.2012, 23:05
|
#11
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Ты на блице думаешь безопасность обеспечить?
|
Причём тут безопасность? Ключ - идентификатор значения. Простой INI файл имеет такую структуру:
Ключ1=Значение
...
КлючN=Значение
|
(Offline)
|
|
10.06.2012, 23:12
|
#12
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Сообщение от infuzo
Причём тут безопасность? Ключ - идентификатор значения. Простой INI файл имеет такую структуру:
Ключ1=Значение
...
КлючN=Значение
|
Я грешным делом про код авторизации подумал.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
11.06.2012, 00:02
|
#13
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: WriteString записывает не только указанное значение
WriteLine(klu4$+"="+zna4enie$)
;;;;;;;;;;;;;;;;;;;;;;;
s$=""
While(not(eof(file)))
s=s+ReadLine$(file)+"#"
wend
в итоге получица так
"lol=45#piw=523423#troll="troll""
будиш разбивать реплейсом.(хз чо за реплейс xD)
|
(Offline)
|
|
11.06.2012, 00:10
|
#14
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: WriteString записывает не только указанное значение
radiobutton, это создание новой секции, а мне нужна запись в уже имеющуюся. Но вопрос был не в этом.
|
(Offline)
|
|
11.06.2012, 00:21
|
#15
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: WriteString записывает не только указанное значение
Сообщение от infuzo
radiobutton, это создание новой секции, а мне нужна запись в уже имеющуюся. Но вопрос был не в этом.
|
запись в уже имеющуюся определённую секцию файла невозможна (на сколько я знаю) в блице. Полная перезапись в любом случае будет нужна.
Один WriteLine равен одной строке в твоём ini файле. Стопицот WriteLine - стопицот строк.
И да, что ты запишешь через WriteString, что через WriteLine - для тебя изменится только внешний вид твоего ini файла (но не для компа конечно). Хочешь читабельный результат - пиши через WriteLine, а считывай через ReadLine. У меня все конфиги во всех проектах так реализованы, потому что можно править руками через блокнот. Все другие типы записи (WriteString, WriteFloat и др.) без обязательного прочтения соответствующим оператором в блице ты исправить не сможешь.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:00.
|