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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 11:41   #1
Anton5
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 18
По умолчанию Работа с файлами!

Помогите доделать программу в Delphi!
Вот задание!
Создать файл, содержащий информацию о спортсменах. Структура файла: Фамилия, имя, спортклуб, год вступления. Выдать список спортсменов, состоящих в заданном спортивном клубе, рассортированный в порядке увеличения года вступления.

А вот исходный текст программы:
Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
StringGrid1: TStringGrid;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N12: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N12Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TZ=Record
Surname:string[15];
Name:string[15];
Club:string[10];
Year:word;
end;
TF=File of TZ;
var
Form1: TForm1;
Z:TZ;
F,F1:TF;

implementation

{$R *.dfm}
//создать
procedure TForm1.N2Click(Sender: TObject);
begin
SaveDialog1.Execute;
If (SaveDialog1.FileName<>' ')then
begin
AssignFile(F,SaveDialog1.FileName);
Rewrite(F);
CloseFile(F);
end;
end;

//открыть
procedure TForm1.N3Click(Sender: TObject);
begin
OpenDialog1.Execute;
if (OpenDialog1.FileName<>'')then
begin
AssignFile(f,OpenDialog1.FileName);
Reset(F);
CloseFile(F);
end;
end;
//добавить
procedure TForm1.N6Click(Sender: TObject);
begin
If(Edit1.Text<>'')And(Edit2.Text<>'')And(Edit3.Text<>'')And(Edit4.Text<>'') then
begin
Reset(F);
Seek(F,FileSize(F));
Z.Surname:=Edit1.Text;
Z.Name:=Edit2.Text;
Z.Club:=Edit3.Text;
Z.Year:=StrtoInt(Edit4.Text);
Write(F,Z);
end
else showMessage('Заполните все поля');
N4Click(nil);
end;
//заголовок таблицы
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Фамилия';
StringGrid1.Cells[1,0]:='Имя';
StringGrid1.Cells[2,0]:='Спортивный клуб';
StringGrid1.Cells[3,0]:='Год вступления';
end;
//просмотр
procedure TForm1.N4Click(Sender: TObject);
var
i:integer;
z:tz;
begin
Reset(f);
StringGrid1.RowCount:=1;
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,z);
StringGrid1.Cells[0,i+1]:=Z.Surname;
StringGrid1.Cells[1,i+1]:=z.Name;
StringGrid1.Cells[2,i+1]:=Z.Club;
StringGrid1.Cells[3,i+1]:=inttostr(Z.Year);
end;
StringGrid1.RowCount:=filesize(f)+1;
if (StringGrid1.RowCount>1)then StringGrid1.FixedRows:=1;
end;
//удалить
procedure TForm1.N7Click(Sender: TObject);
begin
Edit1.Text:=' ';
Edit2.Text:=' ';
Edit3.Text:=' ';
Edit4.Text:=' ';

end;
//выход
procedure TForm1.N11Click(Sender: TObject);
begin
Application.Terminate;
end;
//сортировка
procedure TForm1.N10Click(Sender: TObject);
var
z_v:tz;
i,j:integer;
begin
reset(f);
for i:=filesize(f)-1 downto 1 do
for j:=0 to i-1 do
begin
seek(f,j);
read(f,z,z_v);
if z.Year>z_v.Year then
begin
seek(f,j);
write(f,z_v,z);
end;
end;
N4Click(nil);
end;
//удалить
procedure TForm1.N12Click(Sender: TObject);
begin
seek(f,FileSize(F)-1);
read(F,z);
seek(f,StringGrid1.Row-1);
write(f,z);
seek(f,FileSize(F)-1);
Truncate(f);
N4Click(nil);
end;

end.
Как мне Выдать список спортсменов, состоящих в заданном спортивном клубе, помогите, пожалуйста, а то не получается что-то...

Последний раз редактировалось Stilet; 19.04.2010 в 12:44.
Anton5 вне форума Ответить с цитированием
Старый 19.04.2010, 12:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что доделывать то?
Да и потом - думаешь кто-то будет пересобирать форму проекта?
Там у тебя столько накидано.
Так что если хочешь помощи - проект в архив, потом сюда архив и подробно пиши чего нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2010, 13:40   #3
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
Как мне Выдать список спортсменов, состоящих в заданном спортивном клубе, помогите, пожалуйста, а то не получается что-то...
Попробуй свою процедуру выполнить следующим образом:
Код:
rocedure TForm1.N4Click(Sender: TObject);
var
i:integer;
z:tz;
begin
Reset(f);
StringGrid1.RowCount:=filesize(f)+1;
for i:=0 to filesize(f)-1 do
begin
read(f,z);
StringGrid1.Cells[0,i+1]:=Z.Surname;
StringGrid1.Cells[1,i+1]:=z.Name;
StringGrid1.Cells[2,i+1]:=Z.Club;
StringGrid1.Cells[3,i+1]:=inttostr(Z.Year);
end;
if (StringGrid1.RowCount>1)then StringGrid1.FixedRows:=1;
end;
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами на C# Dimarik C# (си шарп) 7 30.11.2010 22:25
Работа с файлами Гелена Помощь студентам 1 18.03.2010 23:31
Работа с файлами snake-as Общие вопросы Delphi 1 19.10.2008 13:38
Работа с файлами Скрунж Паскаль, Turbo Pascal, PascalABC.NET 1 18.10.2008 15:19
Работа с файлами Smith777 Помощь студентам 4 23.02.2008 05:08