Понадобилось записать структуру в нетипизированный файл, до этого момента ни когда не пользовался этим и столкнулся с тем, что информации по этому поводу много и ни о чем. Примеров много только толку от них мало.
По ходу самообучения буду добавлять описание функций для достижения на меченой цели
f:file;//нетипизированный файл
AssignFile(f, 'c:\1111.txt');//открытие файла
Reset(f);//как это ни странно это открытие файла так же можно употреблять для добавления
записей (Append(f))
Rewrite(f);//Создает новый файл и открывает его.
Seek(f, Filesize(f)); // перемещаемся в конец файла
Write(f,ppp);//записать содержимое в файл
CloseFile(f);//закрыть файл
нашел в учебнике по Delphi 7 для начинающих пример программки немного пришло поправить, а то просто не хотел компилиться проект
для работы программы необходимы
2 ComboBox
3 Label
1 RadioGroup
1 TEdit
1 Button
листинг программки для записи структуры в файл
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
// тип медали
TKind = (GOLD, SILVER, BRONZE);
// запись файла
TMedal=record
country: string[20]; // страна
sport: string[20]; // вид спорта
person: string[40]; // спортсмен
kind: TKind; // медаль
end;
type
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
RadioGroup1: TRadioGroup;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f: file of TMedal; // файл записей — база данных
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
var
resp : word; // ответ пользователя
begin
AssignFile(f, 'c:\1111.txt');
Reset(f); // открыть файл
Seek(f, Filesize(f)); // указатель записи в конец файла
if IOResult = 0 then
Button1.enabled:=TRUE // теперь кнопка Добавить доступна
else
begin
resp:=MessageDlg('Файл базы данных не найден. Создать новую БД?', mtInformation,[mbYes,mbNo],0);
if resp = mrYes then
begin
{$I-}
Rewrite(f);
{$i+}
if IOResult = 0 then
Button1.enabled:=TRUE
else
ShowMessage('Ошибка создания файла БД.');
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
medal: TMedal;
begin
with medal do
begin
country := ComboBox1.Text;
sport := ComboBox2.Text;
person := Edit1.Text;
case RadioGroup1.ItemIndex of
0: kind := GOLD;
1: kind := SILVER;
2: kind := BRONZE;
end;
end;
Write(f,medal); // записать содержимое полей записи в файл
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(f); // закрыть файл
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Россия');
ComboBox1.Items.Add('Австрия');
ComboBox1.Items.Add('Германия');
ComboBox1.Items.Add('Франция');
end;
end.
А почему в нетипизированный файл, если это пример для записи в типизированный ?
ОтветитьУдалитьдействительно, вы правы! что то видимо на меня нашло в тот момент))
ОтветитьУдалить