Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранения в файл TStringList


Profi ©   (2005-01-29 16:27:00) 

Не могу понять где ошибка, и вообще можно ли так?

Procedure Save;
var
fl:file of TstringList;
sl:TsringList;
i:integer;
begin
sl:=TStringList.create;
for i:=0 to 10 do
sl.add(inttostr(i));
assignfile(fl,'proba.fpb');
rewrite(fl);
write(fl,sl);
closefile(fl);
sl.free;
end;

Procedure Load;
var
fl:file of TStringList;
sl:TstringList;
begin
assignfile(fl,'proba.fpb');
reset(fl);
read(fl,sl);
closefile(fl);
listbox1.items:=sl;
end;


default   (2005-01-29 17:53:00) [1]

Anatoly Podgoretsky ©   (29.01.05 17:48) [11]
он не использовал SaveToFile, писал указатели на объекты


Anatoly Podgoretsky   (2005-01-29 17:48:00) [2]

Profi ©   (29.01.05 17:17) [7]
Неправда, TStringList нормально сохраняет, не 4 байта, а ровно столько, сколько есть.


Profi   (2005-01-29 17:40:00) [3]

В общем все ясно, придется еще один файл создавать. Всем спасибо.


novice_man   (2005-01-29 17:35:00) [4]

Profi ©   (29.01.05 17:17) [7]

sl:TsringList;
...
write(fl,sl);
...


Так Вы просто указатель записываете, а он как раз 4 байта.
ТStringList же сохраняет все именно в текстовом файле (здесь, текстовый файл - файл содержащий коды символов с $20 по $FF, а также символы перевода строки #0D#0A и символ EOF).


default   (2005-01-29 17:25:00) [5]

Profi ©   (29.01.05 17:17) [7]
так руками!
если у Вас там файл записей элементов которой является TStringList-ая переменная то придётся хранить и её длину
хотя в некоторых случаях можно и без длины обойтись, но тогда придётся читать записи побайтно


Profi   (2005-01-29 17:17:00) [6]

default ©   (29.01.05 17:12) [6]
Так тоже самое 4 байта и все!


default   (2005-01-29 17:12:00) [7]

Profi ©   (29.01.05 17:06) [5]
ну так сохраняйте


Profi   (2005-01-29 17:06:00) [8]

default ©   (29.01.05 16:52) [4]
Просто у меня запись, один из элементов - TStringList, вот всю запись и надо сохранить.


default   (2005-01-29 16:52:00) [9]

Profi ©   (29.01.05 16:43) [3]
TStringList думаете какое-то чудо производит?
также добавляет строки разделённые разделителями


Profi   (2005-01-29 16:43:00) [10]

Bez   (29.01.05 16:35) [2]
В том-то и дело, что мне надо сохранить набор строк именно как TStringList, а не как текстовый файл.


Bez   (2005-01-29 16:35:00) [11]

нет
так нельзя

ожно

sl.LoadFromFile
 
sl.SaveToFile


default   (2005-01-29 16:34:00) [12]

а ты посмотри на размер формируемого файла
наверно в файл пишется по 4 байта на каждый стринглист
так делать нельзя


Наверх

Титульная страница Поиск, карта сайта Написать письмо