Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TIdTCPServer zur laufzeit erstellen (https://www.delphipraxis.net/21066-tidtcpserver-zur-laufzeit-erstellen.html)

SleepyMaster 27. Apr 2004 15:48


TIdTCPServer zur laufzeit erstellen
 
Hi ihrs!

Weiß jemand wie ich das hinbekomme??? (Ohne ein Forumlar)

Delphi-Quellcode:
var
  IdTCPServer1: TIdTCPServer;

begin
IdTCPServer1:=TIdTCPServer.Create(nil);
with IdTCPServer1 do
  begin
  DefaultPort:=1234;
  Active:=true;
  end;
end.
soweit komm ich ja noch aber wenn ich dann auch will, dass was passiert, wenn der Server was empfängt:

Delphi-Quellcode:
var
  IdTCPServer1: TIdTCPServer;

procedure IdTCPServer1Execute(AThread: TIdPeerThread);
begin
//
end;

begin
IdTCPServer1:=TIdTCPServer.Create(nil);
with IdTCPServer1 do
  begin
  OnExecute:=IdTCPServer1Execute; // Will Borland nicht!
  DefaultPort:=1234;
  Active:=true;
  end;
end.
Spielt Borland nicht mehr mit!
Kennt jemand ne lösung???

Vielen Dank schon mal!

fiasko 27. Apr 2004 16:51

Re: TIdTCPServer zur laufzeit erstellen
 
Du brauchst dafür was vom Typ:

Delphi-Quellcode:
TIdServerThreadEvent = procedure (AThread: TIdPeerThread) of object;
also ne Methode von einem Objekt.

SleepyMaster 27. Apr 2004 17:37

Re: TIdTCPServer zur laufzeit erstellen
 
und wie bekomm ich das ohne ein Formular hin???

Meflin 27. Apr 2004 17:55

Re: TIdTCPServer zur laufzeit erstellen
 
das dürfte nicht gehen, da ein idtcpserver ein parent braucht!

supermuckl 27. Apr 2004 18:16

Re: TIdTCPServer zur laufzeit erstellen
 
ähm
geht doch viel einfacher ?!

mach mal n form und da druff einen idtcpserver und dann doppelklicke im onexecute ereignis und dann macht er ja eine funktion oder procedure

dann kopierste einfach dieses gerüst und oben natürlich in der deklaration auch den teil dafür

und den benutzt du dann in deinem formlosen projekt.

als parent ( owner ) nimmste einfach mal self oder nil.. probier mal rum
oder wenns ein windows service wird nimmste den namen des services geht glaub auch..

jedenfalls gehts !

hab grad keine zeit zum testen wie genau

SleepyMaster 27. Apr 2004 21:06

Re: TIdTCPServer zur laufzeit erstellen
 
Also seit ihr alle der Meinung, dass nicht druherumkomme ein Formular/Service zu benutzen???

Kann doch nicht sein! Irgendwie muss es doch auch ohne gehen!

fiasko 27. Apr 2004 21:19

Re: TIdTCPServer zur laufzeit erstellen
 
Das hab ich nicht gesagt, und supermuckl meint glaubig das gleiche. Du brauchst nur eine Klasse, z.B. mit folgendem ungetestetem Code:

Delphi-Quellcode:
type
  TFoo = class(TObject)
    procedure Bar(Sender: TObject);
  end;

procedure TFoo.Bar(AThread: TIdPeerThread);
begin
  // Blah
end;

var
  IdTCPServer1: TIdTCPServer;
  Foo: TFoo;

begin
  IdTCPServer1 := TIdTCPServer.Create(nil);
  Foo := TFoo.Create();
  try
    with IdTCPServer1 do
    begin
      OnExecute:=Foo.Bar;
      DefaultPort:=1234;
      Active:=true;
    end;
  finally
    Foo.Free;
    IdTCPServer1.Free;
  end;
end.
[edit]
Man könnte natürlich auch einfach die Indy Klasse ableiten...
[/edit]

DataCool 27. Apr 2004 23:24

Re: TIdTCPServer zur laufzeit erstellen
 
Hi,

warum kompliziert, wenn's auch einfach geht :
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
      procedure Button1Click(Sender: TObject);
  private
      { Private-Deklarationen }
      procedure myExecute(AThread: TIdPeerThread);
   public
      { Public-Deklarationen }
   end;

var
   Form1: TForm1;

implementation

var IdTCPSvr : TIdTCPServer;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
   IdTCPSvr := TIdTCPServer.Create(nil);
   IdTCPSvr.DefaultPort := 1234;
   IdTCPSvr.OnExecute := myExecute;
   IdTCPSvr.Active := true;
end;

procedure TForm1.myExecute(AThread: TIdPeerThread);
begin
   // hier Den Execute-Code einfügen
end;

end.
Gruß Data

SirThornberry 27. Apr 2004 23:27

Re: TIdTCPServer zur laufzeit erstellen
 
@DataCool: Er wollte kein Formular - und nen object zu erstellen wo man das reinpackt ist ja nicht wirklich kompliziert

DataCool 28. Apr 2004 10:08

Re: TIdTCPServer zur laufzeit erstellen
 
@SirThornberry:

Ob mit oder ohne Formular, die Verwendung ist die gleiche !!
Der IdTcpServer wird hier zur Laufzeit erstellt und sitzt nicht auf der Form !

Gruß Data


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Seite 1 von 2  1 2      

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