![]() |
|
|
#1
|
|||
|
|||
|
вводится несколько строк.
как мне сравнить эти строки ,и в случае совпадения удалить одну из них? |
|
#2
|
|||
|
|||
|
и строки берутся из списка.
|
|
#3
|
||||
|
||||
|
Ты бы объяснил по-подробнее откуда берутся строки, как они хранятся, что значит "удалить"? Тупо очистить переменную или удалить из списка и сдвинуть весь список наверх?
|
|
#4
|
|||
|
|||
|
По указанию преподавателя выберите вариант задачи. В программе преду-смотреть сохранение вводимых данных в файле и возможность чтения из ра-нее сохраненного файла. Результаты выводить в окно просмотра и в текстовой файл.
В магазине формируется список лиц, записавшихся на покупку товара. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. !!!!Удалить из списка все повторные записи, проверяя Ф.И.О. и домашний адрес.!!!! Код:
Type Tspisok = record
naimen:string[50];
nomer:integer;
adres:string[100];
data:TdateTime;
end;
Var Fz:file of Tspisok;
Ft:TextFile;
spisok:array[1..100] of Tspisok;
nzap:integer;
FileNameZ, FileNameT:string;
mn:integer;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear;
Edit5.Clear; Edit6.Clear;
Memo1.Clear;
Button1.Hide;
nzap:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.Title :='Создать новый файл';
if OpenDialog1.Execute then
begin
FileNameZ:= OpenDialog1.FileName;
AssignFile(Fz, FileNameZ);
Rewrite(Fz);
end;
Button1.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
begin
nzap:=nzap+1;
with spisok[nzap] do begin
naimen:=Edit1.Text;
nomer:=strtoint(Edit2.Text);
adres:=Edit3.Text;
data:=encodeDate(strtoint(Edit4.text),
strtoint(Edit5.Text),strtoint(Edit6.Text));
Memo1.lines.add(inttostr(nomer)+' '+naimen+' '
+adres+' '+datetostr(data));
end;
Write(Fz,spisok[nzap]);
Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear;
Edit5.Clear; Edit6.Clear;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
FileNameZ:= OpenDialog1.FileName;
AssignFile(Fz, FileNameZ);
Reset(Fz);
end;
nzap:=0;
while not eof(fz) do begin
nzap:=nzap+1;
Read(fz,spisok[nzap]);
with spisok[nzap] do
Memo1.Lines.Add(IntToStr(nomer)+' '+naimen+' '
+adres+' '+DateToStr(data));
end;
Button1.Show;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i:word;
begin
if SaveDialog1.Execute then
begin
FileNameT:= SaveDialog1.FileName;
AssignFile(Ft, FileNameT);
Rewrite(Ft);
end;
for i:=1 to nzap do
with spisok[i] do Writeln(Ft,nomer,' ',naimen,' ',adres,' ',datetostr(data));
CloseFile(Ft);
end;
end. |
|
#5
|
|||
|
|||
|
для файла с последовательным доступом:
можно методом носорога: 1.создать новый список, 2.в него перенести все уникальные записи, 3.старый список - в бэкап 4.заменить старый список новым для списка memo: юзать Memo.Lines.Delete(i); если вопрос в нахождении уникального элемента: 1) создаем флаг: уникальный := тру. создаем буффер строку. 2) в буффер заносим очередную строку. 3) пока не конец файла: 4) проверяем на равность строку с каждой в файле. не забудь предусмотреть вариант сравнения с самой собой. 5)нашли повтор - вызываем функцию удаления строки из файла. 6)конец цикла p.s. много букв, т.к. не хватает данных для точного ответа |