![]() |
Consolen Application & TClientSocket ?
Guten Abend,
ich würde gerne eine Consolen Application schreiben, welche sich mit dem IRC-Netzwerk verbindet. Normalerweise arbeite ich mit dem TClientSocket auf GUI Ebene. Bei einer Console kann man aber sowas natürlich nicht platzieren. :D Ich habe schon versucht, einfach eine Variable als TClientSocket zu deklarieren und dann die Events selbst zuzuweisen. Aber das wollte Delphi irgendwie nicht. :( Desshalb frage ich euch: Kann ich irgendwie trotzdem die Komponente benutzen? Oder muss ich mich anderen Methoden bedienen? Wenn ja, welche würdet ihr empfehlen? Ich würde mich über Hilfe freuen. :) MfG: sk0r |
Re: Consolen Application & TClientSocket ?
Du kannst die Komponente zur Laufzeit erzeugen. Einfach als TClientSocket deklarieren und dann über Create erzeugen.
|
Re: Consolen Application & TClientSocket ?
Aber dann musst du selbst die Nachrichten abfragen und kannst du kein einfaches readln() mehr benutzen. Kurz gefasst: Lass die VCL für dich arbeiten.
Falls du es dir dennoch nicht ausreden lassen willst, ![]() |
Re: Consolen Application & TClientSocket ?
Geht genauso wie ein Timer in einer Konsole benutzen:
![]() |
Re: Consolen Application & TClientSocket ?
das hatte ich auch mal mit den Indys...
ich hab dann einfach eine klasse erstellt und IdHTTP und deren Ereignisse in dieser klasse deklariert. |
Re: Consolen Application & TClientSocket ?
@Luckie
Wo wird denn in deinem Programm ein Event bearbeitet? :gruebel: |
Re: Consolen Application & TClientSocket ?
Delphi-Quellcode:
Etwas unglücklich benannt.
procedure NotifyEvent(Self: TMethodPointer; Sender: TObject);
begin writeln('yes'); beep; end; |
Re: Consolen Application & TClientSocket ?
Deine Prozedur-Methode :mrgreen: habe ich schon gesehen. Das ist sicherlich auch das, was du meintest: Aus einer simplen Funktion eine Methode machen.
Nur dir ist hoffentlich bewusst, dass dein Timer sie im Moment nicht auslöst. Dies geschieht derezit nur direkt:
Delphi-Quellcode:
So ist es für den Timer:
for i := 1 to 5 do
begin sleep(500); writeln('warte ' + inttostr(i * 500) + 'ms...'); NotifyEvent(p, T); // <-- hier wird die Prozedur ganz nomral aufgerufen //Der Timer ist völlig überflüssig end;
Delphi-Quellcode:
Wobei man allerdings bei nem Timer ohne Klasse hier ja mal viel schneller über die WInApi ist. (Das ist dir sicherlich auch bewusst.)
for i := 1 to 5 do
begin sleep(500); writeln('warte ' + inttostr(i * 500) + 'ms...'); while peekmessage(msg,0,0,0,pm_remove) do dispatchmessage(msg); end; Letzteres bringt mich allerdings wieder zurück zum Thema: Kann es vielleicht nicht günstiger sein, die Sockets direkt über die WinApi zu machen (ich habe damit noch keine Erfahrung), als VCL-Kompos in eine nonGUI-Anwendung mit erhöhten Aufwand hineinpressen zu wollen? Zumal die Unit scktcomp nicht grade knausrig an VCL-Ressorucen ist. Wenn man die scktcomp einbindet, kann man eigentlich auch gleich ein VCL-Anwendung schreiben. |
Re: Consolen Application & TClientSocket ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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