Wo sind die Socket-Komponenten (TClientSocket und TServerSocket) hin?
Seit der Delphi-Version 7 werden die Borland-Socket-Komponenten
TClientSocket und
TServerSocket nicht mehr standardmäßig in der IDE angeboten. Hier ist eine Anleitung, wie man diese Komponenten nachinstallieren kann. Da bei den
Personal
Editions von Delphi die IDE-Integration von Borland nicht vorgesehen ist, wird auch beschrieben, wie man die Socket-Komponenten dynamisch verwenden oder mit einem Trick trotzdem wieder in die IDE integrieren kann.
1. Voraussetzungen
Die Socket-Komponenten werden zwar nicht mehr in der Komponentenpalette der IDE angezeigt, sind aber noch im Lieferumfang enthalten. Es handelt sich dabei um das Package
dclsockets70.bpl bzw. eine entsprechende Datei, falls es eine neuere Delphi-Version ist.
Leider ist bei den Delphi PE-Versionen diese Datei nicht mit im Lieferumfang enthalten. Borland wünscht also offensichtlich nicht, dass PE-Benutzer die IDE-Integration verwenden dürfen.
Die Verwendung des Packages ist demnach in einer PE-Version illegal.
Das ist aber kein Grund, auf die Socket-Komponenten verzichten zu müssen, denn es ist statt dessen die Datei
ScktComp.dcu mit dabei, so dass eine dynamische Verwendung der Komponenten möglich und auch legal ist. Ein Beispiel dazu ist in Kapitel 3 angegeben. Zusätzlich wird in Kapitel 4 ein Trick erläutert, mit dem man die Sockets trotzdem auch in einer PE-Version wieder in die Komponentenpalette der IDE integrieren kann.
2. Die Socket-Komponenten nachinstallieren (nicht in PE-Versionen, bitte in Kapitel 3 oder 4 schauen!)
Wir klicken im Menü "Komponente" auf den Befehl "Packages installieren":
Im folgenden Dialog wählen wir den Button "Hinzufügen...":
Dann suchen wir im
\bin-Verzeichnis der Delphi-Installation (normalerweise
C:\Programme\Borland\Delphi7\Bin) die Datei
dclsockets70.bpl bzw. eine entsprechende Datei, falls es eine neuere Delphi-Version ist und klicken auf "Öffnen":
Das Package mit den Socketkomponenten wird jetzt neu in der Liste angezeigt:
Wir klicken auf den Button "Komponenten...", um zu prüfen, ob die richtigen Komponenten installiert wurden. Es sollte etwa folgendes Bild angezeigt werden:
Wir schließen beide Dialog mit "OK".
Falls die Komponenten jetzt noch nicht im Register "Internet" angezeigt werden, können wir die Komponentenpalette noch anpassen. Dazu klicken wir im Menü "Komponente" auf den Befehl "Palette konfigurieren...":
Im folgenden Dialog können wir nun links das Register "Internet" auswählen und rechts die darin befindlichen Komponenten gegebenenfalls anordnen:
Wenn die Socketkomponenten erfolgreich hinzugefügt wurden, sollte das Register "Internet" etwa so aussehen:
Die letzten beiden Komponenten sind der
TClientSocket und der
TServerSocket.
3. Socket-Komponenten dynamisch verwenden (auch PE-Versionen)
Die Socket-Komponenten lassen sich natürlich auch dynamisch anlegen und verwenden. Es fehlt dann lediglich die IDE-Integration, funktionale Einschränkungen gibt es nicht. Hier ein Beispiel mit dem
TClientSocket:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| uses ..., ScktComp;
type TForm1 = class(TForm) procedure DynConnectEvent(Sender: TObject; Socket: TCustomWinSocket); public ClientSocket1: TClientSocket; end;
procedure TForm1.FormCreate(Sender: TObject); begin ClientSocket1 := TClientSocket.Create(Form1); ClientSocket1.OnConnect := DynConnectEvent; ClientSocket1.Host := 'localhost'; ClientSocket1.Port := 12345; ClientSocket1.Active := TRUE; end;
procedure TForm1.DynConnectEvent(Sender: TObject; Socket: TCustomWinSocket); begin ShowMessage('Connect'); end; |
Hier ist ein ausführlicheres Tutorial zur Verwendung der Socket-Komponenten.
4. Socket-Komponenten in einer PE-Version trotzdem in die IDE integrieren
IDE starten, "Datei" > "Alle schließen" anklicken, dann "Datei" > "Neu" > "Unit" auswählen:
Den Quelltext der neuen Unit wie folgt übernehmen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| unit Socks; interface uses SysUtils, Classes, Controls, ExtCtrls, Scktcomp; procedure Register; implementation procedure Register; begin RegisterComponents('Internet', [TServerSocket]); RegisterComponents('Internet', [TClientSocket]); end; end. |
"Datei" > "Speichern unter..." anklicken und die Unit als
DelphiSockets.pas im
\Lib-Ordner der Delphi-Installation abspeichern (normalerweise
C:\Programme\Borland\Delphi7\Lib):
Dann im Menü "Komponente" > "Komponente installieren..." anklicken:
Die gerade gespeicherte Unit auswählen und auf "Öffnen" klicken:
Im folgenden Dialog einfach "OK" anklicken:
Im folgenden Dialog "Ja" anklicken:
Im folgenden Dialog "OK" anklicken:
Falls beim Schließen des Packages gefragt wird:
den Vorgang mit "Ja" bestätigen.
Anschließend sollten sich die Socket-Komponenten trotz PE-Version wieder in der IDE verwenden lassen.
Danke an
Tilman für den Hinweis auf diesen Trick.
There are 10 types of people - those who understand binary and those who don´t.