![]() |
Filestream Datei nicht gefunden bei FOpenWrite
Delphi-Quellcode:
Compiler meldet Datei nicht gefunden..
if (FileExists(FileOne)) then
begin GetImageSizeFromFile(FileOne, Width, Height); FileStream := TFileStream.Create(FileOne, fmOpenRead); if FileStream.Handle <> INVALID_HANDLE_VALUE then begin BufferSize := FileStream.Size; SetLength(sBuffer, BufferSize); FileStream.Read(sBuffer[0], BufferSize); if Assigned(sBuffer) then begin Offset := BufferSize + 1; FileStream.Free; FileStream := TFileStream.Create(FileOut, fmOpenWrite); Logisch die will ich doch mit
Delphi-Quellcode:
TFileStream.Create(FileOut, fmOpenWrite);
erst erstellen. Hab ich da nen Denk Fehler ? Mit
Delphi-Quellcode:
CreateFile(PWideChar(FileOut), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
funktioniert es mit dem FileStream aber nicht. gruss |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
Probiere es mal mit fmCreate. |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
Nur kann man dann noch schreiben ? EDIT: Ach ich mache es mit der API. Zuviel Stress jetzt ;) gruss |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
![]() |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
Aber auf deinen Tip wäre ich nicht gekommen. Thema hat sich erledigt! Habe es mit Win32 API mitteln gemacht. gruss |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
fmCreate erstellt eine neue Datei und überschreibt notfalls eine Besehende. fmOpenWrite öffnet eine bestehende Datei und löscht dabei den Inhalt. Und genau das selbe Problem hat man auch mit der WinAPI, wenn man da eben statt CREATE_ALWAYS (fmCreate) ein TRUNCATE_EXISTING (fmOpenWrite) verwendet. Zitat:
|
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
gruss |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Zitat:
Verstehe dich nicht so ganz. Die API ist ein ganzes Stück komplizierter und unbequemer. Du musst natürlich selbst wissen wie du gerne programmieren möchtest aber die direkte Nutzung der Windows API ist eigentlich nur selten notwendig. Mit den Klassen oder Funktionen der RTL wird dein Code deutlich einfacher und übersichtlicher und diese Klassen sind grundlegend einfacher zu benutzen als die APIs. Mit ein wenig Einarbeitung könntest du dir theoretisch ne Menge Arbeit/Ärger sparen ;) |
AW: Filestream Datei nicht gefunden bei FOpenWrite
OK, die alten Konstanten haben ein paar Nachteile, gegenüber aktuelleren Implementationen mit Enums.
Oder man nimmt die aktuellere API ![]() TFile.Exists TFile.Create TFile.Open TFile.OpenRead TFile.OpenWrite (fmOpenWrite) TFile.Delete TFile.AppendText TFile.OpenText TFile.ReadAllLines TFile.ReadAllText TFile.ReadAllBytes, wobei hier bestimmt eine Variante mit Offset+Länge auch ganz nett wäre. (kann man sich aber über Class Helper nachrüsten, wenn Emba das nicht hinbekommt) uvm. PS: API? Windows-API (z.B. Win32 ... heißt unter 64 Bit genauso, da die selben Schnittstellen ... WinRT wäre eine andere Windows-API) Delphi-API (z.B. RTL) |
AW: Filestream Datei nicht gefunden bei FOpenWrite
Läuft doch alles auf's gleiche raus.
Wenn ich bei der API oder bei TFile die falsche Funktion/Parameter nehme, geht's halt nicht/kommt ne Exception. Und, soooo kompliziert ist TFileStream je nun auch nicht. In Anbetracht des obigen Codes wäre das ein Parameter zu ändern gewesen. Somit verstehe ich die ganze Diskussion nicht. ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 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