Forum > Spanish

Presentación y problema con la unit

(1/2) > >>

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

Go to full version