Автор Тема: Файлы(делфи)  (Прочитано 2563 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Файлы(делфи)
« : 19 Мая 2012, 17:35:49 »
1 кнопка прочитать список(те вывести в столбик в listbox все фамилии из файла по алфавиту).
2 кнопка добавить запись в файл вводим на форме в edit1(фамилия),edit2(имя),edit3(дата рождения),memo1(адрес) информацию.
3 кнопка удалить запись.
Также при щелчке на фамилию из списка в listbox подробная информация об этом человеке должна выйти в edit1(фамилия),edit2(имя),edit3(дата рождения),memo1(адрес)


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    Button3: TButton;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 type
  TPers = record
    Fam, Name, Adr,Bir : String;

  end;
var
  Pers: Array of TPers;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var F: TextFile;
    S: String; L:tstringlist;
    n, m: Integer;
  j,i: Integer;
begin     ListBox1.Clear;
  n := 0;
  m := 0;
  AssignFile(F, 'addreses.txt');
  Reset(F);
  while not Eof(F) do
    begin
      SetLength(Pers, n+1);
      Readln(F, S);
      case n mod 5 of
        0: Pers[m].Fam := Copy(S, 1, Length(S));
        1: Pers[m].Name := Copy(S, 1, Length(S));
        2: Pers[m].Bir:= Copy(S, 1, Length(S));
       3: Pers[m].Adr := Copy(S, 1, Length(S));
      end;
      n := n + 1;
      m := n div 5;
    end;
  CloseFile(F);
  for i := 0 to Length(Pers) - 1 do
    ListBox1.Items.Add(Pers.Fam);
end;
procedure TForm1.Button2Click(Sender: TObject);
 var
   f: Textfile;
 begin
 AssignFile(f, 'addreses.txt');
  Append(f);
 Writeln(f, Edit1.Text);
    Writeln(f, Edit2.Text);
  Writeln(f, Edit3.Text);
    Writeln(f,Memo1.Text);
  Closefile(f);
 end;

procedure TForm1.Button3Click(Sender: TObject);
 var st:TStringList;i: integer;
     f: textfile;
    begin

st:=   TStringList.Create;
st.LoadFromFile('addreses.txt');

for i := 0 to st.Count - 1 do
   if st=Edit1.Text then
 begin
   while st.Count<5 do

  st.Delete(i);
 end;
st.SaveToFile('addreses.txt'); st.Free;

end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Memo1.Clear;
  Edit1.Text:=Pers[ListBox1.ItemIndex].Fam;
  Edit2.Text:=Pers[ListBox1.ItemIndex].Name;
 Edit3.Text:=Pers[ListBox1.ItemIndex].Bir;
  Memo1.Lines.Add(Pers[ListBox1.ItemIndex].Adr);
end;

end.

Не удаляет,добавляет записи нормально, если только в файле есть хотябы 1 запись

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Файлы(делфи)
« Ответ #1 : 19 Мая 2012, 19:05:51 »
и 2 задание.Имеются 2 текстовых файла 1.txt и 2.txt.Написать процедуру добавляющую в начало файла 1 все строки из файла 2

procedure TForm1.Button1Click(Sender: TObject);
 var st1,st2:TStringList;
begin
st1:=   TStringList.Create;
st1.LoadFromFile('1.txt');
st2:=   TStringList.Create;
st2.LoadFromFile('2.txt');
st2.Add(st1);   ОШИБКА!!!
st2.SaveToFile('1.txt');
st1.Free;
st2.Free;

end;

Ошибка из-за того что что тип не подходит,низнаю что делать??? :(

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Файлы(делфи)
« Ответ #2 : 21 Мая 2012, 10:32:03 »
Про удаление...
Цитировать
for i := 0 to st.Count - 1 do
   if st=Edit1.Text then
 begin
   while st.Count<5 do

  st.Delete(i);
 end;
...
st [ i  ] =Edit1.Text
...
Если удаляем 1 запись(4 строки), то вместо while сделаем for:
for j:=0 to 3 st.delete(i);

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Файлы(делфи)
« Ответ #3 : 21 Мая 2012, 10:39:38 »
Цитировать
st2.Add(st1);   ОШИБКА!!!
For i:=1 to st2.count-1 do
st1.insert(0,st2;);

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Файлы(делфи)
« Ответ #4 : 21 Мая 2012, 23:48:36 »
2 задача
procedure TForm1.Button1Click(Sender: TObject);
 var st1,st2:TStringList;
 i:integer;
begin
st1:=   TStringList.Create;
st1.LoadFromFile('1.txt');
st2:=   TStringList.Create;
st2.LoadFromFile('2.txt');
For i:=1 to st2.count-1 do
begin
st1.insert(0,st2);
end;
st2.SaveToFile('1.txt');
st1.Free;
st2.Free;

Всё равно не получается ,он добавляет содержимое 2 файла в 1,но при этом содержимое 1 файла удаляет :(

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Файлы(делфи)
« Ответ #5 : 21 Мая 2012, 23:57:49 »
1 задача тоже не получается ... удаление :( :( :( :(
procedure TForm1.Button3Click(Sender: TObject);
 var st:TStringList;i,j: integer;
     f: textfile;
    begin
st:=   TStringList.Create;
st.LoadFromFile('addreses.txt');

for i := 0 to st.Count - 1 do
   if st=Edit1.Text then
 begin
   for j:=i to (i+3) do
   st.delete(j);
 end;
st.SaveToFile('addreses.txt');
st.Free;

end;

 

Программа в делфи. Вычислить определенный интеграл методом трапеции

Автор Мозг

Ответов: 0
Просмотров: 6316
Последний ответ 15 Сентября 2010, 21:06:25
от Мозг
Сортировка двумерного массива по возрастанию, делфи

Автор Asira

Ответов: 1
Просмотров: 6096
Последний ответ 30 Апреля 2010, 01:39:45
от InfStudent
Делфи(opendialog,listbox)

Автор Астасья

Ответов: 6
Просмотров: 2646
Последний ответ 11 Мая 2012, 12:23:35
от ki
ДЕЛФИ, ВЕКТОРА

Автор Эля_informatichka

Ответов: 1
Просмотров: 3093
Последний ответ 06 Октября 2010, 21:40:20
от InfStudent
Делфи (edit)

Автор Астасья

Ответов: 0
Просмотров: 1778
Последний ответ 08 Мая 2012, 23:16:01
от Астасья