Forum > Spanish
Presentación y problema con la unit
e_nigma:
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.
birin:
Hola e_nigma,
tus cico errores parecen ser el mismo.
Declaras mal las cinco funciones de la clase TForm2, de tal manera que el compilador no reconoce las funciones correspondientes a la declaracion de la form.
Por ejemplo, declaras (despues de implementation) :
procedure lee_fichero(ciclo: ciclos);
cuando la declaracion correcta seria :
procedure TForm2.lee_fichero(ciclo: ciclos);
e_nigma:
Muchísimas gracias Birin, lo probaré y a ver si así funciona. Asumo mi total falta de conocimientos del compilador (y también del lenguaje). En mi época de universidad estudiábamos el Pascal, y, lo cierto es que desde entonces no he vuelto a tocarlo.
Un saludo
e_nigma:
Acabo de probarlo, aunque me sonaba haberlo probado ya. Seguro que tengo alguna otra metida de pata. Cuando lo pongo de esa forma me dice 'Syntax error, ";" expected but "." found'.
Vamos que tengo la negra
birin:
De nada,
yo tambien estudié el pascal antes de que se convitiera en OO pascal.
Hoy en dia es un lenguaje moderno y completo (para mi es una maravilla), y tienes que estudiar un poco este aspecto.
Si usas otros lenguajes modernos nada te parecera estraño, ha no ser que pascal lo escrive todo a su manera
Navigation
[0] Message Index
[#] Next page