AGB  ·  Datenschutz  ·  Impressum  







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

Pfad zu einer Datei herausfinden

Ein Thema von VizeTE · begonnen am 20. Okt 2009 · letzter Beitrag vom 20. Okt 2009
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 10:19
Hallo,

unter Windows kann ich doch einfach eine Datei ohne Angabe des Pfades öffnen.
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles.

Wenn ich auf dieser Weise eine Datei geöffnet habe gibt es dann einen Weg
den Pfad auf die Datei herauszubekommen?


Danke schon mal
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 10:26
Zitat von VizeTE:
unter Windows kann ich doch einfach eine Datei ohne Angabe des Pfades öffnen.
ja

Zitat von VizeTE:
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles.
nein

Es kommt drauf an, wie du die Datei öffnest.

DLLs via LoadLibrary werden z.B. so gesucht.
Aber z.B. AssignFile oder Stream.LoadFromFile öffnet dagegen immer nur im aktuellen Programmverzeichnis.

Zitat von VizeTE:
Wenn ich auf dieser Weise eine Datei geöffnet habe gibt es dann einen Weg
den Pfad auf die Datei herauszubekommen?
ich würde einfach das aktuelle Programmverzeichnis auslesen
> GetCurrentDir und Co.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 10:54
Zitat von himitsu:
Zitat von VizeTE:
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles.
nein

Es kommt drauf an, wie du die Datei öffnest.

DLLs via LoadLibrary werden z.B. so gesucht.
Aber z.B. AssignFile oder Stream.LoadFromFile öffnet dagegen immer nur im aktuellen Programmverzeichnis.
Bei DLLs kann man es explizit umstellen bzw. festlegen ob dieser Vorgang gemacht werden soll. Die Angabe irgendeines Pfades vor dem DLL Namen bei LoadLibrary() setzt die schon außer Kraft (also auch z.B. ein ".\").

Und Programmverzeichnis ist in diesem Falle falsch sondern einfach nur aktuelles Verzeichnis. Das Programmverzeichnis ist es schon nach dem nächsten Open- oder Savedialog nicht mehr, wenn der Nutzer das Verzeichnis und/oder Laufwerk wechselt.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 10:59
Zitat von VizeTE:
unter Windows kann ich doch einfach eine Datei ohne Angabe des Pfades öffnen.
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles
Delphi-Referenz durchsuchenSearchPath
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 12:49
Zitat von Muetze1:
Zitat von himitsu:
Zitat von VizeTE:
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles.
nein

Es kommt drauf an, wie du die Datei öffnest.

DLLs via LoadLibrary werden z.B. so gesucht.
Aber z.B. AssignFile oder Stream.LoadFromFile öffnet dagegen immer nur im aktuellen Programmverzeichnis.
Bei DLLs kann man es explizit umstellen bzw. festlegen ob dieser Vorgang gemacht werden soll. Die Angabe irgendeines Pfades vor dem DLL Namen bei LoadLibrary() setzt die schon außer Kraft (also auch z.B. ein ".\").

Und Programmverzeichnis ist in diesem Falle falsch sondern einfach nur aktuelles Verzeichnis. Das Programmverzeichnis ist es schon nach dem nächsten Open- oder Savedialog nicht mehr, wenn der Nutzer das Verzeichnis und/oder Laufwerk wechselt.
Ok, das hätte ich dazuschreiben können: Es handelt sich nicht um eine dll sondern um eine ini. Wenn ich dort bei TIniFile.Create(...) als Parameter "myini.ini" angebe wird die Datei geöffnet auch wenn sie z.B. im Windows-Verzeichnis liegt.

Zitat von joachimd:
Zitat von VizeTE:
unter Windows kann ich doch einfach eine Datei ohne Angabe des Pfades öffnen.
Windows sucht dann zunächst im Ausführungsverzeichnis, dann im den Verzeichnissen
in der Windwos-Path-Variabeln und was weiß ich wo noch alles
Delphi-Referenz durchsuchenSearchPath
Ja, genau das habe ich gesucht: Vollständiger Dateiname gemäss PATH
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 12:50
eine INI ohne Pfadangabe landet im Windows-Verzeichnis (z.B. "C:\Windows" und so)

Zitat:
If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
> MSDN-Library durchsuchenGetPrivateProfileString
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 13:05
Zitat von himitsu:
eine INI ohne Pfadangabe landet im Windows-Verzeichnis (z.B. "C:\Windows" und so
Das stimmt nur bedingt. Um die Sache komplizierter zu machen, gibts ab WinXP so genannte IniFileMappings (zu finden unter
Code:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
Wenn du also TIniFile.Create('Win.ini') sagst, landest du eigentlich in der Registry Die Datei ist (laut kommentar in selbiger) nur noch für 16 Bit zuständig.

Gruß
Marco
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 13:57
IniFileMappings:
joar, wo man ab Vista ja eh keine Schreibrechte mehr im Windowsverzeichnis hat ....

aber virtuell liegen diese Daten dann dennoch in C:\Windows



nja, ich sagt'e ja: "es kommt drauf an was man wie speichert" und dann gibt es davon abhängig verschiedene Orte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: Pfad zu einer Datei herausfinden

  Alt 20. Okt 2009, 14:05
Zitat von himitsu:
aber virtuell liegen diese Daten dann dennoch in C:\Windows
Die Daten liegen weder virtuell noch real in C:\Windows, weil es einfach keine Ini Datei gibt.

edit... aber egal... das wird mir dann doch zu philosophisch...
edit2 ... himitsu hat ja recht
Zitat von msdn:
lpFileName [in]

The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
Marco Warm
TUO
TheUnknownOnes.net
  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 02:22 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