![]() |
AW: TClientSocket auf Datenmodul
Da man Workarounds ja IMO sowieso tunlichst kommentieren sollte kann man ja gleich dazu schreiben, wieso entweder kein Owner angegeben wurde oder keine explizite Freigabe erfolgt und ist somit aus dem Schneider ;)
|
AW: TClientSocket auf Datenmodul
Ich sehe eben dieses Freigeben durch den Owner nicht als Seiteneffekt, sondern als Funktionalität - und eben eine Basis-Funktionalität an. Benutzt du keine Formulare, auf denen ein paar visuelle Komponenten platziert sind (TEdit, etc.)?
Wo ist da im Code dokumentiert, dass die überhaupt erzeugt werden, geschweige denn freigegeben? ;) Natürlich kann man eine Komponente auch wieder explizit freigeben, denn diese meldet ihrem Owner, dass sie sich jetzt mal vom Acker macht ... schön ist es nicht, aber es funktioniert. Eigentlich gibt man den Owner an, wenn die Lebensdauer der Komponente vom Owner abhängen soll. Und praktisch ist das in dem Falle auch, weil man sich einen Speicher (Liste) mit den Komponenten und die Freigabe-Orgie am Ende spart. Das ist somit für faule Programmierer wie mich gemacht worden Zitat:
|
AW: TClientSocket auf Datenmodul
Mal eine ganz andere Frage: Soweit ich weiss, arbeiten Sockets (zumindest die Delphi-Dinger) mit Fensterhandles bzw. Messages. Wenn man sowas auf ein DM steckt, kommen dann die Events und alles überhaupt an?
|
AW: TClientSocket auf Datenmodul
Zitat:
Der Vorteil ist, ich kann von jedem Formular geziehlt auf die TClientSocket zugreifen. Wenn ich diese ins MainForm lege, müsste ich ja mit Querverweisen arbeiten.
Delphi-Quellcode:
Beim Datenmodul,kann ich jeweils auf diese zugreifen, kann vor dem Programmstart schon die Serververbindung herstellen.
uses
IrgendeineForm; .... implementation //von Irgendeiner Form uses MainForm; Daher gesehen, sollte nichts dagegen sprechen. Ich versteh allerdings nicht, warum ich die Komponenten nicht auf das Datenmodul gelegt bekomme. Allerdings, nach dem ich die genannten Tips umgesetzt habe, funktioniert es. Bevor ich einen neuen Thread starte, mal kurz eine andere Frage. Die Verlegung auf ein Datenmodul ist durch eine zukünftig gewollte Authentifizierung auf dem Server entstanden. Ich muss also vor dem Start der Anwendung erst prüfen, ob meine Benutzerdaten dem Server bekannt sind. Daher habe ich das ganze auf ein DM verschoben und erstelle dieses vor meinem Anmeldebildschirm. Daher kann ich die Userabfrage direkt auf dem Server machen.
Delphi-Quellcode:
Mir stellt sich nun die Frage, ob ich eventuell grundsätzlich eine andere Komponente als die TServer und ClientSocket verwenden sollt. Gibt es irgendeine Komponente die den direkten Uservergleich kann. Oder muss ich das immer selber schreiben.
begin
Application.CreateForm(TDataModule5, DataModule5); if Login.Execute then begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm4, Form4); Application.Run; end else ShowMessage('Fehler bei der Anmeldung, Programm wird beendet!'); end. So mit Protokolldatei etc... Ich weiß wie das geht, aber wenn ich z.B. beim Start des Servers der TServerSocket(Ähnliche Kompo) die Authentifizierungsdaten zur Verfügung stellen könnte, z.B. UserName = User Password = Password und beim Connect dieses geprüft würde, wäre das für meinen Fall völlig ausreichend und nicht so aufwendig. Gibt es so eine Komponente? Gruß Jens |
AW: TClientSocket auf Datenmodul
Zur ursprünglichen Frage - kann es das gleiche Feature (aus XE2) sein, das in diesem Blogartikel beschrieben wird?
XE2: TDatamodule v TImageList, TActionList, TTimer etc. ![]() Ursache des "Problems" ist die Einführung einer neuen Property, "ClassGroup", die steuert, welche Komponenten beim Design eines Datamoduls in der Palette sichtbar / verwendbar sind. Es geht dabei um die Zuordnung zu bestimmten Frameworks (FireMonkey, VCL). TClientSocket ist wahrscheinlich nur unter VCL nutzbar. Ich tippe, dass Indy TCP/IP Komponenten direkt (ohne Änderung der ClassGroup) auf ein Datenmodul geworfen werden können. |
AW: TClientSocket auf Datenmodul
Zitat:
Gruß Jens |
AW: TClientSocket auf Datenmodul
Zitat:
Du müsstest dclsocket100.bpl einbinden; Die "100" bezeichnet die Delphiversion und kann bei dir einen anderen Wert haben. |
AW: TClientSocket auf Datenmodul
Zitat:
Gruß Jens |
AW: TClientSocket auf Datenmodul
Zitat:
Gibt es da gravierende Unterschiede zwischen der TServerSocket - TIdTCPServer und der... TClientSocket - IdTCPClient Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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