Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   GetFileAttribute - BUG? (https://www.delphipraxis.net/192807-getfileattribute-bug.html)

Alter Mann 20. Mai 2017 19:10

GetFileAttribute - BUG?
 
Hallo,

wenn ich folgenden Pfad expandiere

Code:
..\..\..\..\..\..\..\..\Music\Enya\Paint the Sky with Stars- The Best of Enya\01 Orinoco Flow.mp3
und anschlißend mit FileExists das Ergebnis prüfe, kommt ein False:(

Also den Debugger angeworfen und in FileExists einen Breakpoint gesetzt.
Das Ergebnis: GetFileAttributes gibt ein INVALID_FILE_ATTRIBUTES zurück.

Ein nachfolgendes GetLastError ergibt ein ERROR_PATH_NOT_FOUND.

Kann jemand den Fehler bestättigen?
Welche Alternativen gibt es zu FileExists?

Achso, ich benutze Tokyo mit dem April-Update

Danke und ein schönes WE

SneakyBagels 20. Mai 2017 19:13

AW: GetFileAttribute - BUG?
 
Zitat:

wenn ich folgenden Pfad expandiere
Was heißt denn, wenn du ihn expandierst?
Welcher Wert wird denn effektiv mit FileExists geprüft? Stell ihn doch mal ggf. anonymisiert hier ein.

himitsu 20. Mai 2017 19:17

AW: GetFileAttribute - BUG?
 
Zitat:

Kann jemand den Fehler bestättigen?
Ja, wenn die Datei nicht existiert (hier einer der Verzeichnisse über der Datei), bzw. wenn der Pfad falsch ist, dann bekomme ich ebenfalls den selben Fehler. :roll:

Dalai 20. Mai 2017 20:33

AW: GetFileAttribute - BUG?
 
Da das ein relativer Pfad ist, ist hier das Arbeitsverzeichnis von entscheidender Bedeutung. Stimmt das nicht bzw. ist ein anderes als vermutet, wird eben die Datei nicht gefunden bzw. am falschen Ort nachgeschaut. Lösung: Absoluten Pfad sauber zusammenbauen, so dass das Arbeitsverzeichnis irrelevant wird.

Grüße
Dalai

Hobbycoder 20. Mai 2017 22:40

AW: GetFileAttribute - BUG?
 
Wennns denn ein relativer Pfad sein soll vielleicht mit SetCurrentDir das passende Ausgangsverzeichnis festlegen. Ich weiß aber grad aus dem Kopf nicht, ob das Abhilfe schaffen kann. Einfach mal ausprobieren. Fiel mir nur grad so ein.
Absoluter Pfad ist aber sicher besser.

Alter Mann 21. Mai 2017 06:10

AW: GetFileAttribute - BUG?
 
Moin, Moin,

danke für die schnelle Reaktion, aber der Fehler scheint wo anders zu liegen.

Genutzt wird beim speichern ExtractRelativePath und beim laden ExpandFilename.

Ich prüfe das mal genauer und komme dann neu.

Danke

himitsu 21. Mai 2017 09:41

AW: GetFileAttribute - BUG?
 
ExpandFilename nutzt ebenfalls das aktuelle Arbeitsverzeichnis deiner Anwendung
und Pfade relativ zum Arbeitsverzeichnis sind immer gefährlich, wenn man nicht aufpasst, denn beim Starten der Anwendung oder z.B. durch Anzeigen eines Öffnen-/Speicherndialogs muß dieses nicht dem Programmverzeichnis entsprechen.

Aber wie SneakyBagels beteits erwähnte, hast du das wichtigste Vergessen und nicht nachgeschaut, oder zumindestens nicht uns gesagt, wie die Verzeichnisse der Zieldatei und das ergebnis von ExpandFilename aussehen.

SneakyBagels 21. Mai 2017 11:03

AW: GetFileAttribute - BUG?
 
Zitat:

danke für die schnelle Reaktion, aber der Fehler scheint wo anders zu liegen.
Lass dir doch mal den Pfad der geladen und gespeichert werden soll auf dem Bildschirm ausgeben.
Dann weißt du ganz genau, ob er korrekt ist oder nicht. Habe ich oben aber schon einmal geschrieben...

jaenicke 21. Mai 2017 21:29

AW: GetFileAttribute - BUG?
 
Das ganze Raten macht doch gar keinen Sinn.

Nimm einfach den Process Monitor und gib als Filter ein: "Process Name" "is" deine.exe

Dann gibst du bei dem Fehler ein ShowMessage aus, lässt das offen und schaust was zuletzt im Log steht.
Dann siehst du direkt was Sache ist...

himitsu 21. Mai 2017 21:58

AW: GetFileAttribute - BUG?
 
Zitat:

Zitat von jaenicke (Beitrag 1372262)
Nimm einfach den Process Monitor...

Oder einfach im Debugger schauen was übergeben wird, bzw. das per ShowMessage direkt ausgeben.

SneakyBagels 21. Mai 2017 22:00

AW: GetFileAttribute - BUG?
 
Zitat:

Zitat von himitsu (Beitrag 1372264)
Zitat:

Zitat von jaenicke (Beitrag 1372262)
Nimm einfach den Process Monitor...

Oder einfach im Debugger schauen was übergeben wird, bzw. das per ShowMessage direkt ausgeben.

Wie schon 100x erwähnt :stupid:

himitsu 21. Mai 2017 22:51

AW: GetFileAttribute - BUG?
 
Vielleicht hört dann auch irgendwann wer drauf :zwinker:

jaenicke 22. Mai 2017 20:24

AW: GetFileAttribute - BUG?
 
Zitat:

Zitat von himitsu (Beitrag 1372264)
Zitat:

Zitat von jaenicke (Beitrag 1372262)
Nimm einfach den Process Monitor...

Oder einfach im Debugger schauen was übergeben wird, bzw. das per ShowMessage direkt ausgeben.

Dort siehst du aber nicht die direkte Anfrage an das Dateisystem. Deshalb kann es bei solchen hoch-relativen Pfaden durchaus im Process Monitor schneller zu sehen sein...

himitsu 22. Mai 2017 21:35

AW: GetFileAttribute - BUG?
 
Ja, aaaaaaaaaaaber
Zitat:

wenn ich folgenden Pfad expandiere
..\..\..\..\..\..\..\..\Music\Enya\Paint the Sky with Stars- The Best of Enya\01 Orinoco Flow.mp3
und anschlißend mit FileExists das Ergebnis prüfe
da ist Debugger oder ShowMessage schneller/einfacher.

SneakyBagels 22. Mai 2017 21:47

AW: GetFileAttribute - BUG?
 
Das Thema hier ist doch eh verloren.
Der Themenersteller ist entweder im Urlaub oder hat schon eine Lösung gefunden.

himitsu 22. Mai 2017 21:55

AW: GetFileAttribute - BUG?
 
Im Alter ist Man manchmal langsamer ... da dauert es schonmal länger.


Und selten kommt es auch vor, dass wir uns langweilen.
http://www.delphipraxis.net/123215-p...umwandeln.html
:stupid:

SneakyBagels 22. Mai 2017 22:00

AW: GetFileAttribute - BUG?
 
Ok ich verstehe, ich habe nix geschrieben :stupid:


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