AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TIdTCPServerConnection an Dll übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

TIdTCPServerConnection an Dll übergeben

Ein Thema von F.W. · begonnen am 24. Apr 2006 · letzter Beitrag vom 25. Apr 2006
 
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

TIdTCPServerConnection an Dll übergeben

  Alt 24. Apr 2006, 00:37
Hallo zu so später (oder früher? ) Stunde!

Ich arbeite jetzt schon seit Tagen an einem Problem:

Ich arbeite mit den Indycompos und habe einen TIdTCPServer auf meinem Formular.
Jetzt möchte ich beim ServerExecute die Connection an eine dynamisch geladene Dll geben, damit die dann einige Readln und Writeln Befehle druchführt.

Wie kann ich das bewerkstelligen?

Ich habe schon etwas, aber das funktioniert nicht so recht:
Code des Programms:
Delphi-Quellcode:
type
  TServerExecute = function(Con: TIdTCPServerConnection): Boolean; stdcall;

  { ... }

function TMainForm.PluginExecute(Con: TIdTCPServerConnection): Boolean;
var
 SExec: TServerExecute;
begin
 
 Result := False;
 if not ActPlugin.Loaded then begin
    Exit;
 end;

 @SExec := GetProcAddress(ActPlugin.Handle, 'ServerExecute');
 if @SExec <> NIL then begin
    Result := SExec(Con);
 end;
end;

procedure TMainForm.ServerExecute(AThread: TIdPeerThread);
var
 S: String;
 FS: TFileStream;
 L: TStrings;
begin
 with AThread.Connection do begin
   S := Readln;

   { ... }

   if S = 'PLUGINCALLthen begin
      PluginExecute(AThread.Connection);
   end;
 end;
end;
Code der Dll:
Delphi-Quellcode:
function ServerExecute(Con: TIdTCPServerConnection): Boolean; stdcall; export;
var
 S: String;
begin
 Result := False;
 S := Con.Readln;

 if S = 'GET DATETIMEthen Con.WriteLn(DateTimeToStr(Now));

 Result := True;
end;
Ich kann das ganze einmal machen, ein zweites Mal erscheint dann eine Zugriffsverletzung und danach eine EIdConnClosedGracefully Exception.
Ich habe die Dll zwischendurch nicht aus dem Speicher genommen oder sie anders angerührt!

Am Code selbst oder am aufrufenden Client kanns auch nicht liegen, denn wenn ich den Code der Dll in die Exe kopiere und so auf den Dll-Aufruf verzichte funtzt alles!

Gruß Wyski
  Mit Zitat antworten Zitat
 


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 02:01 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