Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 10.06.2012, 18:29   #1
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
WriteString записывает не только указанное значение

Здравствуйте, когда я записываю определённое значение в файл оператором WriteString, то он перед этим значением в файле записывает и непонятный набор символов. Чтобы вам было яснее, предоставляю код:

Graphics 300,300
writer = WriteFile("write.txt")
WriteString(writer, "String")
CloseFile(writer)
WaitKey()
А в файле я получаю вот такое:
    String
Или вот такое:
!    String
Или даже вот такое:
¬     String
Пробовал вот такой код:
Graphics 300,300
writer = WriteFile("write.txt")
WriteString(writer, Mid("String",1,10000)
CloseFile(writer)
WaitKey()
Не помогло. Помогите мне убрать эти непонятные символы, а оставить только String. Использовать WriteLine мне нельзя, так как буду записывать несколько строчек.
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:32   #2
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: WriteString записывает не только указанное значение

ReadString прочитает нормально из файла небоись. Главное в правильном порядке применить чтение. также как и записывал.
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:34   #3
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 893
Написано 475 полезных сообщений
(для 1,462 пользователей)
Ответ: WriteString записывает не только указанное значение

Function WriteString2(file,str$)
 For i = 1 To Len(str)
  WriteByte(file,Asc(Mid(str,i,1)))
 Next
EndFunction
Запишет только строку.
__________________

(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:34   #4
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: WriteString записывает не только указанное значение

radiobutton, я читаю обычным блокнотом.
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:35   #5
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 13.10.2007
Сообщений: 3,866
Написано 2,003 полезных сообщений
(для 5,054 пользователей)
Ответ: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
infuzo (10.06.2012)
Старый 10.06.2012, 18:39   #6
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: WriteString записывает не только указанное значение

Запишет только строку.
А вот мне нужно записывать несколько строк. По идее, это оператор должен подходить, но то что он делает - nicht gut.
cannot be read like a text file
Что за бред? А для чего тогда он нужен?
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:42   #7
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 13.10.2007
Сообщений: 3,866
Написано 2,003 полезных сообщений
(для 5,054 пользователей)
Ответ: WriteString записывает не только указанное значение

Сообщение от infuzo Посмотреть сообщение
А вот мне нужно записывать несколько строк. По идее, это оператор должен подходить, но то что он делает - nicht gut.

Что за бред? А для чего тогда он нужен?
А почему бы не заюзать так:
строка_на_запись=строка_на_запись+другая_строка
writeline строка_на_запись
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:43   #8
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 893
Написано 475 полезных сообщений
(для 1,462 пользователей)
Ответ: WriteString записывает не только указанное значение

А вот мне нужно записывать несколько строк.
Ну, можешь вручную переводить строку:
WriteByte(f,13)
WriteByte(f,10)
__________________

(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:46   #9
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: WriteString записывает не только указанное значение

Gector, я пишу функцию для записи значения ключа в конфигурационный файл ini. Суть заключена в том, что оператором ReadString считывается весь файл. Потом Replace'oм заменяется предыдущее значение на следующее, и WriteString записывает уже изменённую переменную. Вот так.
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 18:52   #10
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 13.10.2007
Сообщений: 3,866
Написано 2,003 полезных сообщений
(для 5,054 пользователей)
Ответ: WriteString записывает не только указанное значение

Сообщение от infuzo Посмотреть сообщение
Gector, я пишу функцию для записи значения ключа в конфигурационный файл ini. Суть заключена в том, что оператором ReadString считывается весь файл. Потом Replace'oм заменяется предыдущее значение на следующее, и WriteString записывает уже изменённую переменную. Вот так.
Ты на блице думаешь безопасность обеспечить? Не самый лучший выбор если честно.
Но вообще WriteString записывает строку и число ее символов чтобы потом считывать. Она в отличие от readline как обычный текст не читается.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 19:05   #11
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: WriteString записывает не только указанное значение

Ты на блице думаешь безопасность обеспечить?
Причём тут безопасность? Ключ - идентификатор значения. Простой INI файл имеет такую структуру:
Ключ1=Значение
...
КлючN=Значение
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 19:12   #12
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 13.10.2007
Сообщений: 3,866
Написано 2,003 полезных сообщений
(для 5,054 пользователей)
Ответ: WriteString записывает не только указанное значение

Сообщение от infuzo Посмотреть сообщение
Причём тут безопасность? Ключ - идентификатор значения. Простой INI файл имеет такую структуру:
Ключ1=Значение
...
КлючN=Значение
Я грешным делом про код авторизации подумал.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 20:02   #13
radiobutton
Бывалый
 
Регистрация: 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)
 
Ответить с цитированием
Старый 10.06.2012, 20:10   #14
infuzo
Нуждающийся
 
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 9 пользователей)
Ответ: WriteString записывает не только указанное значение

radiobutton, это создание новой секции, а мне нужна запись в уже имеющуюся. Но вопрос был не в этом.
(Offline)
 
Ответить с цитированием
Старый 10.06.2012, 20:21   #15
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,023
Написано 1,158 полезных сообщений
(для 2,780 пользователей)
Ответ: 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 02:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com