![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
МАСТЕРА! Как записывать и считывать из файла длинные строки? [D5, Win95/98]
WinSetup © (2002-12-23 18:14:00)МАСТЕРА! Как записывать и считывать из файла длинные строки (более 255 символов)?
WinSetup (2002-12-23 19:30:00) [1]>>ZrenBy
Спасибо!!!
ZrenBy (2002-12-23 19:27:00) [2]Rewrite(f, 1); { Record size = 1 }
The entire block transferred occupies at most Count * RecSize bytes. RecSize is the record size specified when the file was opened (or 128 if the record size was unspecified).
gsu (2002-12-23 19:24:00) [3]А причем здесь s[1] ?
WinSetup (2002-12-23 19:22:00) [4]>>Skier
Я же указал, что если использовать length(s), то в файл записывается 768 байт
Skier (2002-12-23 19:18:00) [5]blockwrite(f,s[1], length(s));
И смотри внимательней...тебе уже MBo всё сказал...
WinSetup (2002-12-23 19:04:00) [6]var
f:file;
s:string;
begin
s:="qwerty";
assignfile(f,"c:\1.txt");
rewrite(f);
blockwrite(f,s[1],length(s[1]));
closefile(f);
end;
При выполнении в файл записывается 128 байт (а если - length(s), то 768), можно ли записать столько байт, сколько символов содержится в строке?
gsu (2002-12-23 18:53:00) [7]Можешь вначале сохранить заголовок с размерностью
WinSetup (2002-12-23 18:52:00) [8]Спасибо! Попробую
MBo (2002-12-23 18:46:00) [9]в blockwrite указываешь s[1] и length(s), а при чтении сначала setlength делаешь (длину строки перед ней, конечно, придется писать)
WinSetup (2002-12-23 18:36:00) [10]Спасибо за ответ!
Этот способ будет работать для текстовых файлов. А как работать с нетипиризированными файлами (block/write/read)?
MBo (2002-12-23 18:24:00) [11]объявить их просто как string без указания длины (по умолчанию это AnsiString - длина практически не ограничена)