AGB  ·  Datenschutz  ·  Impressum  







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

Indy Mysterium

Ein Thema von Interritor · begonnen am 12. Jun 2004 · letzter Beitrag vom 13. Jun 2004
Antwort Antwort
Interritor

Registriert seit: 28. Jul 2003
30 Beiträge
 
#1

Indy Mysterium

  Alt 12. Jun 2004, 21:07
Hi zusammen,

Ich Programmier gerade eine Client\Server Anwendung mit der man Datein hin und her schicken kann. Jetzt stoß ich auf ein sehr komisches Problem und zwar wenn ich im IdTCPServer1Execute einen IF Abfrage mehr einbaue geht garnichts mehr d.h. er trennt die verbindung obwohl diese Anweisung nichts weiter macht als was in eine Memo zu schreiben. Nehm ich diese Anfrage raus funktioniert alles wieder wunderbar, ich versteh das einfach nicht.

Hoffe einer von euch kannmir helfen oder hat eine Idee.....

mfg
Andre
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Indy Mysterium

  Alt 12. Jun 2004, 21:10
Abend Interritor,

Was frägst du denn ab ? Poste doch mal bitte n bissl Code.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Interritor

Registriert seit: 28. Jul 2003
30 Beiträge
 
#3

Re: Indy Mysterium

  Alt 12. Jun 2004, 21:19
Ja sicha, nicht über den code wundern ist noch absolute Test-Pfhase sind auch noch paar Test Outputs drinne:

Delphi-Quellcode:

rocedure TfrmMain.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  fs: TFileStream;
  SizeOfIncomingStream: integer;
  NameOfIncomingStream : String;
  DateOfIncomingStream : String;
  flgsenden : Boolean;
begin
  NameOfIncomingStream := 'C:\test\'+ AThread.Connection.ReadLn;
  DateOfIncomingStream := AThread.Connection.ReadLn;

  if FileExists(NameOfIncomingStream) then begin

      // Das ist die besagte IF Abfrage
      if strtoint(FormatDateTime('dmyyyyhns',GetFileModifyDate(NameOfIncomingStream))) < strtoint(DateOfIncomingStream) then begin
        memo1.Lines.Add ('Kleiner');
      end;
      Memo1.Lines.Add ('False');
      Memo1.Lines.Add (DateOfIncomingStream);
      flgSenden := False;
  end
  else begin
    Memo1.Lines.Add (NameOfIncomingStream + ' true');
    flgSenden := True;
  end;

   
  if flgSenden = False then begin
  try
      AThread.Connection.WriteLn ('Close');
      Memo1.Lines.Add (NameOfIncomingStream + ' nicht senden');
  finally
     AThread.Connection.Disconnect;
  end;
  end
  else begin
    AThread.Connection.WriteLn ('Send');
    Memo1.Lines.Add (NameOfIncomingStream + ' senden');
    fs := TFileStream.Create(NameOfIncomingStream , fmCreate or fmShareExclusive);
    with AThread.Connection do
      try
        SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
        ReadStream(fs, SizeOfIncomingStream); //und übergeben
      finally
        Disconnect;
        fs.Free;
      end;
    end;
end;
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Indy Mysterium

  Alt 12. Jun 2004, 21:26
hm, dann setz mal haltepunkte, und schau was in NameOfIncomingStream und in DateOfIncomingStream drin steht, ich vermute mal das beide informationen in NameOfIncomingStream steht, und somit nichts mehr für DateOfIncomingStream übrig ist.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Indy Mysterium

  Alt 13. Jun 2004, 01:39
oder vielleicht weil du aus einem thread heraus aufs form zugegriffen hast ohne synching ?!
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Indy Mysterium

  Alt 13. Jun 2004, 09:03
Hallo,
supermuckl hat recht. Obwohl das OnExecute Event des IndyServers in der unit des Formulars steht
bedeutet das noch lange nicht, dass diese Methode auch im Hauptthread der Anwendung ausgeführt wird.
Bei den Indy's wird das OnExceute Event im Kontext des IndyThread's ausgeführt. Deshalb halb
sind irgendwelche Synchronisationsmechanismen erforderlich. Ich würde es mal mit Synchronize versuchen.
I come from outer space to save the human race
  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 22:27 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