Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TFilestream - Datei in Benutzung (https://www.delphipraxis.net/158650-tfilestream-datei-benutzung.html)

simmi 25. Feb 2011 08:36

TFilestream - Datei in Benutzung
 
Hallo,

ich habe bereits hier im Forum gesucht, jedoch keine passende Hilfe gefunden. Ich öffene eine Datei, bearbeite sie, speichere die Datei und geben die Variablen frei. Beim 2. Aufruf der Procedur kommt die Fehlermeldung "Datei wird von einem anderen Nutzer bearbeitet", ist aber völliger blödsinn. Datei wird heruntergeladen und nur von meinem Programm genutzt. Wie gesagt, beim ersten Aufruf funktioniert es immer richtig:glaskugel:.

Habe ich irgendwo etwas vergessen????

Delphi-Quellcode:
procedure TForm1.b5Click(Sender: TObject);
type
PBuffer = ^TBuffer;
TBuffer = array [0..1000000] of byte; //Dateigröße variabel zwischen 30 KB und 950 KB

var
   dtx, dty   : TFileStream;
   Buffer     : PBuffer;
   ii         : int64;
   
begin
.
.
new(Buffer);
dtx:=TFileStream.Create(OpenDialog1.Filename, fmOpenRead);
dtx.Read(buffer^[0],dtx.Size);

ii:=0;
repeat
  //Byteweise verarbeitung der Daten
until ii>dtx.Size;

ii:=dtx.Size;

dty := TFileStream.Create(pfad+'\test.txt', fmCreate);
dty.Write(buffer^[0],ii);

dty.Free;
dtx.Free;
dispose(buffer);
.
.
.
deletefile(opendialog1.FileName);
deletefile(pfad+'\test.txt');
.
.
end;

p80286 25. Feb 2011 08:48

AW: TFilestream - Datei in Benutzung
 
Zunächst einmal arbeitest Du mit zwei Dateien.
Am Ende der Verarbeitung werden beide gelöscht.
Bei welcher Datei tritt der Fehler auf?
Warum willst du auf gelöschte Dateien wieder zugreifen?

Gruß
K-H

simmi 25. Feb 2011 09:10

AW: TFilestream - Datei in Benutzung
 
ich gebe den Speicher frei und lösche dannach die Dateien (Datenschutz). Beim nächsten Durchlauf wird eine neue heruntergeladene Datei verarbeitet. Diese hat auch einen neuen Dateinamen.

Trotzem hat Deine Frage geholfen weil ich den Fehler nun selbst entdeckt habe. Ich habe die Textdatei im weiteren Ablauf noch einmal geöffnet (als textfile) und das closefile:wall: vergessen. Dadurch wurde im 2. Durchlauf der Fehler ausgelöst.

Danke.

SirThornberry 25. Feb 2011 11:54

AW: TFilestream - Datei in Benutzung
 
Zitat:

Zitat von simmi (Beitrag 1084315)
und lösche dannach die Dateien (Datenschutz)

Wäre es nicht sinnvoller die Daten dann entweder gar nicht auf die Festplatte zu schreiben oder nur in verschlüsselter Form?

simmi 25. Feb 2011 14:36

AW: TFilestream - Datei in Benutzung
 
Natürlich wäre es besser und ich weiß auch das die Datei aus einer MYSQL Tabelle stammen, aber leider:( bekomme ich die Daten nur aus dem Webportal als download zur Verfügung gestellt. Alles andere wäre ja auch zu einfach...

himitsu 25. Feb 2011 14:42

AW: TFilestream - Datei in Benutzung
 
Indy bietet es auch an, daß man eine Datei in einen Stream downladet und nicht in eine Datei.

simmi 25. Feb 2011 14:49

AW: TFilestream - Datei in Benutzung
 
Auch das wäre noch eine gute Möglichkeit, man lässt mich aber einfach nicht an Ursprungsdaten ran, weder mit einem direkten Datenbankzugriff noch mit indy...

DP-Maintenance 25. Apr 2011 20:05

Dieses Thema wurde am "25. Apr 2011, 21:05 Uhr" von "Matze" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Object-Pascal / Delphi-Language" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 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