Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Filestream Datei nicht gefunden bei FOpenWrite (https://www.delphipraxis.net/192194-filestream-datei-nicht-gefunden-bei-fopenwrite.html)

EWeiss 28. Mär 2017 05:52

Filestream Datei nicht gefunden bei FOpenWrite
 
Delphi-Quellcode:
          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);
Compiler meldet Datei nicht gefunden..
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

samso 28. Mär 2017 06:00

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von EWeiss (Beitrag 1365708)

Compiler meldet Datei nicht gefunden..

Der Compiler?

Probiere es mal mit fmCreate.

EWeiss 28. Mär 2017 06:03

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von samso (Beitrag 1365709)
Zitat:

Zitat von EWeiss (Beitrag 1365708)

Compiler meldet Datei nicht gefunden..

Der Compiler?

Probiere es mal mit fmCreate.

Ah danke versuche es mal.
Nur kann man dann noch schreiben ?

EDIT:
Ach ich mache es mit der API.
Zuviel Stress jetzt ;)


gruss

Lemmy 28. Mär 2017 06:06

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von EWeiss (Beitrag 1365710)
Ah danke versuche es mal.
Nur kann man dann noch schreiben ?

versuch es... oder vielleicht doch mal die Hilfe anschauen?
http://docwiki.embarcadero.com/Libra...eStream.Create

EWeiss 28. Mär 2017 06:07

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von Lemmy (Beitrag 1365711)
Zitat:

Zitat von EWeiss (Beitrag 1365710)
Ah danke versuche es mal.
Nur kann man dann noch schreiben ?

versuch es... oder vielleicht doch mal die Hilfe anschauen?
http://docwiki.embarcadero.com/Libra...eStream.Create

Ach lass mal sagte ja schon mache es mit der API jetzt.
Aber auf deinen Tip wäre ich nicht gekommen.

Thema hat sich erledigt!
Habe es mit Win32 API mitteln gemacht.

gruss

himitsu 28. Mär 2017 10:57

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von EWeiss (Beitrag 1365712)
Ach lass mal

Dabei steht dort sogar das Warum.

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:

mache es mit der API jetzt
Ist also keine Lösung, wenn man dort den selben Fehler machen würde.

EWeiss 28. Mär 2017 11:24

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Ist also keine Lösung, wenn man dort den selben Fehler machen würde.
Habe ich aber nicht da ich mich mit der API auskennen im Gegensatz zu FileStream.

gruss

Neutral General 28. Mär 2017 12:35

AW: Filestream Datei nicht gefunden bei FOpenWrite
 
Zitat:

Zitat von EWeiss (Beitrag 1365748)
Zitat:

Ist also keine Lösung, wenn man dort den selben Fehler machen würde.
Habe ich aber nicht da ich mich mit der API auskennen im Gegensatz zu FileStream.

gruss

Jetzt weißt du ja wies mim FileStream geht ;)
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 ;)

himitsu 28. Mär 2017 12:44

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 http://docwiki.embarcadero.com/Libra....TFile_Methods
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)

Hobbycoder 28. Mär 2017 12:54

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 01:36 Uhr.
Seite 1 von 3  1 23      

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