AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Consolen Application & TClientSocket ?
Thema durchsuchen
Ansicht
Themen-Optionen

Consolen Application & TClientSocket ?

Ein Thema von sk0r · begonnen am 23. Aug 2007 · letzter Beitrag vom 23. Aug 2007
Antwort Antwort
sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#1

Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 19:45
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 19:46
Du kannst die Komponente zur Laufzeit erzeugen. Einfach als TClientSocket deklarieren und dann über Create erzeugen.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 19:50
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, hier zeigt Sirius, wie es geht.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:06
Geht genauso wie ein Timer in einer Konsole benutzen:
http://www.michael-puff.de/Developer...n_Konsole.html
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:10
das hatte ich auch mal mit den Indys...
ich hab dann einfach eine klasse erstellt und IdHTTP und deren Ereignisse in dieser klasse deklariert.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:29
@Luckie
Wo wird denn in deinem Programm ein Event bearbeitet?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:36
Delphi-Quellcode:
procedure NotifyEvent(Self: TMethodPointer; Sender: TObject);
begin
  writeln('yes');
  beep;
end;
Etwas unglücklich benannt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:51
Deine Prozedur-Methode 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:
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;
So ist es für den Timer:
Delphi-Quellcode:
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;
Wobei man allerdings bei nem Timer ohne Klasse hier ja mal viel schneller über die WInApi ist. (Das ist dir sicherlich auch bewusst.)

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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#9

Re: Consolen Application & TClientSocket ?

  Alt 23. Aug 2007, 20:59
Zitat von sirius:
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.
Ähhhh lass es mich so sagen das ich schon selber mit den WinAPI Funktionen gearbeitet habe, ohne Komponente müsstest du dich um das Socket Handling, Error Handling, Multitasting und die Einstellung der Socket kümmern. Ne Bissel aufwändig für dein Programm oder ?
Programmieren ..... .
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:23 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