
13.05.2008, 09:02
|
Прохожий
|
|
Регистрация: 13.05.2008
Сообщения: 13
Репутация: 10
|
|
Число из файла не присваивается переменной
программа выглядит примерно так:
Код:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,UnitGl, ComCtrls, Buttons, ExtCtrls, Grids;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Button5: TButton;
Bevel1: TBevel;
Button6: TButton;
Bevel2: TBevel;
BitBtn1: TBitBtn;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
Work:TMain1;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
Work:=TMain1.Create(OpenDialog1.FileName);
End;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
work.polniispis(StringGrid1);
end;
end.
unit UnitGl;
interface
Uses Dialogs,StdCtrls,SysUtils,grids;
type
TData=record
day:1..31;
month:1..12;
year:Integer;
end;
TOcheredniki=record
fam:String;
name:String;
otch:String;
plosh:Integer;
kol:Byte;
srok:TData;
staj:TData;
end;
TMain=class
protected
NameFile:String;
l:Integer;
D:Array Of TOcheredniki;
public
Constructor Create(UnitFile:String);
Destructor Destroy; override;
Procedure polniispis(StrGr:TStringGrid);
end;
TMain1=class(TMain)
published
Constructor Create(UnitFile:String);
Destructor Destroy; override;
end;
implementation
Constructor TMain.Create(UnitFile:String);
Var f:TextFile;
i:Integer;
s:String;
begin
NameFile:=UnitFile;
AssignFile(f,UnitFile);
Reset(f);
ReadLn(f,l); {Вот здесь переменная l ничего не считывает и получается= 0}
SetLength(d,l);
For i:=1 To l Do
Begin
ReadLn(f,d[i].fam);
ReadLn(f,d[i].name);
ReadLn(f,d[i].otch);
ReadLn(f,d[i].plosh);
ReadLn(f,d[i].kol);
ReadLn(f,d[i].srok.day,d[i].srok.month,d[i].srok.year);
ReadLn(f,d[i].staj.day,d[i].staj.month,d[i].staj.year);
End;
CloseFile(f);
end;
Procedure TMain.polniispis(StrGr:TStringGrid);
var i:Integer;
begin
StrGr.RowCount:=l;
For i:=1 To l Do
end;
Destructor TMain.Destroy;
begin
end;
Constructor TMain1.Create(UnitFile:String);
begin
end;
Destructor TMain1.Destroy;
begin
end;
end.
Так программа запускается, работает, но l = 0.
В текстовом файле в самом начале стоит число не равное 0.
Помогите плиз, если знаете в чем дело...
Aristarh Dark: пользуемся тэгами!!!
|