AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Wie TClientSocket in einer dll verwenden ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie TClientSocket in einer dll verwenden ?

Ein Thema von Logimator · begonnen am 28. Jul 2011 · letzter Beitrag vom 28. Jul 2011
 
Logimator

Registriert seit: 28. Jul 2011
1 Beiträge
 
#1

Wie TClientSocket in einer dll verwenden ?

  Alt 28. Jul 2011, 15:34
Hallo,

ich möchte gernen in einer dll mittels TClientSocket von einem NTP-Server die Atomzeit erfragen, und diese mittels einer Funktion zurück geben. In einer normlen Delphi-App funktioniert das tadellos, nur sobald ich den Code in eine dll stecken möchte, funktioniert das nicht. Für mich sieht's so aus, als der TCLientSocket keinerlei Messages bekommt oder bearbeitet. Bin aber was dll's anbelangt absolut grün hinter den Ohren
Wäre echt nett, wenn mir jemand helfen könnte

Das hier ist meine dll ...

Code:
library NTPTest;

uses ShareMem,
  SysUtils,
  Classes,
  Dialogs, Forms, Windows,
  MainUnit in 'MainUnit.pas' {DataModule1: TDataModule};

{$R *.res}

begin
     IsMultiThread := TRUE;
     DataModule1:=TDataModule1.Create(nil);
end.

... und hier die zugehörige Unit, die die Arbeit erledigen soll ...
Die Funktion, die die Zeit liefern soll ist die GetNTPHour. Das lustige ist, wenn das ShowMessage in der Funktion einkommentiert wird, geht's einwandfrei. Sobald die ShowMessage kommentiert wird, geht's nicht mehr

Code:
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ScktComp;

type
  TDataModule1 = class(TDataModule)
    TimeSocket: TClientSocket;
    procedure TimeSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure TimeSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure TimeSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }


  public
    { Public-Deklarationen }
    function GetNTPHour( myText: pchar): Integer; stdcall;
  end;

var
  DataModule1: TDataModule1;
  str_Act_Ation: String;
  Datum, Uhrzeit: string;

implementation

{$R *.dfm}



function TDataModule1.GetNTPHour( myText: pchar): Integer; stdcall;
var
   i_Hour: Integer;
    i: Integer;
   Zahl: Array [1..4] of Byte;
   Sekunden: Longword;
   Zeitzone: Real;
   DatumZeit: TDateTime;
begin


        TimeSocket.Host := 'ptbtime1.ptb.de';
        TimeSocket.Port := 37;

        TimeSocket.Open;

        //ShowMessage('In Function GetNTPHour' ) ; <-----  Wenn das einkommentiert ist, geht's

        Result := 1;
end;

procedure TDataModule1.TimeSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 i_Hour: Integer;
    i: Integer;
   Zahl: Array [1..4] of Byte;
   Sekunden: Longword;
   Zeitzone: Real;
   DatumZeit: TDateTime;
begin
        Socket.ReceiveBuf(Zahl, 4);
        // Bytes vertauschen
        for i := 1 to 4 do
           Sekunden := Sekunden * 256 + Zahl[i];

     //   Socket.Close;

        Zeitzone := 2/24; // Winterzeit: +1/24, Sommerzeit: +2/24;
        DatumZeit := EncodeDate (1900,1,1)    { 1.1.1900 }
                      + Sekunden/86400            { + Tage }
                      + Zeitzone;                { + Zeitzone gegenüber GNT }

        Datum := DateTimeToStr (trunc(DatumZeit));
        Uhrzeit := DateTimeToStr (DatumZeit);
        Delete (Uhrzeit,1,Pos(' ',Uhrzeit));

        ShowMessage('Datum: ' + Datum + ' Uhrzeit ' + Uhrzeit + ' Secs: ' + IntToStr( Sekunden) ) ;
end;

procedure TDataModule1.TimeSocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
      ShowMessage('Error: ' ) ;
      ErrorCode := 0;
end;

procedure TDataModule1.TimeSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
          ShowMessage('Socket connect ' ) ;
end;

end.
  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 14:07 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