AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TClientSocket auf Datenmodul
Thema durchsuchen
Ansicht
Themen-Optionen

TClientSocket auf Datenmodul

Ein Thema von Jens Hartmann · begonnen am 23. Jan 2012 · letzter Beitrag vom 25. Jan 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 07:44
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 07:56
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


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
Ich habe ja schon einen Workaround angegeben, wo am Ende der normale RAD-Ansatz wieder funktioniert - Komponenten-Drauf-Klatschen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (24. Jan 2012 um 07:59 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#13

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 08:19
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?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#14

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 14:20
Zitat von Medium:
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?
Ich bin gerade nicht ganz sicher, aber irgendwo habe ich sogar gelesen, das man die Sockets auf ein Datenmodul legen kann. Außerdem hat es bisjetzt mit D2007 ja auch wunderbar funktioniert.

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:
uses
  IrgendeineForm;
....

implementation //von Irgendeiner Form

uses
  MainForm;
Beim Datenmodul,kann ich jeweils auf diese zugreifen, kann vor dem Programmstart schon die Serververbindung herstellen.
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:
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.
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.

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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#15

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 14:31
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.
http://jed-software.com/blog/?p=504

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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#16

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 15:07
Zitat von mjustin:
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.
Werde ich heute Abend mal ausprobieren...

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#17

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 16:10
Ich versteh allerdings nicht, warum ich die Komponenten nicht auf das Datenmodul gelegt bekomme.
Weil es kein aktives Designtime Package auf deinem Rechner gibt, das die Komponente(n) einbindet.
Du müsstest dclsocket100.bpl einbinden; Die "100" bezeichnet die Delphiversion und kann bei dir einen anderen Wert haben.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#18

AW: TClientSocket auf Datenmodul

  Alt 24. Jan 2012, 16:21
Zitat von shmia:
Weil es kein aktives Designtime Package auf deinem Rechner gibt, das die Komponente(n) einbindet.
Du müsstest dclsocket100.bpl einbinden; Die "100" bezeichnet die Delphiversion und kann bei dir einen anderen Wert haben.
Natürlich habe ich das. Bei mir ist das die dclsocket160.bpl.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#19

AW: TClientSocket auf Datenmodul

  Alt 25. Jan 2012, 10:08
Zitat von mjustin:
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.
http://jed-software.com/blog/?p=504

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.
Jawohl, so ist es. Die Indy´s gehen.

Gibt es da gravierende Unterschiede zwischen der

TServerSocket - TIdTCPServer

und der...

TClientSocket - IdTCPClient

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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