Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TObject ausgeben (https://www.delphipraxis.net/158251-tobject-ausgeben.html)

Mike_ 10. Feb 2011 15:12

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:

webcss 10. Feb 2011 15:15

AW: TObject ausgeben
 
obwohl ich Deine Frage nicht so wirklich verstehe, versuch's doch mal mit
Delphi-Quellcode:
...
writeln(Sender.Classname);
...

Mike_ 10. Feb 2011 15:20

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.

himitsu 10. Feb 2011 15:25

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

Mike_ 10. Feb 2011 15:38

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)

DeddyH 10. Feb 2011 15:41

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.

Mike_ 10. Feb 2011 15:47

AW: TObject ausgeben
 
Weil dann "Types of actual and formal var parameters must be identical" kommt...

DeddyH 10. Feb 2011 15:49

AW: TObject ausgeben
 
Kannst Du mal ein bisschen Code zeigen?

Mike_ 10. Feb 2011 15:54

AW: TObject ausgeben
 
Edit//
Wobei das nur heißt dass meine übergebenen Parameter fehlerhaft sind !?


Delphi-Quellcode:
Prozedur(ASender:TObject; var var1, var2, var3: integer; var var4, var5: wideString; var var6: Integer);
[...]
und ich rufe diese wie folgt auf:

Delphi-Quellcode:
procedure ButtonClick(Sender:Tobject);
begin
Prozedur (Sender, 124, 412, 412, '412', '', 124)
end;
Kann doch nichts verkeht sein !?

himitsu 10. Feb 2011 15:56

AW: TObject ausgeben
 
Dann gibt esben statt
Delphi-Quellcode:
Sender
die Klasse weiter, welche benötigt wird,
so ala
Delphi-Quellcode:
(Sender as TTheClassName)
.

[add]
Das Sender ist OK, aber du übergibst Konstanten (deine Zahlen), wärend Variablen verangt werden.

DeddyH 10. Feb 2011 15:58

AW: TObject ausgeben
 
Du hast Var-Parameter deklariert, übergibst aber Konstanten.

EWeiss 10. Feb 2011 16:02

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:
var
  Test: Integer;

Test := 124;
Prozedur (Sender, Test, x, x, 'x', '', x);
oder aber den var Parameter entfernen wenn er nicht benötigt wird.
Wäre dann.

Delphi-Quellcode:
Prozedur(ASender:TObject; var1, var2, var3: integer; var4, var5: wideString; var6: Integer);
[...]
gruss

Mike_ 10. Feb 2011 16:07

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:
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;
(Classname = das, was vorhin bei Sender.Classname herauskam)


Original Prozedur:

Delphi-Quellcode:
Prozedur(ASender:TObject; var var1, var2, var3: integer; var var4, var5: wideString; var var6: Integer);

DeddyH 10. Feb 2011 16:21

AW: TObject ausgeben
 
Lass das "as Classname" einmal weg.

EWeiss 10. Feb 2011 16:22

AW: TObject ausgeben
 
Zitat:

Zitat von DeddyH (Beitrag 1080868)
Lass das "as Classname" einmal weg.

:lol:
sorry konte es nicht verkneifen.

DeddyH 10. Feb 2011 16:24

AW: TObject ausgeben
 
Zitat:

Zitat von EWeiss (Beitrag 1080869)
:lol:
sorry konte es nicht verkneifen.

:?:

Blup 10. Feb 2011 16:25

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);

EWeiss 10. Feb 2011 16:45

AW: TObject ausgeben
 
Zitat:

Zitat von DeddyH (Beitrag 1080870)
Zitat:

Zitat von EWeiss (Beitrag 1080869)
:lol:
sorry konte es nicht verkneifen.

:?:

OT:

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

DeddyH 10. Feb 2011 16:51

AW: TObject ausgeben
 
Achso, ich dachte, Du hättest mich gemeint :lol:

Mike_ 10. Feb 2011 16:55

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.

DeddyH 10. Feb 2011 16:57

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.

Aphton 10. Feb 2011 16:59

AW: TObject ausgeben
 
True that ^

Sir Rufo 10. Feb 2011 17:53

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 08:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz