Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi OnExecute selbst aufrufen (https://www.delphipraxis.net/31498-onexecute-selbst-aufrufen.html)

Kalle_XXXX 10. Okt 2004 13:36


OnExecute selbst aufrufen
 
Na moin!
Ich benutze Delphi8 for .Net!
Normalerweise kenn ich es von Delphi5 das man die Indys gleich in einer KomponentenBox hat. Beim 8er ist das leider nicht mehr so, also hab ich alles manuell eingebunden.
Hab nun auch schon ein Objekt des Typs idTCPServer, das ich erstelle und auch schon Eigenschaften zugewiesen bekommt.
Da diese Komponente nun aber leider nicht auf dem Layout sichtbar ist. Kann ich kein Event vie Doppelklick auf eine Ereignis definieren.
Wie kann ich es mir ermöglichen das OnExecute- event des Servers zu definieren und zu erweitern?
Hab mir zwar den Gesamten Code angeschaut der angelegt wird, wenn man eine StandardComponente anlegt, aber was nützliches gefunden hab ich leider nicht.
Schon mal danke für jeden Thread

omata 10. Okt 2004 14:09

Re: OnExecute selbst aufrufen
 
Moin,

also vestehe ich das richtig, dass du die Indy-Units einfach eingebunden hast?

Versuch doch mal das Package der Indy-Komponenten hinzufügen, dann hast du auch wieder einen Reiter in der Komponentenliste.
Unter Delphi7 heißt die Packagedatei: dclindy70.bpl musste also unter Delphi8 dclindy80.bpl heißen such doch einfach mal noch dieser Datei (oder schau mal in das Delphi8\bin-Verzeichnis).

Dann kannst du die Komponente so nutzen, wie immer.

Die andere Alternative ist die, die du schon angewendet hast.
Die Ereignisse musst du dann aber selber zuweisen (im FormCreate)

Delphi-Quellcode:
  IdTCPServer.OnExecute:=IdTCPServerExecute;
die Ereignisprozedur musst du dann selber anlegen...

Delphi-Quellcode:
procedure TForm.IdTCPServerExecute(AThread: TIdPeerThread);
begin

end;
MfG
Thorsten

Kalle_XXXX 10. Okt 2004 17:35

Re: OnExecute selbst aufrufen
 
Ok jetzt hab ich mein Uses so erweitert
Code:
[b]uses[/b] ... System.Threading;
um einen Thread verwenden zu können.
Unter Public hab ich dann meine Procedure angelegt:
Code:
procedure IdTCPServerExecute(AThread: Thread);
Definierte Procedure im Code:
Code:
procedure TWinForm1.IdTCPServerExecute(AThread: Thread);
begin

end;
Und jetzt das wo er hängt:
Im TWinForm1.Create
ServerSocket ist mein idTCPServer Object
Code:
ServerSocket.OnExecute := IdTCPServerExecute;
Folgende Fehlermeldung erhalte ich:
Code:
Incompatyple Types: 'TidServerThreadEvent' and 'procedure, untyped pointer or untyped parameter'
Hast du noch ne Idee? Hab schon Probiert nen Thread mit zu übergeben, aber das wird auch dankend abgelehnt!
Thx

Meflin 10. Okt 2004 18:05

Re: OnExecute selbst aufrufen
 
versuche es mit
Delphi-Quellcode:
@ServerSocket.OnExecute := @IdTCPServerExecute;

Kalle_XXXX 10. Okt 2004 18:54

Re: OnExecute selbst aufrufen
 
Code:
ServerSocket.OnExecute := @IdTCPServerExecute;
--> Incompytyble Typs TidContext und Thread

Versteh i ni

Meflin 10. Okt 2004 19:07

Re: OnExecute selbst aufrufen
 
vor beides ein @!

mirage228 10. Okt 2004 19:11

Re: OnExecute selbst aufrufen
 
Zitat:

Zitat von Meflin
vor beides ein @!

Bist Du sicher, dass sowas auch in Delphi 8 bzw. in .NET generell geht?
.NET braucht bei sowas imho absolute Typsicherheit.

mfG
mirage228

Meflin 10. Okt 2004 19:16

Re: OnExecute selbst aufrufen
 
Zitat:

Zitat von mirage228
Zitat:

Zitat von Meflin
vor beides ein @!

Bist Du sicher, dass sowas auch in Delphi 8 bzw. in .NET generell geht?
.NET braucht bei sowas imho absolute Typsicherheit.

mfG
mirage228

nein keine ahnung, hab keinen blassen schimmer von .net! zumindest beim "normalen" delphi gehts so ;-)

omata 10. Okt 2004 19:46

Re: OnExecute selbst aufrufen
 
Moin,

ich habe dir doch die Prozedur mit seinen Parametern geschrieben.
Warum deklarierst du dann einen andere?
Die Parameter sind doch ganz anders!
Und wieso im Public-Teil, das ist zwar nicht so wichtig, aber soetwas wird immer im Private-Teil deklariert!

die Prozedur muss so aussehen:

Delphi-Quellcode:
procedure TForm.IdTCPServerExecute(AThread: TIdPeerThread);
begin

end;
NICHT so:

Delphi-Quellcode:
procedure TForm.IdTCPServerExecute(AThread: Thread);
begin

end;
(siehe Parameter!)

Die Fehlermeldung sagt genau das, was ich hier nochmal geschieben habe.

Und was hast du da für eine komische uses-Aktion durchgeführt.

Hast du mal versucht das Package zuinstallieren, damit das alles wie gewohnt funktionert?
Hast du die bpl-Datei gefunden?

sorry, aber wer lesen kann ist klar im Vorteil.

MfG
Thorsten

Kalle_XXXX 10. Okt 2004 19:47

Re: OnExecute selbst aufrufen
 
hatte bereits beide Varianten ausgetestet.
Gibts noch andere Lösungen für meine eigentliche Frage?
Zumindest ist es in D8 nicht so einfach eine Indy Komponente in die Toolbox zu bekommen. Deshalb war ich je gezwungen alles selbst zu coden, leider häng ich halt nur an dieser Stelle mit den Events.

omata 10. Okt 2004 20:23

Re: OnExecute selbst aufrufen
 
Moin,

gibt es den bei D8 kein Menu Komponente->Packages installieren?

dort auf Hinzufügen und die bpl-Datei auswählen.

MfG
Thorsten

Kalle_XXXX 10. Okt 2004 20:24

Re: OnExecute selbst aufrufen
 
Ich glaube dass du dich noch nicht im Delphi8 bewegt hast, denn dort ist es ni ganz so einfach mit dem *.bpl Package.
Die Indy10 Komponenten sind momentan auf dem Stand, dass man nur so mit diesen Arbeiten kann.
Einfach ein Package zu installieren is da ni.

Zu den Parametern:
Bei den Indy10 Komponenten hab ich keine TIdPeerThread Komponente gefunden. In der Hilfe ebenso wenig.
Überall wo ich gesucht habe ist im Delphi8 ein Athread durch eienn Thread der Libary System.Threading definiert.
(ohne lesen zu können hätte ich das wohl kaum rausbekommen)

Kann schon sein dass du Recht hast mit der TIdPeerThread, aber ich bekomm die halt nirgends her.
###frust###

Kalle_XXXX 10. Okt 2004 20:59

Re: OnExecute selbst aufrufen
 
Also hinzufügen von Packages geht schon, inem man nen Pfad angibt.
Dann kan man die aber halt nur verwenden, und nicht direkt als Komponente einbinden.

omata 10. Okt 2004 21:25

Re: OnExecute selbst aufrufen
 
Moin,

ja du hast recht, ich habe D8 noch nie gesehen bzw. mitgearbeitet. ich dachte nur das Borland die Welt nicht komplett ändert.
Das du gefrustet bist, kann ich verstehen. Ich würde dir ja auch gern helfen, aber irgendwie scheint da ja der Wurm drin zu sein.

Also das mit deinen Packagegeschichten verstehe ich nicht, wie kann man den unter D8 noch Komponenten hiunzufügen, das muss doch gehen.

Naja egal.
Eine neue Idea...

schau dir doch mal die Indy-Unit an. Dort muss doch das Ereignis OnExecute definiert sein. Der Typ der dort steht, legt den Aufbau und die Parameterliste der Ereignismethode fest. Diesen nimmst du dann und erstellt damit die Ereignis-Methode und weist sie dann im OnCreate deiner Serverkomponente zu.

Das müsste doch eigentlich gehen.

MfG
Thorsten

Kalle_XXXX 10. Okt 2004 21:49

Re: OnExecute selbst aufrufen
 
Naja ich probiers demnächst mal, werde es für heut aber erstma beruhen lassen.

Erstma thx for Help


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 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