AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

eigenes Event programmieren?

Ein Thema von alleinherrscher · begonnen am 25. Mai 2006 · letzter Beitrag vom 25. Mai 2006
 
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#3

Re: eigenes Event programmieren?

  Alt 25. Mai 2006, 12:26
Vielen Dank, ich habe es mal soweit eingebaut.


Allerdings gibts leider eine exception, wenn ich im Hauptprogramm diese zuweisung mache:
(Sorry, da ich mich mit diesem Teil von Delphi nicht auskenne, mute ich euch hier etwas viel zu...)

lanfs_system.OnReceivedData:= Form2.test; Das ganze sieht jetzt so aus:

Delphi-Quellcode:
unit LANFS_KERNAL;

interface

uses SysUtils, Classes,
     IdBaseComponent,IdStreamVCL, IdComponent,
     IdTCPServer,IdTCPConnection,IdTCPClient,IdContext;

type

 TRECEIVEDDATA = procedure(Sender: TObject; MemStream: TMemoryStream) of Object;

 TLANFS_KERNAL = class
    fReceivedData: TRECEIVEDDATA;
 public
    procedure ReceiveStream(Acontext:TidContext);
    procedure Start(port:integer);
    procedure Stop();
    procedure SendStream(Stream: TFilestream;Host:String);

 property OnReceivedData: TRECEIVEDDATA read fReceivedData write fReceivedData;

 end;

  var LANFS_SYSTEM :TLANFS_KERNAL;
      TCPClient1: TIdTCPClient;
      TCPServer1: TIdTCPServer;

implementation

procedure TLANFS_KERNAL.Start(port:integer);
{
+Aktiviert TCPClient und TCPServer
+Sollte immer am Start des Programms aufgerufen werden.
+zuletzt editiert: 24.05.06
}

begin
TCPClient1:= TIdTCPClient.Create;
TCPClient1.Port:=Port;
with TCPClient1 do
begin
  ReadTimeout:=5000;
  ConnectTimeout:=5000;
end;

TCPServer1:= TIdTCPServer.Create;
TCPServer1.OnExecute := LANFS_SYSTEM.ReceiveStream;
with TCPServer1 do
begin
  MaxConnections:=1;
  DefaultPort:=Port;
  Active:=True;

end;
end;

procedure TLANFS_KERNAL.Stop();
{Stopt Server und Client, gibt Speicher frei.
zuletzt editiert: 24.06.05}

begin
TCPClient1.Free;
TCPServer1.Active:=False;
TCPServer1.Free;
end;

procedure TLANFS_KERNAL.SendStream(Stream: TFilestream;Host:String);
{
+Versendet vom TCPClient an TCPServer einen Filestream
+Dieser wird als Parameter übergeben, und muss vorher erzeugt worden sein.
+zuletzt editiert: 24.05.06
}

var
  IndyStream: TidStreamVCL;
begin
TCPClient1.Host:=Host;

  try
    IndyStream := TidStreamVCL.Create(Stream);
    try
      { Senden }
      with TCPClient1 do
      begin
        Connect;
        try
          Socket.Write(IndyStream, 0, true);
        finally
          Disconnect;
        end;
      end;
    finally
      FreeAndNil(IndyStream);
    end;
  finally
    FreeAndNil(Stream);
  end;
end;

procedure TLANFS_KERNAL.ReceiveStream(Acontext:TidContext);
{
+Empfängt vom TCPClient an TCPServer einen Filestream
+zuletzt editiert: 25.05.06
}

var
  FSTream: TMemoryStream;
  SizeOfIncomingStream: Integer;
  IDS: TidStreamVCL;
begin
  FStream := TMemoryStream.Create;
// FStream := TFileStream.Create('C:\test.tmp', fmCreate);
 try
    IDS := TidStreamVCL.Create(FStream);
    try
      { Empfangen }
      with AContext.connection do
      begin
        try
          SizeOfIncomingStream := Socket.ReadInteger;
          Socket.ReadStream(IDS, SizeOfIncomingStream);
        finally
          Disconnect;
        end;
      end;

      { Damit der Inhalt von IDS in FStream übertragen wird }
      IDS.VCLStream.Position := 0;
    finally
      FreeAndNil(IDS);
    end;
  finally

     {Event losschicken}
    if Assigned(fReceivedData) then
       fReceivedData(Self, FStream);

   FreeAndNil(FStream);
 end;



end;


end.
Liebe Grüße und VIELEN VIELEN DANK schonmal!!!!!!

//edit ich den Fehler, den xaromz gefunden hat, mal fix korrigiert, damit er keine Verwirrungen mehr macht! THX to xaromz
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  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 13:29 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