AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TFilestream in Schleife funktioniert nur einmalig
Thema durchsuchen
Ansicht
Themen-Optionen

TFilestream in Schleife funktioniert nur einmalig

Ein Thema von gabneo · begonnen am 2. Aug 2016 · letzter Beitrag vom 6. Aug 2016
 
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TFilestream in Schleife funktioniert nur einmalig

  Alt 2. Aug 2016, 13:49
Delphi-Version: XE
Hallo,

hat jemand eine Idee warum folgender Code in der Schleife nach einem Durchlauf hängen bleibt?

Delphi-Quellcode:
for i := flist.Count-1 downto 0 do
begin
  sFilename := extractfilepath(paramstr(0)) + flist[i].NodeValue;
  sFile := TFileStream.Create(sFilename, fmCreate);
  try
    fparams.Text := 'RPC=download';
    fparams.Add('file=' + flist[i].NodeValue);
    Queue ( procedure begin Form2.log('Post'); end);
    fhttp.Post(TIdURI.URLEncode(fURL), fparams, sFile);
  finally
    fhttp.Disconnect;
    sFile.Free;
    Queue ( procedure begin Form2.log('SetFileDate'); end);
    SetFileDate(sFilename, UnixToDateTime(flist[i].Attributes['timestamp']));
    // --> hier hört er nach einem Durchlauf auf <-- das Filedate wird noch einwanfrei gesetzt....
  end;
end;
Ich vermute es gibt ein Problem mit dem Filestream und dem Beschreiben dessen durch indy (idHttp). Es gibt keine Exception. Das Programm hängt sich einfach nur auf.

Mit einem Handle hatte ich leider auch keinen Erfolg:
Delphi-Quellcode:
for i := flist.Count-1 downto 0 do
begin
  if (pos(flist[i].NodeValue + #255 + flist[i].Attributes['timestamp'], currentList.Text) > 0) then continue; //Datumsvergleich
  Queue ( procedure begin Form2.log('entry ' + inttostr(i) + ': ' + flist[i].NodeValue + #255 + flist[i].Attributes['timestamp']); end);
  //Download
  sFilename := extractfilepath(paramstr(0)) + flist[i].NodeValue;
  //sFile := TFileStream.Create(sFilename, fmCreate);
  Handle1 := CreateFile(PChar(sFilename), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  fileStream := THandleStream.Create(Handle1);
  try
    fparams.Text := 'RPC=download';
    fparams.Add('file=' + flist[i].NodeValue);
    Queue ( procedure begin Form2.log('Post'); end);
    fhttp.Post(TIdURI.URLEncode(fURL), fparams, fileStream); //sFile
    Queue ( procedure begin Form2.log('Nächster'); end);
  finally
    fhttp.Disconnect;
    //sFile.Free;
    fileStream.Free;
    CloseHandle(Handle1);
    //Queue ( procedure begin Form2.log('SetFileDate'); end);
    SetFileDate(sFilename, UnixToDateTime(flist[i].Attributes['timestamp']));
end;
Was mache ich falsch?
LG

Geändert von gabneo ( 2. Aug 2016 um 13:50 Uhr) Grund: Titel eindeutiger, falsche Delphi Version
  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 09:20 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