![]() |
Delphi-Version: 5
TObject ausgeben
Hallo liebe Delphigemeinde,
ich bin auf der Suche nach einem Befehl um "Sender:TObject" ausgeben zu lassen. Der Grund ist, dass ich einen "prozessaufruf" simulieren möchten und ebend dieses TObject beim aufruf mitgegeben wird. Sprich ich brauche den "Sendernamen". Google zeigt mir keine Ergebnisse zum Thema "TObject ausgeben", "Delphi TOBject ausgeben" etc.. Danke im voraus :stupid: |
AW: TObject ausgeben
obwohl ich Deine Frage nicht so wirklich verstehe, versuch's doch mal mit
Delphi-Quellcode:
...
writeln(Sender.Classname); ... |
AW: TObject ausgeben
Undeclared identifier: 'sender'
Mit ShowMessage (self.sender.classname) klappt es ebenfalls nicht. Es geht mir nur darum, eine Prozedur aufzurufen, welche sonst über ebend diesen "ASender: TObject" aufgerufen wird. Daher möchte ich den Namen des Senders erhalten, um die Prozedur ausführen zu können. |
AW: TObject ausgeben
Das kann nicht sein, denn du sagtest ja di willst ein "Sender:TObject" auswerten und demnach sollte es Sender geben.
PS: ClassName = Name der Klasse, auf welcher dein Objekt basiert |
AW: TObject ausgeben
Edit://
Mit asender.classname hat es nun funktioniert. Hatte mein Kopf ebend auf Durchzug :oops: Edit2:// Wie kann man nun diese dem Prozeduraufruf dieses Object mitgeben ? Beispiel: Prozedur123(Classname:TObject, var1, var2) Wenn ich den Namen einfach hineinschreibe klappt es nicht "undeclared identifier" Mit dem Aufruf "Classname:TObject" ebenfalls nicht, obwohl ich dachte dass er nun die Klasse als Object nehmen kann... Edit3:// Behoben indem ich die entsprechende Unit eingebunden habe. Nun erhalte ich einen "TObject" und Classreference" incompatible types. Aufruf versucht: Prozedur(Classname, var1, var2) Prozedur(Classname:TObject, var1, var2) |
AW: TObject ausgeben
Wieso gibst Du nicht den Sender weiter? Du brauchst ja eine Instanz und keinen Klassennamen, sofern ich Dich richtig verstanden habe. Bei Letzterem bin ich mir aber zugegebenermaßen nicht sicher.
|
AW: TObject ausgeben
Weil dann "Types of actual and formal var parameters must be identical" kommt...
|
AW: TObject ausgeben
Kannst Du mal ein bisschen Code zeigen?
|
AW: TObject ausgeben
Edit//
Wobei das nur heißt dass meine übergebenen Parameter fehlerhaft sind !?
Delphi-Quellcode:
und ich rufe diese wie folgt auf:
Prozedur(ASender:TObject; var var1, var2, var3: integer; var var4, var5: wideString; var var6: Integer);
[...]
Delphi-Quellcode:
Kann doch nichts verkeht sein !?
procedure ButtonClick(Sender:Tobject);
begin Prozedur (Sender, 124, 412, 412, '412', '', 124) end; |
AW: TObject ausgeben
Dann gibt esben statt
Delphi-Quellcode:
die Klasse weiter, welche benötigt wird,
Sender
so ala
Delphi-Quellcode:
.
(Sender as TTheClassName)
[add] Das Sender ist OK, aber du übergibst Konstanten (deine Zahlen), wärend Variablen verangt werden. |
AW: TObject ausgeben
Du hast Var-Parameter deklariert, übergibst aber Konstanten.
|
AW: TObject ausgeben
Das geht so nicht Typen müssen gleich sein,
Du kannst hier als Beispiel nicht einfach "124" eingeben Besser deklarieren
Delphi-Quellcode:
oder aber den var Parameter entfernen wenn er nicht benötigt wird.
var
Test: Integer; Test := 124; Prozedur (Sender, Test, x, x, 'x', '', x); Wäre dann.
Delphi-Quellcode:
gruss
Prozedur(ASender:TObject; var1, var2, var3: integer; var4, var5: wideString; var6: Integer);
[...] |
AW: TObject ausgeben
Hab es nun entsprechend abgeändert dass ich Variablen in der ButtonClick Prozedur festgelegt habe und die andere Prozedur damit aufrufe.
Nun kommt "This form of method call only allowed for class methods"
Delphi-Quellcode:
(Classname = das, was vorhin bei Sender.Classname herauskam)
procedure TMainForm.ButtonClick(Sender: TObject);
var var1, var2, var3: Integer; var4, var5: WideString; var6: Integer; begin var1 := 18; var2 := 65605; var3 := 51103; var4 := '533'; var5 := ''; var6 := 8; AndereProzedur(Sender as Classname, var1, var2, var3, var4, var5, var6); end; Original Prozedur:
Delphi-Quellcode:
Prozedur(ASender:TObject; var var1, var2, var3: integer; var var4, var5: wideString; var var6: Integer);
|
AW: TObject ausgeben
Lass das "as Classname" einmal weg.
|
AW: TObject ausgeben
Zitat:
sorry konte es nicht verkneifen. |
AW: TObject ausgeben
Zitat:
|
AW: TObject ausgeben
Sender as Classname
:gruebel::gruebel::gruebel::wiejetzt: Was willst du dem Compiler den damit sagen? Die Prozedur erwarten einen Sender als ersten Parameter und das soll ein Object vom Typ TObject oder einer abgeleitete Klasse sein.
Delphi-Quellcode:
AndereProzedur(Sender, var1, var2, var3, var4, var5, var6);
|
AW: TObject ausgeben
Zitat:
Ich meinte nicht dich. Sondern den Eintrag Sender as Classname und das du ihm sagen mußtest das er es entfernen soll (was ja richtig ist) Naja jeder fängt mal klein an. Nicht so ernst nehmen mein Kommentar. gruss |
AW: TObject ausgeben
Achso, ich dachte, Du hättest mich gemeint :lol:
|
AW: TObject ausgeben
Der Fehler lag daran, dass ich eine Klasse der Prozedur aufgerufen hatte und nicht die "Hauptprozedur" selbst.
Beispiel vorher: TTProzedur.x richtig: tProzedur.x Danke für eure Hilfe, sie hat mich zum erfolgreichen Ergebnis getrieben. |
AW: TObject ausgeben
Kleiner Tipp: poste doch in Zukunft den Quellcode samt Fehlermeldungen und sag dazu, was Du erreichen möchtest, dann kann man Dir viel schneller helfen.
|
AW: TObject ausgeben
True that ^
|
AW: TObject ausgeben
Und mit ein paar Grundlagen Tutorials zum Thema OOP wäre die Frage erst gar nicht aufgekommen, bzw. Du hättest die Antworten auch verstanden. :cyclops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz