Einzelnen Beitrag anzeigen

Thanatos81
(Gast)

n/a Beiträge
 
#12

Re: procedure zur plausibilitätsprüfung

  Alt 5. Sep 2005, 14:36
//Edit: dieser Post kann eigentlich ignoriert werden, (vermutete) Lösung steht einen Post weiter unten.

Das TForm1 ist nur nötig, wenn er auf Komponenten oder globale Varaiblen des Forms zugreifen möchte. Ansonsten braucht man es nicht. Ist dann sogar von Vorteil, da man es einfach in andere Units/Projekte übernehmen kann, ohne die procedure anzupassen.

Am doppelten Typecast liegts aber tatsächlich nicht, hab mal eben ein wenig rumprobiert:
Delphi-Quellcode:
procedure showText(Sender: TObject);
begin
  with (Sender as TEdit) do
    begin
      showMessage((Sender as TEdit).Text);
    end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  showText(Sender);
end;
Delphi-Quellcode:
procedure showText(Sender: TEdit);
begin
  with (Sender as TEdit) do
    begin
      showMessage((Sender as TEdit).Text);
    end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  showText(TEdit(Sender));
end;
Delphi-Quellcode:
procedure showText(Sender: TEdit);
begin
  with (Sender as TEdit) do
    begin
      showMessage((Sender as TEdit).Text);
    end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  showText(Sender as TEdit);
end;
Alle drei Varianten funktionieren problemlos...

@polondo: Bist du hundertprozentig sicher, das wirklich ein TEdit übergeben wird?
@tigerman33: Wenn du schon ein TEdit übergibts, warum machst du dann überhaupt noch innerhalb der prozedur Typecasting?

Persönlich finde ich übrigens diese Variante am elegantesten:
Delphi-Quellcode:
procedure showText(Sender: TEdit);
begin
  showMessage(Sender.Text);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  showText(TEdit(Sender));
end;
  Mit Zitat antworten Zitat