Доброго времени суток.
Проблема в записи информации из ListView в типизированный файл. После нажатия на кнопку, строка должна записаться в типизированный файл и удалиться. Но при повторном заполнении ListView, появляется куча нулей и последняя строка. в чем ошибка, подскажите, пожалуйста.
Код:
unit FormPassangers;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls ,Passangers;
type
TForm2 = class(TForm)
lv1: TListView;
btn1: TButton;
btn2: TButton;
edt1: TEdit;
procedure FormShow(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure lv1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
liClass= TListView;
FulName=string;
IDTrain= Integer;
var
Form2: TForm2;
ExistingPassangers: TPassangers;
li:TListItem;
implementation
uses FormPassangersAdd, Unit1;
{$R *.dfm}
//-----------------------------Заполнение ListView при открытии формы-----------
procedure TForm2.FormShow(Sender: TObject);
var
// li:liClass;
i: Integer;
PassangersList:TList;
r1:Tpassangers;
li1:TListItem;
begin
lv1.Items.Clear;
AssignFile(PassangerFile,'Passangers.dat');
if FileExists('Passangers.dat') then reset(PassangerFile)
else Rewrite(PassangerFile);
while not Eof(PassangerFile) do
begin
read(PassangerFile,r);
with r do
with lv1.Items.Add do
begin
Caption:=r.SName+' '+r.Name;
SubItems.Add(IntToStr(r.Age));
SubItems.Add(IntToStr(r.IDTrain));
end;
end;
edt1.Text:= r.Name;
CloseFile(PassangerFile);
with lv1.Items.Add do
// li1.Caption:='fgdfgdfgdf';
end;
procedure TForm2.btn1Click(Sender: TObject);
begin
form3.ShowModal;
end;
//-------------------------Удаление выбранной строки----------------------------
procedure TForm2.btn2Click(Sender: TObject);
var
i,k:Integer;
PF:file of recPassangers;
r1:recPassangers;
li: TListItems;
begin
if MessageDlg('Delete?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
AssignFile(PassangerFile,'Passangers.dat');
AssignFile(PF,'Passangers1.dat');
reset(PassangerFile);
Rewrite(PF);
end;
seek(PassangerFile,0);
seek(PF,0);
try
while not Eof(PassangerFile) do
begin
read(PassangerFile,r);
seek(PF,SizeOf(PF));
if (r.Name+' '+r.SName)<>lv1.ItemFocused.Caption then
write(PF,r);
end;
except
on EInOutError do showmessage('Пассажир уже удалён');
end;
while not eof(PF) do
read(Pf,r1); edt1.Text:=r1.Name;
CloseFile(PassangerFile);
CloseFile(PF);
if FileExists('Passangers.dat') then Erase(PassangerFile);
Rename(PF, 'Passangers.dat');
Rename(PF,'Passangers.dat');}
lv1.ItemFocused.Delete;
btn2.Enabled:=False;
end;
//------------------------Выбрана ли строка?------------------------------------
procedure TForm2.lv1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
btn2.Enabled:=True;
end;
end.