Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 19:21   #1
alien^ka
Новичок
Джуниор
 
Регистрация: 26.05.2009
Сообщений: 1
По умолчанию Запись в типизированный файл из ListView

Доброго времени суток.
Проблема в записи информации из 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.
alien^ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типизированный файл Юляшко Паскаль, Turbo Pascal, PascalABC.NET 5 02.05.2010 19:12
Типизированный файл Юляшко Паскаль, Turbo Pascal, PascalABC.NET 1 28.04.2010 16:15
Типизированный файл aleksandrdss Помощь студентам 0 08.04.2009 05:01
Типизированный файл Лубышев Помощь студентам 2 11.10.2008 11:08