Me ajudem (exercicio da Faculdade)

24/02/2003

0

É o seguinte quero colocar uma função para chamar ela mesma.
O cliente entra com a letra A e enquanto estiver no edit.text essa letra a função continua se chamando, ela só para se a letra do edit for <>A.
A função funciona o problema que ela depois de um determinado tempo da esse erro.

Olha o codigo.

function TForm2.chamada(pA: string): string;
var Va:string;
begin
if pA = ´A´ then //já tentei com while e não funcionou
begin
Va:=Form1.Edit1.text ;
chamada(Va);
end
else
begin

form2.ShowModal;
end;
end;


Anonymous

Anonymous

Responder

Posts

24/02/2003

Okama

Se é exercício de faculdade não convém colocarmos o código pronto pra você, mas em todo caso...


insira um TStaticText com Caption := 0 e coloque esse código na primeira chamada da Função.

StaticText1.Caption := IntToStr( StrToInt( StaticText1.Caption) +1);

Vc vai notar a quantidade de vezes que a função é chamada, quando acaba o recurso da máquina ocorre o erro.

Se for pra função ficar testando o conteúdo do Edit faça use um timer, pois pode não haver intervalo para alterar o Edit, pois o aplicativo está ocupado chamando ele mesmo.


Responder

24/02/2003

Aroldo Zanela

É o seguinte quero colocar uma função para chamar ela mesma. O cliente entra com a letra A e enquanto estiver no edit.text essa letra a função continua se chamando, ela só para se a letra do edit for <>A. A função funciona o problema que ela depois de um determinado tempo da esse erro. Olha o codigo. function TForm2.chamada(pA: string): string; var Va:string; begin if pA = ´A´ then //já tentei com while e não funcionou begin Va:=Form1.Edit1.text ; chamada(Va); end else begin form2.ShowModal; end; end;


Criar formulário:

  object Edit1: TEdit
    Left = 12
    Top = 16
    Width = 121
    Height = 21
    TabOrder = 0
    Text = ´Edit1´
  end
  object Button1: TButton
    Left = 12
    Top = 42
    Width = 75
    Height = 25
    Caption = ´Button1´
    TabOrder = 1
    OnClick = Button1Click
  end


Implementar

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    function Chamada( pA: String): String;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    i: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.Chamada(pA: String): String;
begin
Inc(i);
  if i>1000 then
Begin
  ShowMessage(´Mais de 1000 chamadas recursivas. Chega´);
exit;
  end;
if pA = ´A´ then
  begin
   Chamada(Edit1.Text);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// Faz a primeira chamada
i := 0;
Chamada(Edit1.Text);
end;

end.



Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar