Recent

Author Topic: Presentación y problema con la unit  (Read 3066 times)

e_nigma

  • New member
  • *
  • Posts: 8
Presentación y problema con la unit
« on: December 26, 2024, 08:37:09 am »
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

  • New Member
  • *
  • Posts: 12
Re: Presentación y problema con la unit
« Reply #1 on: December 26, 2024, 10:02:35 am »
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

  • New member
  • *
  • Posts: 8
Re: Presentación y problema con la unit
« Reply #2 on: December 26, 2024, 10:11:46 am »
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

  • New member
  • *
  • Posts: 8
Re: Presentación y problema con la unit
« Reply #3 on: December 26, 2024, 10:15:40 am »
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

  • New Member
  • *
  • Posts: 12
Re: Presentación y problema con la unit
« Reply #4 on: December 26, 2024, 10:23:24 am »
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

e_nigma

  • New member
  • *
  • Posts: 8
Re: Presentación y problema con la unit
« Reply #5 on: December 26, 2024, 10:43:45 am »
La verdad es que tiene buena pinta. He empezado a utilizarlo para hacer una serie de rutinas de criptografía, que es mi especialidad, pero por el momento sigo dándome de cabezazos con él. Supongo que es una cuestión de tiempo.
Muchas gracias por tu ayuda.

 

TinyPortal © 2005-2018