0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
1

Открывает пустой файл

16.05.2012, 16:20. Показов 1726. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста поправить.
Есть типизированный файл, в него пишем всякое (ниже код). При запуске всё работает, сохраняет и загружает из файла, но если прогу закрыть и пытаться потом открыть файл, то там пусто. Почему?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
type
  TFall = class
    fnum: string;
    fdate: tdate;
    fuser: string;
    fsum: integer;
    constructor Create(num:string; date:tdate; user:string; sum:integer);
 end;
var
  Form1: TForm1;
  aas: Tfall;
  bbs: TFall;
  f: file of TFall;
  fr: file of TFall;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 if SaveDialog1.Execute then
  begin
   AssignFile(f,SaveDialog1.FileName);
   Rewrite(f);
   Write(f,aas);
   closefile(f);
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
   AssignFile(fr,OpenDialog1.FileName);
   Reset(fr);
   while not Eof(fr) do
    begin
   Read(fr,bbs);
   Memo1.Lines.Add('User is '+bbs.fuser);
   end;
   closefile(fr);
  end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2012, 16:20
Ответы с готовыми решениями:

Переписать все положительные числа в пустой файл f, все отрицательные в пустой файл h
Вот задача:type rad = file of integer; Описать процедуру p(g,f,h) от трех файлов типа rаd, которая...

Word 2003 пролистивает документ и открывает пустой лист
Привет всем :) Только-что зарегался на вашем форуме так как очень нужно решить возникшую проблему...

Вирус! Открывает рекламные ссылки, пустой рабочий стол (без меню пуска и ярлыков) Windows XP
Вирус! Открывает рекламные ссылки, пустой рабочий стол (без меню пуска и ярлыков) Windows XP

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

18
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
17.05.2012, 01:11 2
тут что-то похоже на работу с текстовым файлом, а не типизированным, хотя файл как типизированный объявлен... Почитай про типизированный файл сперва, как с ним работать

и что значит
Цитата Сообщение от Павел А. Посмотреть сообщение
но если прогу закрыть и пытаться потом открыть файл, то там пусто. Почему?
? Всмысле открыть как текстовый?
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
17.05.2012, 01:53 3
Цитата Сообщение от Arcor Посмотреть сообщение
Всмысле открыть как текстовый?
Какая разница, как открыть? Он же класс пишет, а не запись. И будет записано в файле 4 байта - указатель на экземпляр класса, который был по этому адресу при работе программы

Что будет по записанному адресу при следующем запуске - кто его знает...
1
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
17.05.2012, 01:56 4
я имел ввиду вопрос как открыть !
программно -> связать с программой
или двойной клик мышки и открыть "как текстовый"

что имеется ввиду у ТС под этим вопросом ???
1
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 04:28 5
Я, вообще, вижу, что чтение происходит в переменную bbs, а запись в файл из переменной aas. Может, правда aas где-то в другом месте заполняется?
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
17.05.2012, 09:33  [ТС] 6
Впринципе я переменную bbs ввёл для эксперемента, а так всё время работал только с aas. Было тоже самое.

Добавлено через 7 минут
Цитата Сообщение от UI Посмотреть сообщение
Какая разница, как открыть? Он же класс пишет, а не запись. И будет записано в файле 4 байта - указатель на экземпляр класса, который был по этому адресу при работе программы

Что будет по записанному адресу при следующем запуске - кто его знает...
Я это смуто конечно понимаю, что это указатель, только вот как это поправить? Уже три дня бьюсь, аж злость берёт.

Цитата Сообщение от Arcor;
я имел ввиду вопрос как открыть !
программно -> связать с программой
или двойной клик мышки и открыть "как текстовый"

что имеется ввиду у ТС под этим вопросом ???
Открываю в программе:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
   AssignFile(fr,OpenDialog1.FileName);
   Reset(fr);
   while not Eof(fr) do
    begin
   Read(fr,bbs);
   Memo1.Lines.Add('User is '+bbs.fuser);
   end;
   closefile(fr);
  end;
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 09:41 7
А чего эту TFall нельзя было объявить просто как Record?
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
17.05.2012, 09:59  [ТС] 8
TFall является родителем ещё для пару классов, я их тут не указал
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 10:25 9
Я в таком варианте не работал с типизированными файлами. Тебе нужно сохранить значения этих переменных. Озвучь задачу. Может это можно решить по другому.
Ну, попробуй поставить перед переменной знак @ при сохранении и восстановлении. А я сейчас гляну, как сохранял свойства компонент.

Не по теме:

И, если не в курсе. Обновляй, периодически, окно, если не выходишь из темы. Иначе не увидишь, когда выложат ответ.



Добавлено через 17 минут
Если наследовать этот класс от TComponent, то можно использовать функции ReadComponentResFile и WriteComponentResFile. Если нужно, напишу подробнее. Правда он сохраняет не в текстовом виде. Нечитабельно. Но я с этим работал и могу рассказать.
2
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
17.05.2012, 11:05  [ТС] 10
Цитата Сообщение от Одиночка Посмотреть сообщение
Я в таком варианте не работал с типизированными файлами. Тебе нужно сохранить значения этих переменных. Озвучь задачу. Может это можно решить по другому.
Ну, попробуй поставить перед переменной знак @ при сохранении и восстановлении. А я сейчас гляну, как сохранял свойства компонент.

Добавлено через 17 минут
Если наследовать этот класс от TComponent, то можно использовать функции ReadComponentResFile и WriteComponentResFile. Если нужно, напишу подробнее. Правда он сохраняет не в текстовом виде. Нечитабельно. Но я с этим работал и могу рассказать.
Задача:
Есть два документа, платёжка и накладная (поля уних почти одинаковые, у платёжки добавленно одно и убоанно три). Выбираем, что заполняем потом заполняем поля и сразу выводим в Memo. Затем сохраняем текущий документ. При загрузке файла в Memo опять выводим данные.

Вроде всё просто, и заполняет и выводит и т.д. Но при закрытие прогии и последующем открытии ничего не выводит. Я так понимаю, что при работе проги создаётся как бы ссылка на объкет (поэтому до закрытия проги всё пишется и читается в/из файла) и в файле тоько ссылка сохраняется, а приповторной загрузке в области памяти куда ссылка обращается уже фиг знает что. Вот и назрел вопрос, а как бы мне непосредственно данные в файл пихнуть?
Если надо могу всю прогу кинуть.
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 11:15 11
Цитата Сообщение от Павел А. Посмотреть сообщение
Задача:
Есть два документа, платёжка и накладная (поля уних почти одинаковые, у платёжки добавленно одно и убоанно три). Выбираем, что заполняем потом заполняем поля и сразу выводим в Memo. Затем сохраняем текущий документ. При загрузке файла в Memo опять выводим данные.
Как-то не очень понятно. Прогу могу только завтра посмотреть.
Ты хочешь сказать, что хранишь данные в этой переменной, описанного тобой класса. Но там только на одну запись. Если только эти 4 параметра нужно сохранить, так это преобразовать и кинуть в текстовый файл - раз плюнуть. Чего-то я не понимаю.
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
17.05.2012, 11:24  [ТС] 12
Вот вся прога:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TFall = class
    fnum: string;
    fdate: tdate;
    fuser: string;
    fsum: integer;
    constructor Create(num:string; date:tdate; user:string; sum:integer);
 end;
 
type
  TNaklad = class(TFall)
    fmon: string;
    fcur: string;
    ftov: string;
    fcount: integer;
    constructor Create(num:string; date:tdate; user:string; sum:integer; mon:string; cur:string; tov:string; count:integer);
    end;
 
type
  TPay = class(TFall)
    fwrk: string;
    constructor Create(num:string; date:tdate; user:string; sum:integer; wrk:string);
  end;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  aa: array[1..10] of Tfall;
  bb: array[1..10] of Tfall;
  c: integer=0;
  aas: Tfall;
  bbs: TFall;
  f: file of TFall;
  fr: file of TFall;
implementation
 
{$R *.dfm}
constructor TFall.Create(num:string; date:tdate; user:string; sum:integer);
begin
inherited Create;
fnum:=num;
fdate:=date;
fuser:=user;
fsum:=sum;
end;
 
constructor TNaklad.Create(num:string; date:tdate; user:string; sum:integer; mon:string; cur:string; tov:string; count:integer);
begin
inherited Create(num, date, user, sum);
fmon:=mon;
fcur:=cur;
ftov:=tov;
fcount:=count;
end;
 
constructor TPay.Create(num:string; date:tdate; user:string; sum:integer; wrk:string);
begin
inherited Create(num, date, user, sum);
fwrk:=wrk;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 if CheckBox1.Checked then
  begin
   aas:=TNaklad.Create(Edit1.Text, StrToDate(Edit2.Text), Edit3.Text, StrToInt(Edit4.Text), Edit5.Text, Edit6.Text, Edit7.Text, StrToInt(Edit8.Text));
   Memo1.Lines.Add('Накладная Номер '+aas.fnum+' от '+DateToStr(aas.fdate));
 
 //   aa[c]:=TNaklad.Create(Edit1.Text, StrToDate(Edit2.Text), Edit3.Text, StrToInt(Edit4.Text), Edit5.Text, Edit6.Text, Edit7.Text, StrToInt(Edit8.Text));
//   Memo1.Lines.Add('Накладная Номер '+aa[c].fnum+' от '+DateToStr(aa[c].fdate));
  end
   else
    begin
    aas:=TPay.Create(Edit1.Text, StrToDate(Edit2.Text), Edit3.Text, StrToInt(Edit4.Text), Edit5.Text);
    Memo1.Lines.Add('Платёжка Номер '+aas.fnum+' от '+DateToStr(aas.fdate));
    end;
   c:=c+1;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 if SaveDialog1.Execute then
  begin
   AssignFile(f,SaveDialog1.FileName);
   Rewrite(f);
   Write(f,aas);
   closefile(f);
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
   AssignFile(fr,OpenDialog1.FileName);
   Reset(fr);
   while not Eof(fr) do
    begin
   Read(fr,bbs);
   Memo1.Lines.Add('User is '+bbs.fuser);
   end;
   closefile(fr);
  end;
end;
 
end.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
17.05.2012, 11:54 13
Цитата Сообщение от Одиночка Посмотреть сообщение
Если нужно, напишу подробнее.
Напиши
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 12:25 14
Лучший ответ Сообщение было отмечено как решение

Решение

Мне нужно было сохранять параметры DbGrid-а, которые в работе изменял пользователь.
Вот модуль компоненнта:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
UNIT SetUpCollect;
{##########################################################################}
{#                                                                        #}
{#  МОДУЛЬ НАКОПЛЕНИЯ НАСТРОЕК ПРОГРАММЫ ДЛЯ СОХРАНЕНИЯ И ВОССТАНОВЛЕНИЯ  #}
{#                                                                        #}
{##########################################################################}
 
                               INTERFACE
 
{--------------------------------------------------------------------------}
USES
  Windows, Forms, Classes, Graphics, Buttons, ImgList, ExtCtrls, SysUtils,
  DBGrids;
 
TYPE
  TComponentForSetUp = CLASS(TComponent)
  PRIVATE
    FDBGridFont3 : TFont;
 FDBGridColumns3 : TDBGridColumns;
    FDBGridFont5 : TFont;
 FDBGridColumns5 : TDBGridColumns;
    FDBGridFont1 : TFont;
 FDBGridColumns1 : TDBGridColumns;
  PUBLIC
    CONSTRUCTOR Create(AOwner:TComponent); OVERRIDE;
    DESTRUCTOR Destroy; OVERRIDE;
  PUBLISHED
    {Данные DBGrid справочника рецептов}
    PROPERTY DBGridFont3 : TFont
      READ FDBGridFont3 WRITE FDBGridFont3;
    PROPERTY DBGridColumns3 : TDBGridColumns
      READ FDBGridColumns3 WRITE FDBGridColumns3;
    {Данные DBGrid вкладки "Отчёт"}
    PROPERTY DBGridFont5 : TFont
      READ FDBGridFont5 WRITE FDBGridFont5;
    PROPERTY DBGridColumns5 : TDBGridColumns
      READ FDBGridColumns5 WRITE FDBGridColumns5;
    {Данные DBGrid вкладки "Расход"}
    PROPERTY DBGridFont1 : TFont
      READ FDBGridFont1 WRITE FDBGridFont1;
    PROPERTY DBGridColumns1 : TDBGridColumns
      READ FDBGridColumns1 WRITE FDBGridColumns1;
  END; {TComponentForSetUp}
 
PROCEDURE Register;
 
VAR
  SetUpCompCollect : TComponentForSetUp;
 
{--------------------------------------------------------------------------}
 
                             IMPLEMENTATION
 
{--------------------------------------------------------------------------}
 
CONSTRUCTOR TComponentForSetUp.Create(AOwner:TComponent);
BEGIN
  INHERITED;
  DBGridFont3:=TFont.Create;
  DBGridColumns3:=TDBGridColumns.Create(NIL,TColumn);
  DBGridFont5:=TFont.Create;
  DBGridColumns5:=TDBGridColumns.Create(NIL,TColumn);
  DBGridFont1:=TFont.Create;
  DBGridColumns1:=TDBGridColumns.Create(NIL,TColumn);
END; {TComponentForSetUp.Create}
{**************************************************************************}
DESTRUCTOR TComponentForSetUp.Destroy;
BEGIN
  DBGridFont3.Destroy;
  DBGridColumns3.Destroy;
  DBGridFont5.Destroy;
  DBGridColumns5.Destroy;
  DBGridFont1.Destroy;
  DBGridColumns1.Destroy;
  INHERITED;
END; {TComponentForSetUp.Destroy}
{**************************************************************************}
PROCEDURE Register;
BEGIN
  RegisterClass(TComponentForSetUp);
END;
 
END.
Вот сохранение:
Delphi
1
2
3
4
5
6
7
8
9
10
11
PROCEDURE TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
BEGIN
    {Сохранить настройки DBGrid-ов}
    SetUpCompCollect.DBGridFont3.Assign(Form1.DBGrid3.Font);
    SetUpCompCollect.DBGridColumns3.Assign(Form1.DBGrid3.Columns);
    SetUpCompCollect.DBGridFont5.Assign(Form1.DBGrid5.Font);
    SetUpCompCollect.DBGridColumns5.Assign(Form1.DBGrid5.Columns);
    SetUpCompCollect.DBGridFont1.Assign(Form1.DBGrid1.Font);
    SetUpCompCollect.DBGridColumns1.Assign(Form1.DBGrid1.Columns);
    WriteComponentResFile('Data\MySetUp.dat',SetUpCompCollect);
END;
А вот восстановление:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PROCEDURE TForm1.FormCreate(Sender: TObject);
BEGIN
  SetUpCompCollect:=TComponentForSetUp.Create(Self);
  {Восстановить настройки DBGrid-ов}
  IF FileExists('Data\MySetUp.dat') THEN
  BEGIN
    {Сначала взять исходные настройки}
    SetUpCompCollect.DBGridFont3.Assign(Form1.DBGrid3.Font);
    SetUpCompCollect.DBGridColumns3.Assign(Form1.DBGrid3.Columns);
    SetUpCompCollect.DBGridFont5.Assign(Form1.DBGrid5.Font);
    SetUpCompCollect.DBGridColumns5.Assign(Form1.DBGrid5.Columns);
    SetUpCompCollect.DBGridFont1.Assign(Form1.DBGrid1.Font);
    SetUpCompCollect.DBGridColumns1.Assign(Form1.DBGrid1.Columns);
 
    ReadComponentResFile('Data\MySetUp.dat',SetUpCompCollect);
 
    DBGrid3.Font.Assign(SetUpCompCollect.DBGridFont3);
    DBGrid3.Columns.Assign(SetUpCompCollect.DBGridColumns3);
    DBGrid5.Font.Assign(SetUpCompCollect.DBGridFont5);
    DBGrid5.Columns.Assign(SetUpCompCollect.DBGridColumns5);
    DBGrid1.Font.Assign(SetUpCompCollect.DBGridFont1);
    DBGrid1.Columns.Assign(SetUpCompCollect.DBGridColumns1);
  END;
END;
Добавлено через 22 минуты
Павел А. Ну, видимо, там действительно у тебя в файл сохраняется просто указатель на данные. И когда ты не закрывая программу читаешь их - память ещё не затёрлась и как бы всё читается. Попробуй на базе TComponent создать этот свой класс и потом по той методике, что я выложил можешь и сохранять и восстанавливать.
Пока других предложений нет.
3
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
17.05.2012, 13:12 15
Цитата Сообщение от Одиночка Посмотреть сообщение
Пока других предложений нет.
Или все-таки создать запись и записывать через нее. Как тут
1
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 13:32 16
Ну а почему бы нет? Создать переменную с нужной записью, в неё записывать данные, а потом выгружать в файл.
Но, мне кажется, с моим вариантом проще. Если ничего больше не сохранять в компонент дополнительно, то там, фактически, только используешь процедуры чтения и записи WriteComponentResFile и ReadComponentResFile.
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 11
17.05.2012, 13:54  [ТС] 17
Сделал как ты советовал через WriteComponentResFile и ReadComponentResFile:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  type
  TFall = class (TComponent)
   public
    fnum: string;
    fdate: tdate;
    fuser: string;
    fsum: integer;
    constructor Create(num:string; date:tdate; user:string; sum:integer);
 end;
{--всякое---}
constructor TFall.Create(num:string; date:tdate; user:string; sum:integer);
begin
//inherited Create;
fnum:=num;
fdate:=date;
fuser:=user;
fsum:=sum;
end;
{------}
procedure TForm1.Button2Click(Sender: TObject);
begin
 if SaveDialog1.Execute then
  begin
  WriteComponentResFile(SaveDialog1.FileName,aas);
{   AssignFile(f,SaveDialog1.FileName);
   Rewrite(f);
   Write(f,aas);
   closefile(f);}
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
  ReadComponentResFile(OpenDialog1.FileName,aas);
{   AssignFile(fr,OpenDialog1.FileName);
   Reset(fr);
   while not Eof(fr) do
    begin
   Read(fr,bbs);}
   Memo1.Lines.Add('User is '+aas.fuser);
  { end;
   closefile(fr);}
  end;
end;
Всё равно так же как и было, т.е. сохраняет и загружает пока прогу не выключишь, но теперь при повторном открытии (при повторной загрузке проги) пишет мол класс такой то не найден (или класс одного документа или другого в зависимости от того что заполняешь).
Буду пробовать ч/з записи.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
17.05.2012, 14:10 18
Цитата Сообщение от Павел А. Посмотреть сообщение
но теперь при повторном открытии (при повторной загрузке проги) пишет мол класс такой то не найден
А ты класс перед открытием создавал?
1
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
17.05.2012, 14:27 19
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  type
  TFall = class (TComponent)
   private
    Ffnum: string;
    Ffdate: tdate;
    Ffuser: string;
    Ffsum: integer;
 
   public
    Property fnum : string Read Ffnum Write Ffnum;
    Property fdate : tdate Read Ffdate Write Ffdate;
    Property fuser : string Read Ffuser Write Ffuser;
    Property fsum : integer Read Ffsum Write Ffsum;
 
    Procedure LoadData(num:string; date:tdate; user:string; sum:integer); 
 end;
 
PROCEDURE Register;
 
{--всякое---}
Procedure TFall.LoadData(num:string; date:tdate; user:string; sum:integer);
begin
  Ffnum:=num;
  Ffdate:=date;
  Ffuser:=user;
  Ffsum:=sum;
end;
{------}
procedure TForm1.Button2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    WriteComponentResFile(SaveDialog1.FileName,aas);
{   AssignFile(f,SaveDialog1.FileName);
    Rewrite(f);
   Write(f,aas);
   closefile(f);}
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
  ReadComponentResFile(OpenDialog1.FileName,aas);
{   AssignFile(fr,OpenDialog1.FileName);
   Reset(fr);
   while not Eof(fr) do
    begin
   Read(fr,bbs);}
   Memo1.Lines.Add('User is '+aas.fuser);
  { end;
   closefile(fr);}
  end;
end;
//------------------------------------------
PROCEDURE Register;
BEGIN
  RegisterClass(TFall);
END;
Немного изменил:
Там где-нибудь напишешь:

Delphi
1
2
aas:=TFall.Create(Self);
aas.LoadData(num,date,user,sum); //Со своими парамерами
1
17.05.2012, 14:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2012, 14:27
Помогаю со студенческими работами здесь

Почему не создаётся файл и не производится запись в пустой файл?
Помогите разобраться почему не создаётся файл и не производится запись в пустой файл, в дебагере...

Bat-файл не открывает уже кем-то открытый файл Word
Имеется файл .bat: @echo off start /b...

Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт, закрывает его и завершается
Здравствуйте! Есть задание:"Процесс 1 открывает файл и порождает потомка 2, после этого пишет в...

А пустой ли файл?
Надо проверить файл на пустоту... причем, проверять размер файла не стоит... Потому что там может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru