Hola, en primer lugar presentarme. Soy nuevo en el mundo de Lazarus, aunque trabajo de programador desde hace muchos años en otros lenguajes. Por el momento no acabo de cogerle el tranquillo, pero solo hace unos días que estoy metido en él. Mi primer gran problema es con las unit. No sé por qué razón no hay manera de que me compile el siguiente programa. Seguro que es una chorrada, pero como no conozco la solución para mi no es una chorrada. ¿Puede alguien ayudarme? Siempre que intento ejecutarlo me da el error que aparece en el adjunto.
La unit es la siguiente:
unit Unit2;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls;
type
ciclos = array [1..20 , 1..25] of integer;
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Label1: TLabel;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject; ciclo:ciclos);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject; ciclo:ciclos);
procedure lee_fichero(ciclo: ciclos);
procedure graba_fichero(ciclo: ciclos);
procedure presenta(ciclo:ciclos);
procedure aleatorio(ciclo: ciclos);
procedure presenta_primero(ciclo: ciclos);
private
public
end;
var
Form2: TForm2;
ciclo: ciclos;
implementation
{$R *.lfm}
procedure lee_fichero(ciclo: ciclos);
var
i, j: integer;
f:file of integer;
begin
AssignFile(f, 'c:\enigma\ciclos.dat');
reset(f);
for i:=1 to 25 do
begin
for j:=1 to 20 do
begin
read(f, ciclo[i,j]);
end;
CloseFile(f);
end;
end;
procedure graba_fichero(ciclo: ciclos);
var
i, j: integer;
f:file of integer;
begin
AssignFile(f, 'c:\enigma\ciclos.dat');
reset(f);
for i:=1 to 25 do
for j:=1 to 20 do
begin
write(f, ciclo[i,j]);
end;
CloseFile(f);
end;
procedure presenta(ciclo:ciclos);
var
i, j: integer;
Form2: TForm2;
Grid: TStringGrid;
begin
Form2:= TForm2.Create(nil);
Form2.ShowModal;
for i:=1 to 25 do
begin
for j:=1 to 20 do
begin
Grid.Cells[0,j] :=IntToStr(j);
Grid.Cells[j, i] :=IntToStr(ciclo[i,j]);
end;
Grid.Cells[0,I] :=IntToStr(i);
end;
Form2.ShowModal;
end;
procedure aleatorio(ciclo: ciclos );
var
i, j: integer;
begin
for i:=1 to 25 do
for j:=1 to 20 do
begin
ciclo[i,j]:=random(520);
end
end;
procedure presenta_primero(ciclo: ciclos);
var
Form2: TForm2;
{$R *.lfm}
{ TForm2 }
begin
Form2:= TForm2.Create(nil);
Form2.ShowModal;
lee_fichero(ciclo);
presenta(ciclo);
end;
procedure TForm2.Button8Click(Sender: TObject; ciclo:ciclos);
begin
graba_fichero(ciclo);
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Label1.Caption:='General';
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Label1.Caption:='Cambio clave';
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Label1.Caption:='Emergencia 1';
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
Label1.Caption:='Emergencia 2';
end;
procedure TForm2.Button5Click(Sender: TObject);
begin
Label1.Caption:='Emergencia 3';
end;
procedure TForm2.Button6Click(Sender: TObject; ciclo:ciclos);
begin
lee_fichero(ciclo);
aleatorio(ciclo);
presenta(ciclo);
end;
procedure TForm2.Button7Click(Sender: TObject);
begin
Label1.Caption:='Edicion';
end;
end.