Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

ListView   Найти похожие ветки 

 
F@T@L_Err0r   (2007-09-25 14:26) [0]

попогите плиз.Я сохраняю файл в определенной мной структуре(Record),но при загрузке файла в ListView удаляется последняя строчка и так до конца.Вот код открытия файла:
begin
try
l := TListItem.Create(ListView1.Items);
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
reset(r);
while not eof(r) do
begin
 l :=ListView1.items.add;
 read(r,rr);
 l.Caption :=rr.num;
 l.SubItems.Add(rr.name);
 l.SubItems.Add(rr.tel1);
 l.SubItems.Add(rr.tel2);
 l.SubItems.Add(rr.email);
 l.SubItems.Add(rr.comment);
end;
closefile(r);
finally
l.Free;
end;


 
Palladin ©   (2007-09-25 14:27) [1]

код записи показывай


 
F@T@L_Err0r   (2007-09-25 14:33) [2]

записывает он правильно, я проверял открывал файл через блокнот...
Вот код записи:
begin
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
rewrite(r);
for q:=0 to ListView1.Items.Count-1 do
begin
 rr.num := ListView1.Items[q].Caption;
 rr.name := ListView1.Items[q].SubItems[0];
 rr.tel1 := ListView1.Items[q].SubItems[1];
 rr.tel2 := ListView1.Items[q].SubItems[2];
 rr.email := ListView1.Items[q].SubItems[3];
 rr.comment := ListView1.Items[q].SubItems[4];
 write(r,rr);
end;
   closefile(r);


 
Palladin ©   (2007-09-25 14:38) [3]

так ты же сам в конце и удаляешь последний созданный итем

try
l := TListItem.Create(ListView1.Items);
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
reset(r);
while not eof(r) do
begin
l :=ListView1.items.add;
read(r,rr);
l.Caption :=rr.num;
l.SubItems.Add(rr.name);
l.SubItems.Add(rr.tel1);
l.SubItems.Add(rr.tel2);
l.SubItems.Add(rr.email);
l.SubItems.Add(rr.comment);
end;
closefile(r);
finally
l.Free;
end;


 
F@T@L_Err0r   (2007-09-25 14:42) [4]

А как же мне тогда освободить l ?


 
Palladin ©   (2007-09-25 14:45) [5]

а зачем тебе вообще эта строчка?
l := TListItem.Create(ListView1.Items);

что она делает то?


 
Германн ©   (2007-09-25 14:45) [6]


> А как же мне тогда освободить l ?

А не надо ни создавать, ни освобождать. Достаточно l :=ListView1.items.add;


 
F@T@L_Err0r   (2007-09-25 14:46) [7]

Понятоно спасиба!!!


 
{RASkov} ©   (2007-09-25 16:19) [8]

> Достаточно l :=ListView1.items.add;

>F@T@L_Err0r

А еще лучше нечто вот так:
while not eof(r) do
with ListView1.Items.Add do begin
 read(r,rr);
 Caption :=rr.num;
 SubItems.Add(rr.name);
 SubItems.Add(rr.tel1);
 SubItems.Add(rr.tel2);
 SubItems.Add(rr.email);
 SubItems.Add(rr.comment);
end;

И не нужна вообще локальная переменная var l: TListItem;


 
Сергей М. ©   (2007-09-25 16:23) [9]

http://delphimaster.net/view/2-1190376310/

Сказка про белого бычка)



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-1186651845
tio
2007-08-09 13:30
2007.10.21
Плавающие панели как в Photoshop


15-1190414620
Kostafey
2007-09-22 02:43
2007.10.21
А форум-то наш клиентами самый богатый.


2-1190282755
Tifon
2007-09-20 14:05
2007.10.21
Отображение немецких умляутов


15-1190281655
Flikik
2007-09-20 13:47
2007.10.21
Delphi


2-1191147505
Nikfel
2007-09-30 14:18
2007.10.21
Как получить список дисков с обозначениями.