AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi idTCPServer in Konsole: Konsole soll nicht schließen
Thema durchsuchen
Ansicht
Themen-Optionen

idTCPServer in Konsole: Konsole soll nicht schließen

Ein Thema von Chris1986 · begonnen am 29. Apr 2004 · letzter Beitrag vom 29. Apr 2004
Antwort Antwort
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#1

idTCPServer in Konsole: Konsole soll nicht schließen

  Alt 29. Apr 2004, 17:04
Hallo,
ich versuche gerade einen simplen Chat-Server in einer Konsolen-Anwendung aufzubauen. Wie ich alle Komponenten erstelle und auch mit Ereignissen verbinden, weiß ich. Allerdings beendet sich das Programm sofort, nachdem es alle Befehle ausgeführt hat. Was muss ich tun, damit das Konsolenfenster geöffnet bleibt, der idTCPServer weiter läuft und ich zwischen durch noch mit writln Texte ausgeben kann (z.B. im Onconnect-Ereignis)?

Danke für eure Hilfe

MfG
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
shmia

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

Re: idTCPServer in Konsole: Konsole soll nicht schließen

  Alt 29. Apr 2004, 17:19
Zitat von Chris1986:
Was muss ich tun, damit das Konsolenfenster geöffnet bleibt, der idTCPServer weiter läuft und ich zwischen durch noch mit writln Texte ausgeben kann (z.B. im Onconnect-Ereignis)?
Du musst die Konsolenanwendung in einer Schleife aufhalten.
Delphi-Quellcode:
var
   ShutDownServer : boolean; // Globale Variable
begin
   ShutDownServer := False;

   // ...
   while not (ShutDownServer or Eof(Input)) do Sleep(50);
   // ...
end;
end.
Wenn du Strg-C drückst oder die Variable ShutDownServer auf True setzt,
endet die Konsolenanwendung.
Andreas
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: idTCPServer in Konsole: Konsole soll nicht schließen

  Alt 29. Apr 2004, 18:07
ahh, danke
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: idTCPServer in Konsole: Konsole soll nicht schließen

  Alt 29. Apr 2004, 19:03
Noch ne Frage:
bei writeln('Hallo DP . . .') schließt sich die Konsole nicht. Wenn ich Console.TCPServer.active := true aufrufe, wird die Konsole sofort geschlossen. Woran liegt das?

EDIT: Der Quelltext:

Delphi-Quellcode:
type
  TConsole = class(TObject)
    TCPServer: TIdTCPServer;
   constructor create;
  private
    procedure ServerConnect(AThread: TidPeerThread);
  public
  end;

constructor TConsole.Create;
begin
inherited Create;
  TCPserver := TIdTCPServer.Create(TCPServer);
  with TCPServer do
  begin
    OnConnect := ServerConnect;
  end;
end;

var
  Console: TConsole;
  ShutDownServer: boolean;

//Server Events-----------------------------------------------------------------
procedure TConsole.ServerConnect(AThread: TidPeerThread);
begin
   with AThread as TIdPeerThread do
   begin
      // hier kannst du z.B. den Namen und checked abfragen...
      writeln(AThread.Connection.LocalName);
   end;
end;
//Ende: Server Events-----------------------------------------------------------

begin
  writeln('Herzlich Willkommen.');
  Console.TCPServer.DefaultPort := 300;
  Console.TCPServer.active := true;// <= Konsolenfenster schließt sich im Anschluss
  while not (ShutDownServer{ or Eof(Input)}) do Sleep(50);
end.
Danke für eure Hilfe

Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: idTCPServer in Konsole: Konsole soll nicht schließen

  Alt 29. Apr 2004, 19:16
Zitat von Chris1986:
Noch ne Frage:
bei writeln('Herzlich Willkommen') schließt sich die Konsole nicht. Wenn ich Console.TCPServer.active := true aufrufe, wird die Konsole sofort geschlossen. Woran liegt das?

EDIT: Der Quelltext:

Delphi-Quellcode:
type
  TConsole = class(TObject)
    TCPServer: TIdTCPServer;
   constructor create;
  private
    procedure ServerConnect(AThread: TidPeerThread);
  public
  end;

constructor TConsole.Create;
begin
inherited Create;
  TCPserver := TIdTCPServer.Create(TCPServer);
  with TCPServer do
  begin
    OnConnect := ServerConnect;
  end;
end;

var
  Console: TConsole;
  ShutDownServer: boolean;

//Server Events-----------------------------------------------------------------
procedure TConsole.ServerConnect(AThread: TidPeerThread);
begin
   with AThread as TIdPeerThread do
   begin
      // hier kannst du z.B. den Namen und checked abfragen...
      writeln(AThread.Connection.LocalName);
   end;
end;
//Ende: Server Events-----------------------------------------------------------

begin
  ShutdownServer := false;
  writeln('Herzlich Willkommen.');
  Console.TCPServer.DefaultPort := 300;
  Console.TCPServer.active := true;// <= Konsolenfenster schließt sich im Anschluss
  while not ShutDownServer do Sleep(50);
end.
Danke für eure Hilfe

Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  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 05:35 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