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

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

ListView [D7, XP]


F@T@L_Err0r ©   (2007-09-25 14:26:00) 

попогите плиз.Я сохраняю файл в определенной мной структуре(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;


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

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1190376310&n=18

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


{RASkov}   (2007-09-25 16:19:00) [2]

> Достаточно 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;


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

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


Palladin   (2007-09-25 14:45:00) [4]

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

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


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


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

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


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

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


Palladin   (2007-09-25 14:38:00) [7]

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

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:33:00) [8]

записывает он правильно, я проверял открывал файл через блокнот...
Вот код записи:
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:27:00) [9]

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


Наверх

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