![]() |
Muktiple Datentypen mit "with .. as" elegant verwe
Hey,
folgendes Szenario: Ich habe mir eine ClientSocket Implementation geschrieben. Dazu habe ich erstmal eine TCustomSocket Klasse erstellt. Von dieser leite ich ein TStandardSocket, ein TSOCKS4Socket und ein TSOCKS5Socket ab. In meinem Programm soll es nun eine Option geben, ob ein Proxy verwendet werden soll. Wie relalisiere ich Codetechnisch diesen Abschnitt möglichst elegant?
Delphi-Quellcode:
Der Code zwischen dem Create und Free bleibt ja praktisch gleich bis auf eine winzige Änderung am Anfang, weil das ProxySocket halt noch die Adresse des Proxys und dessen Port benötigt.
var
Socket: TCustomSocket; begin if dwProxy = 0 then begin with Socket as TStandardSocket do begin Create; try // Viel Code finally Free; end; end; end; if dwProxy = 1 then begin with Socket as TSOCKES4Socket do begin Create; try // Viel Code finally Free; end; end; end; // ... end; Gibt ja für Variablen sowas wie die Kennung als absolute. Wenn es sowas auch dymnamisch geben würde, also dass bei dwProxy = 0 Socket = absoulte SOCKS4Proxy ist. Gruß |
Re: Muktiple Datentypen mit "with .. as" elegant v
Kannst du nicht einfach dein Socket erzeugen und anschließend über Methoden und Eigenschaften der Basisklasse darauf zugreifen? Setzt natürlich voraus, dass so gut wie alles, was mit den Sockets gemacht werden muss, sich nur in der Implementierung und nicht im Interface unterscheidet. Das Buzzword "Factory" kommt mir da in den Kopf. Wenn einer der Sockets zusätzliche Informationen benötigt, die die anderen nicht kennen, kannst du diese ja auch als Konstruktorparameter übergeben. Also grundsätzlich, wie auch immer du es genau machst, Pseudocode:
Delphi-Quellcode:
var socket: TCustomSocket;
socket := SocketFactory.CreateSocket(proxyType); try // ... tue alles mit socket, was für alle gemeinsam ist finally socket.Free; end |
Re: Muktiple Datentypen mit "with .. as" elegant v
Stimmt das wäre eine Idee .. ich könnte auch einfach nur zum Createn und für den Zugriff auf die ProxyPort und ProxyType Eigenschaften nach TSOCKS5Socket typecasten und den Rest alles mit
Delphi-Quellcode:
erledigen. Auf das Einfachste kommt man meistens nicht :wall: Vielen Dank ..
with Socket as TStandardSocket do
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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