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

Описать логическую функцию eq(f,g), проверяющую на равенство файлы f и g типа ФВ.

30.04.2012, 20:06. Показов 2904. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написала программу, но она у меня не сравнивает, постоянно выводит, что "файлы не равны". а задание такое:
Type время = record час:0..23; мин, сек:0..59 end;
ФВ = file of время;
Описать логическую функцию eq(f,g), проверяющую на равенство файлы f и g типа ФВ.

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, Menus;
 
type
 vrem=record
          ch:0..23;
          mn,sc:0..59;
          end;
    FB=file of vrem;
    arr=array [1..5] of vrem;
  TForm1 = class(TForm)
    St1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    BitBtn1: TBitBtn;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    f,g:FB;
    z:vrem;
    c:char;
    i:integer;
    a:arr;
 
implementation
 
{$R *.dfm}
function Eq(var f,g:FB):boolean;
var b:boolean;
    i,nf,ng:integer;
    v,w:vrem;
begin
reset(f);
reset(g);
nf:=filesize(f);
ng:=filesize(g);
if(nf=0)and(ng=0)then b:=true
else if nf<>ng then b:=false
else
 begin
  b:=true;
  i:=0;
  while(i<=nf-1)and b do
   begin
    seek(f,i);
    read(f,v);
    seek(g,i);
    read(g,w);
    if(v.ch<>w.ch)or(v.mn<>w.mn)or(v.sc<>w.sc)then b:=false
    else
    closefile(f);
  closefile(g);
  Eq:=b;
  end;
 
 
end;
 
   end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=i+1;
a[i].ch:=strtoint(Edit1.Text);
a[i].mn:=strtoint(Edit2.Text);
a[i].sc:=strtoint(Edit3.Text);
 
st1.Cells[0,i]:=IntToStr(a[i].ch);
st1.Cells[1,i]:=IntToStr(a[i].mn);
st1.Cells[2,i]:=IntToStr(a[i].sc);
 
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
 
 
 
end;
 
 
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
st1.Cells[0,0]:='час';
st1.Cells[1,0]:='минута';
st1.Cells[2,0]:='секунда';
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
assignfile(f,'fileF');
rewrite(f);
assignfile(g,'fileG');
rewrite(g);
 
 
 begin
 
Eq(f,g);
Edit4.Text:='Файлы равны'
else
Edit4.text:='Файлы не равны';
read;
end;
end;
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2012, 20:06
Ответы с готовыми решениями:

Описать логическую функцию Equal(f1,f2), проверяющую файлы f1 и f2 типа myfile на равенство.
type myfile = file of char; Описать логическую функцию Equal(f1,f2), проверяющую файлы f1 и f2...

Описать логическую функцию, проверяющую на равенство файлы
Type время = record час:0..23; мин, сек:0..59 end; ФВ = file of время; Описать логическую функцию...

Описать логическую функцию less(w1,w2), проверяющую предшествует ли лексикографически слово w1 слову w2
tupe слово = file of string; описать логическую функцию less(w1,w2), проверяющую предшествует ли...

Описать логическую функцию mid(f) которая определяет, имеет ли файл f Типа FR четную длину
Задание: Описать логическую функцию mid(f) которая определяет, имеет ли файл f Типа FR четную...

20
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
30.04.2012, 20:29 2
Лучший ответ Сообщение было отмечено как решение

Решение

Вот этот кусок:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
  while(i<=nf-1)and b do
   begin
    seek(f,i);
    read(f,v);
    seek(g,i);
    read(g,w);
    if(v.ch<>w.ch)or(v.mn<>w.mn)or(v.sc<>w.sc)then b:=false
    else
    closefile(f);
  closefile(g);
  Eq:=b;
  end;
Меняй на:
Delphi
1
2
3
4
5
6
7
8
9
  while (not Eof(f)) and b do
  begin
    read(f,v);
    read(g,w);
    if(v.ch<>w.ch)or(v.mn<>w.mn)or(v.sc<>w.sc)then b:=false;
  end;
  closefile(f);
  closefile(g);
  Eq:=b;
1
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 00:55  [ТС] 3
спасибо большое, но все равно пишет, что "файлы не равны"(
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 01:04 4
Вот эту строку:
Delphi
1
Eq(f,g);
Запиши так:
Delphi
1
If Eq(f,g) Then
Строки 133,139 и 140 можно вообще убрать.

Не по теме:

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

1
13100 / 5881 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
01.05.2012, 01:17 5
Подключусь к обсуждению. Что касается объявления типов и определения функции Eq(), этот код надо переписать так:
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
type
  //Если записи предназначены для работы с файлом - их надо делать упакованными (packed).
  vrem = packed record
    ch : 0..23;
    mn, sc : 0..59;
  end;
  FB = file of vrem;
 
function Eq(var f, g : FB) : boolean;
var
  v, w : vrem;
begin
  Result := False;
  Reset(f);
  Reset(g);
  if FileSize(f) = FileSize(g) then begin
    Result := True;
    while not Eof(f) do begin
      Read(f,v);
      Read(g,w);
      if (v.ch <> w.ch) or (v.mn <> w.mn) or (v.sc <> w.sc) then begin
        Result := False;
        Break;
      end;
    end;
  end;
  CloseFile(f);
  CloseFile(g);
end;
2
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 01:49  [ТС] 6
спасибо, сейчас изменю)

Добавлено через 31 минуту
теперь всегда выводит, что файлы равны(
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 01:52 7
Выложите последний код.
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 01:53  [ТС] 8
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, Menus;
 
type
 vrem= packed record
          ch:0..23;
          mn,sc:0..59;
          end;
    FB=file of vrem;
    arr=array [1..5] of vrem;
 
  TForm1 = class(TForm)
    St1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    f,g:FB;
    z:vrem;
    c:char;
    i:integer;
    a:arr;
 
implementation
 
{$R *.dfm}
function Eq(var f, g : FB) : boolean;
var
  v, w : vrem;
begin
  Result := False;
  Reset(f);
  Reset(g);
  if FileSize(f) = FileSize(g) then
  begin
    Result := True;
    while not Eof(f) do
     begin
      Read(f,v);
      Read(g,w);
      if (v.ch <> w.ch) or (v.mn <> w.mn) or (v.sc <> w.sc) then
      begin
        Result := False;
        Break;
      end;
    end;
  end;
  CloseFile(f);
  CloseFile(g);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=i+1;
a[i].ch:=strtoint(Edit1.Text);
a[i].mn:=strtoint(Edit2.Text);
a[i].sc:=strtoint(Edit3.Text);
 
st1.Cells[0,i]:=IntToStr(a[i].ch);
st1.Cells[1,i]:=IntToStr(a[i].mn);
st1.Cells[2,i]:=IntToStr(a[i].sc);
 
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
 
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
st1.Cells[0,0]:='час';
st1.Cells[1,0]:='минута';
st1.Cells[2,0]:='секунда';
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
assignfile(f,'fileF');
rewrite(f);
assignfile(g,'fileG');
rewrite(g);
 
 if Eq(f,g) then
  Edit4.Text:='Файлы  равны'
else
 
  Edit4.text:='Файлы не равны';
 
end;
 
end.
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 02:05 9
Вот эти строки в вашем коде открывают файлы и очищают их. А потом сравниваем 2 пустых файла.
Delphi
1
2
3
4
assignfile(f,'fileF');
rewrite(f);
assignfile(g,'fileG');
rewrite(g);
Если эти файлы у вас уже есть заполненные - нужно использовать команды Reset для их открытия.
Delphi
1
2
3
4
assignfile(f,'fileF');
reset(f);
assignfile(g,'fileG');
reset(g);
1
13100 / 5881 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
01.05.2012, 02:06 10
Пояснения:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.N2Click(Sender: TObject);
begin
assignfile(f,'fileF');
rewrite(f); //В этом месте содержимое файла полностью стирается.
assignfile(g,'fileG');
rewrite(g); //В этом месте содержимое файла полностью стирается.
 
//Поэтому, когда мы оказываемся здесь, то оба файла пустые - а значит они равны.
if Eq(f,g) then
  Edit4.Text:='Файлы  равны'
else
  Edit4.text:='Файлы не равны';
end;
И в коде нет раздела, где файлы заполнялись бы значениями.
---
Одиночка уже ответил.
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 15:17  [ТС] 11
заполнила файлы, но выдает ошибку посмотрите пожалуйста

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
148
149
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, Menus;
 
type
 vrem= packed record
          ch:0..23;
          mn,sc:0..59;
          end;
    FB=file of vrem;
    arr=array [1..5] of vrem;
 
  TForm1 = class(TForm)
    st1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N5: TMenuItem;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    f,g:FB;
    z:vrem;
    c:char;
    i,j:integer;
    a:arr;
 
implementation
 
{$R *.dfm}
function Eq(var f, g : FB) : boolean;
var
  i,j:Integer;
  v, w : vrem;
begin
AssignFile(f,'fileF.dat');
 
 Rewrite(f);
 
for  i:=1 to stringgrid1.rowCount-1 do
begin
  z.ch:=stringgrid1.Cells[1,i];
  z.mn:=stringgrid1.Cells[2,i];
  z.sc:=stringgrid1.Cells[3,i];
end;
Write(f,z);
 CloseFile(F);
 
  AssignFile(g,'fileG.dat');
 Rewrite(g);
 for  i:=1 to stringgrid1.rowCount-1 do
begin
  z.ch:=stringgrid1.Cells[1,i];
  z.mn:=stringgrid1.Cells[2,i];
  z.sc:=stringgrid1.Cells[3,i];
end;
write(G,z);
 CloseFile(g);
 
  Result := False;
  Reset(f);
  Reset(g);
  if FileSize(f) = FileSize(g) then
  begin
    Result := True;
    while not Eof(f) do
     begin
      Read(f,v);
      Read(g,w);
      if (v.ch <> w.ch) or (v.mn <> w.mn) or (v.sc <> w.sc) then
      begin
        Result := False;
        Break;
      end;
    end;
  end;
  CloseFile(f);
  CloseFile(g);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=i+1;
a[i].ch:=strtoint(Edit1.Text);
a[i].mn:=strtoint(Edit2.Text);
a[i].sc:=strtoint(Edit3.Text);
 
st1.Cells[0,i]:=IntToStr(a[i].ch);
st1.Cells[1,i]:=IntToStr(a[i].mn);
st1.Cells[2,i]:=IntToStr(a[i].sc);
 
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
 
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
st1.Cells[0,0]:='÷àñ';
st1.Cells[1,0]:='ìèíóòà';
st1.Cells[2,0]:='ñåêóíäà';
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
assignfile(f,'fileF.dat');
reset(f);
assignfile(g,'fileG.dat');
reset(g);
 
 if Eq(f,g) then
  Edit4.Text:='Ôàéëû  ðàâíû'
else
 
  Edit4.text:='Ôàéëû íå ðàâíû';
 
end;
 
end.
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 15:31 12
Строки 67 и 68 поменяйте местами.
Строки 78 и 79 поменяйте местами.
И пишите, пожалуйста, сразу, что за ошибка? Может это ещё не причина выдаваемой ошибки. Хотя тоже ошибка.
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 15:43  [ТС] 13
ошибка undeclared identifier 'st1'
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 15:51 14
Не пойму нифига.
У вас должно было выдать ошибку:
undeclared identifier 'stringgrid1'.
Выложите файл с расширение dfm из проекта.
Или попробуйте все идентификаторы St1 (во всём этом коде) заменить на stringgrid1.
Лучше выложите *dfm.
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 15:59  [ТС] 15
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
object Form1: TForm1
  Left = 241
  Top = 140
  Width = 890
  Height = 458
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  Menu = MainMenu1
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 88
    Top = 224
    Width = 17
    Height = 13
    Caption = #1095#1072#1089
  end
  object Label2: TLabel
    Left = 224
    Top = 232
    Width = 36
    Height = 13
    Caption = #1084#1080#1085#1091#1090#1072
  end
  object Label3: TLabel
    Left = 376
    Top = 224
    Width = 41
    Height = 13
    Caption = #1089#1077#1082#1091#1085#1076#1072
  end
  object Label4: TLabel
    Left = 624
    Top = 112
    Width = 103
    Height = 13
    Caption = #1088#1072#1074#1085#1099' '#1080#1083#1080' '#1085#1077' '#1088#1072#1074#1085#1099
  end
  object st1: TStringGrid
    Left = 56
    Top = 32
    Width = 320
    Height = 120
    ColCount = 3
    FixedCols = 0
    RowCount = 3
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]
    TabOrder = 0
    ColWidths = (
      64
      64
      64)
  end
  object Edit1: TEdit
    Left = 40
    Top = 248
    Width = 121
    Height = 21
    TabOrder = 1
  end
  object Edit2: TEdit
    Left = 184
    Top = 248
    Width = 121
    Height = 21
    TabOrder = 2
  end
  object Edit3: TEdit
    Left = 328
    Top = 248
    Width = 121
    Height = 21
    TabOrder = 3
  end
  object Edit4: TEdit
    Left = 616
    Top = 136
    Width = 121
    Height = 21
    TabOrder = 4
  end
  object Button1: TButton
    Left = 504
    Top = 248
    Width = 75
    Height = 25
    Caption = #1076#1086#1073#1072#1074#1080#1090#1100
    TabOrder = 5
    OnClick = Button1Click
  end
  object MainMenu1: TMainMenu
    Left = 16
    Top = 56
    object N1: TMenuItem
      Caption = #1060#1072#1081#1083
      object N2: TMenuItem
        Caption = #1088#1072#1089#1089#1095#1080#1090#1072#1090#1100
        OnClick = N2Click
      end
      object N5: TMenuItem
        Caption = #1074#1099#1093#1086#1076
        OnClick = N5Click
      end
    end
  end
end
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 16:16 16
А ну попробуйте вот этот код:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons, Menus;
 
type
 vrem= packed record
          ch:0..23;
          mn,sc:0..59;
          end;
    FB=file of vrem;
    arr=array [1..5] of vrem;
 
  TForm1 = class(TForm)
    st1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N5: TMenuItem;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    f,g:FB;
    z:vrem;
    c:char;
    i,j:integer;
    a:arr;
 
implementation
 
{$R *.dfm}
 
function Eq(var f, g : FB) : boolean;
var
  i,j:Integer;
  v, w : vrem;
begin
  Reset(f);
  Reset(g);
 
  Result := False;
  if FileSize(f) = FileSize(g) then
  begin
    Result := True;
    while not Eof(f) do
     begin
      Read(f,v);
      Read(g,w);
      if (v.ch <> w.ch) or (v.mn <> w.mn) or (v.sc <> w.sc) then
      begin
        Result := False;
        Break;
      end;
    end;
  end;
  CloseFile(f);
  CloseFile(g);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=i+1;
  a[i].ch:=strtoint(Edit1.Text);
  a[i].mn:=strtoint(Edit2.Text);
  a[i].sc:=strtoint(Edit3.Text);
 
  st1.Cells[0,i]:=IntToStr(a[i].ch);
  st1.Cells[1,i]:=IntToStr(a[i].mn);
  st1.Cells[2,i]:=IntToStr(a[i].sc);
 
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  st1.Cells[0,0]:='час';
  st1.Cells[1,0]:='минута';
  st1.Cells[2,0]:='секунда';
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
  close;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
  AssignFile(f,'fileF.dat');
  Rewrite(f);
  for  i:=1 to st1.rowCount-1 do
  begin
    z.ch:=st1.Cells[1,i];
    z.mn:=st1.Cells[2,i];
    z.sc:=st1.Cells[3,i];
    Write(f,z);
  end;
  CloseFile(F);
 
  AssignFile(g,'fileG.dat');
  Rewrite(g);
  for  i:=1 to st1.rowCount-1 do
  begin
    z.ch:=st1.Cells[1,i];
    z.mn:=st1.Cells[2,i];
    z.sc:=st1.Cells[3,i];
    write(G,z);
  end;
  CloseFile(g);
 
  if Eq(f,g) then
  Edit4.Text:='Файлы  равны' else
  Edit4.text:='Файлы не равны';
end;
 
end.
Полностью замените код в Unite.
Если будет выдавать ошибки при компиляции сразу пишите, что за ошибки и номер строки.
0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 16:30  [ТС] 17
128 строчка
[Error] Unit1.pas(128): Incompatible types: 'Integer' and 'String'
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 17:16 18
Сейчас. Я уже у себя проект сформировал. Там много ошибок. Все уберу - потом выложу. Минут 15.

Добавлено через 38 минут
Я добился, что данные заносятся в стринггрид и в файлы. Только...
1. Заносятся одни и те же данные по вашему коду. Поэтому они будут всё время будут равны.
2. У вас нет расширения стрингрида. Поэтому вводятся только 2 строки.
А ну, подумайте, как заполнить файлы? Может ещё один грид поставить и отдельную кнопочку для его заполнения? Из него заполнять другой файл. Думайте.

Не по теме:

А я пока позавтракаю.

0
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 17
01.05.2012, 17:19  [ТС] 19
приятного аппетита)
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
01.05.2012, 18:49 20
Вот рабочий проект. Пробуйте.
Распакуйте куда-нибудь и перенесите в свой прект файлы Unit1.pas и Unit1.dfm. Ваш проект должен быть закрыт.
Или попробуйте просто как другой проект.
Вложения
Тип файла: rar Время.rar (196.9 Кб, 24 просмотров)
2
01.05.2012, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2012, 18:49
Помогаю со студенческими работами здесь

Описать процедуру, проверяющую на равенство два текстовых файла
Нужно делать так, чтобы пустым текстовым файлам через мемо1 и мемо2 передавался текст(по нажатию...

Описать процедуру, проверяющую на равенство два текстовых файла
На равенство символов двух txt блокнотных файла В выводе должно быть равно или не равно число...

Описать процедуру, проверяющую на равенство два текстовых файла
Нужна собственная, аналог консольной 'cmd /c fc /N ' путь к 1 + ' ' + путь ко 2 ' . Заранее...

Описать процедуру, проверяющую на равенство два текстовых файла
Это вообще как Помогите пожалуйста


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

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

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