Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.10.2010, 20:26
dubfire dubfire вне форума
Прохожий
 
Регистрация: 10.10.2010
Сообщения: 14
Репутация: 10
Печаль строки

вводится несколько строк.
как мне сравнить эти строки ,и в случае совпадения удалить одну из них?
Ответить с цитированием
  #2  
Старый 17.10.2010, 20:27
dubfire dubfire вне форума
Прохожий
 
Регистрация: 10.10.2010
Сообщения: 14
Репутация: 10
По умолчанию

и строки берутся из списка.
Ответить с цитированием
  #3  
Старый 17.10.2010, 20:45
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Ты бы объяснил по-подробнее откуда берутся строки, как они хранятся, что значит "удалить"? Тупо очистить переменную или удалить из списка и сдвинуть весь список наверх?
Ответить с цитированием
  #4  
Старый 17.10.2010, 21:04
dubfire dubfire вне форума
Прохожий
 
Регистрация: 10.10.2010
Сообщения: 14
Репутация: 10
По умолчанию

По указанию преподавателя выберите вариант задачи. В программе преду-смотреть сохранение вводимых данных в файле и возможность чтения из ра-нее сохраненного файла. Результаты выводить в окно просмотра и в текстовой файл.
В магазине формируется список лиц, записавшихся на покупку товара. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. !!!!Удалить из списка все повторные записи, проверяя Ф.И.О. и домашний адрес.!!!!

Код:
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  
Старый 18.10.2010, 13:32
BlackDizel BlackDizel вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 6
Репутация: 10
По умолчанию

для файла с последовательным доступом:
можно методом носорога:
1.создать новый список,
2.в него перенести все уникальные записи,
3.старый список - в бэкап
4.заменить старый список новым

для списка memo:
юзать Memo.Lines.Delete(i);


если вопрос в нахождении уникального элемента:
1) создаем флаг: уникальный := тру. создаем буффер строку.
2) в буффер заносим очередную строку.
3) пока не конец файла:
4) проверяем на равность строку с каждой в файле. не забудь предусмотреть вариант сравнения с самой собой.
5)нашли повтор - вызываем функцию удаления строки из файла.
6)конец цикла


p.s. много букв, т.к. не хватает данных для точного ответа
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025