AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ExpandFileName gibt "falsches" Ergebnis aus

Ein Thema von Ykcim · begonnen am 29. Okt 2024 · letzter Beitrag vom 29. Okt 2024
Antwort Antwort
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
273 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 17:48
Hi,
Ich würde mir das exe Verzeichnis holen und darauf aufbauend den Pfad erzeugen. Das mit dem ExpandFileName ist mehr oder weniger ein Glücksspiel.
Nach meinem Verständnis würden solche Daten auch eher in andere Verzeichnisse (Dokumente, App Data o.ä. ) gehören, gerade auch weil windows immer strenger über die Programmverzeichnisse wacht.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#2

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 17:55
Vielen Dank für die Hilfe und Erklärungen!

Ich habe es jetzt so gelöst, wie himitsu es eigentlich schon erklärt - ich nur übersehen hatte...

Delphi-Quellcode:
SetCurrentDir(ExtractFilePath(Application.Exename));
   Report.LoadFromFile(ExpandFileName(Report_Path));
Damit funktioniert es.

Aber richtig toll finde ich es nicht und überlege mir, die Pfade tatsächlich auf dem Programmpfad aufbauend zu gestalten. Nur muss ich dann das "\" am Ende überprüfen und ich kann nicht den gleichen Code verwenden, wenn in der Config-Datei mal ein Pfad \\Server\Ordner\Datei.igw und manchmal .\Ordner\Datei.igw angegeben wird...

Das wäre mit ExpandFileName so schön einfach gewesen...

LG Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 18:12
Nur muss ich dann das "\" am Ende überprüfen und ich kann nicht den gleichen Code verwenden, wenn in der Config-Datei mal ein Pfad \\Server\Ordner\Datei.igw und manchmal .\Ordner\Datei.igw angegeben wird...
Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter bzw. Delphi-Referenz durchsuchenExcludeTrailingPathDelimiter?
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#4

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 18:24
Vielen Dank,
IncludeTrailingPathDelimiter vereinfact das sehr, ersetzt aber nicht die schöne Funktion ExpandFileName.

Wäre cool, wenn man ExpandFileName einen optionalen Parameter mit dem Start-Verzeichnis mitgeben könnte. Standardmäßig das Arbeitsverzeichnis, oder ein Beliebiges, wie ExtractFilePath(ParamStr(0)), dann wäre sie sicher einsetzbar...

ExpandFileName(relativePfadVariable, ExtractFilePath(ParamStr(0)));

Spinnerei...

Vielen Dank und lieben Gruß - ich habe wieder etwas gelernt.

Patrick
Patrick

Geändert von Ykcim (29. Okt 2024 um 18:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#5

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 18:47
Wäre cool, wenn man ExpandFileName einen optionalen Parameter mit dem Start-Verzeichnis mitgeben könnte.
Da könnte man fast denken, dass dafür TPath.Combine da wäre, aber
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#6

AW: ExpandFileName gibt "falsches" Ergebnis aus

  Alt 29. Okt 2024, 17:59
Wie gesagt, der FileDialog macht es standardmäßig gern.
Kann man (oftmals) deaktivieren, indem man in dessen Optionen den Filetest deaktiviert .... aber sicher ist das nicht.

Und es kann durch vieles passieren.
z.B. wie und von du das Programm startest.

* siehe Delphi -> Start -> Parameter (Arbeitsverzeichnis)

* oder bei einem Link im Windows (siehe "Ausführen in")

* oder aus einer Batch
CMD:
Code:
cd /d D:\XML
D:\Software_Entwicklung\VersandApp\VersandApp\BD_VersandClient\Win32\Debug\BD_DHL.exe

cd /d D:\Software_Entwicklung\VersandApp\VersandApp\BD_VersandClient
Win32\Debug\BD_DHL.exe

.\Win32\Debug\BD_DHL.exe
versus
Code:
cd /d D:\Software_Entwicklung\VersandApp\VersandApp\BD_VersandClient\Win32\Debug
BD_DHL.exe

cd /d D:\Software_Entwicklung\VersandApp\VersandApp\BD_VersandClient\Win32\Debug
D:\Software_Entwicklung\VersandApp\VersandApp\BD_VersandClient\Win32\Debug\BD_DHL.exe

oder
oder
oder

Du weißt z.B. auch nie, was eine Fremdkomponente in deinem Programm jetzt/irgendwann macht.

z.B. Acrobat via ActiveX in der eigenen Anwendung ... sowas ergibt immer wieder sehr viel Spaß



Darum wird auch immer wieder von abgeraten, dass man mit relativen Pfaden arbeitet.
Und genau genommen nutzt du hier einen relativen Pfad, abhängig ausgehend von dem "zufälligen" Arbeitsverzeichnis.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Okt 2024 um 18:02 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:26 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