Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Tengo un problema con delphi (https://www.clubdelphi.com/foros/showthread.php?t=74903)

gersojn 17-07-2011 05:11:28

Tengo un problema con delphi
 
No sabia si postearlo por aca, soy novato en el foro y en delphi, tengo poco tiempo de estar usandolo, Trabajo con delphi 2010(Embarcadero).

El problema es el siguiente: estoy elaborando una aplicacion en la cual tengo 3 procedures, ( procedure proceso1(), procedure proceso2(),procedure proceso3() ) adjunto el codigo:
Código Delphi [-]
var
  Form2: TForm2;

implementation

{$R *.dfm}
procedure proceso3();
var I:Integer;
begin
for I := 1 to 100 do
Begin
  Form2.Proceso2.Caption:= 'Proceso3';
End;

end;
procedure proceso2();
var I:Integer;
begin
for I := 1 to 100 do
Begin
  Form2.Proceso1.Caption:= 'Proceso2';
End;
 Form2.Proceso1.Caption:= '';
end;
procedure proceso1();
var I:Integer;
begin
for I := 1 to 100 do
Begin
  Form2.Proceso1.Caption:= 'Proceso1';
End;
 Form2.Proceso3.Caption:= '';
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
proceso1();

end;

end.

El problema es que necesito hacer una llamada infinita de estos procedimientos de tal forma que:

El dentro del proceso1 pueda llamar al proceso2, dentro del proceso2 pueda llamar al proceso3 y dentro del proceso3 llame al proceso1, representando un ciclo infinito.

Entonces.. logro hacer que un procedimiento llame a otro que previamente haya sido definido, pero no logro hacerlo cuando este no ha sido posteriormente, de forma mas concreta, en el proceso1 llamo al proceso2, en proceso2 llamo al proceso3, pero cuando intento llamar al proceso1, dentro del proceso3, me dice un mensaje de que proceso1 no se ha declarado, intente colocar el procedura en public, pero no me ha funcionado.

Espero puedan ayudarme con esto, de antemano, gracias.

Casimiro Notevi 17-07-2011 09:42:02

Pues bienvenido a clubdelphi, no olvides leer nuestra guía de estilo, donde se explica cosas como que hay que poner un título descriptivo a las preguntas (muy importante), encerrar el código entre etiquetas, etc.





.

gersojn 17-07-2011 14:22:21

Ya logre la recursividad
 
Por medio de un forward donde defino el procedimiento, despues puedo invocarlo sin ningun problema, pero ahora me tope con otro problema, el cual expongo, espero puedan ayudarme, por cierto, gracias por los consejos de Diseño los tomare en cuenta de ahora en adelante.

Codigo Fuente

Código Delphi [-]
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Proceso1: TLabel;
    Proceso2: TLabel;
    Proceso3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public

  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
 procedure proceso2;forward;

 procedure proceso1;
 var
 I:Integer;
 begin
  Form2.Proceso2.Caption:='';
 for I := 1 to 100 do
   Begin
     Form2.Proceso1.Caption:='proceso1';
   End;
  proceso2;
 end;

 procedure proceso2;
 var
 I:Integer;
  begin
  Form2.Proceso1.Caption:='';
 for I := 1 to 100 do
   Begin
     Form2.Proceso2.Caption:='proceso2';
   End;
proceso1;
 end;


 procedure TForm2.Button1Click(Sender: TObject);
begin
proceso1;
end;

end.

como podran ver tengo dos procedures, proceso1 llama a proceso2, y proceso2 llama a proceso1... bueno hasta ahi todo bien.

El problema radica en que cuando carga el Form tengo un Button, sobre el cual quiero cargar el proceso1, al precionarlo inicie este ciclo, pero me encuentro con un error de tipos de datos.

Al parece(no estoy muy seguro de esto, aun sigo investigado) existe un problema con Form2.Ellabel.Caption:='el texto que quiero'; donde Ellabel = cualquier label que tengo definido, de momento Proceso1 a Proceso3.

Cuando llamo al proceso1 dentro del procedure del Button, me topo con este error:

[DCC Error] Unit2.pas(56): E2014 Statement expected, but expression of type 'TLabel' found

Estoy buscando informacion en google, pero solo encuentro relaciones con tipos Integer, String y similares, nada con un TLabel, he estado pensando cambiar los procedures por Function, pero no se que tanto pueda ser util.

Bueno, espero puedan ayudarme con esto, de antemano muchas gracias.

Casimiro Notevi 17-07-2011 14:52:29

¿Me parece o has nombrado los procedure igual que los label?

gersojn 17-07-2011 15:08:40

Gracias por responder..
 
Hola, gracias por responder, exactamente esa era la solucion, cambiar de nombre a los procedures, no sabia que Delphi no diferencia entre mayusculas y minusculas, bueno lo tendre en cuenta para las proximas aplicaciones que elabore, muchas gracias por la ayuda


La franja horaria es GMT +2. Ahora son las 17:32:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi