Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Netzlaufwerk und Pfad speichern (https://www.delphipraxis.net/189164-netzlaufwerk-und-pfad-speichern.html)

SaFu 11. Mai 2016 10:24

Netzlaufwerk und Pfad speichern
 
Hallo,

habe gerade ein kleines Problem, ich speicher einen Pfad in eine .ini. Der Programmordner der .Exe liegt im Netzwerk, wenn ich nun einen neuen Kontakt anlege und die Datei speichere wird in eine andere .Ini der Pfad gespeichert. Soweit ok öffne ich die .exe von einem anderen PC aus, diese PC hat einen anderen Netzlaufwerksbuchstabe und somit stimmt der Pfad nicht mehr.

Gibt es eine spezielle funktion mit der ich das nicht so statisch machen kann?

Delphi-Quellcode:
  // PAKontakt Ordner erstellen
 if DirectoryExists(ExtractFilePath(ParamStr(0)) + 'PAKontakte') then
  OrdnerPA:= (ExtractFilePath(ParamStr(0)) + 'PAKontakte')
  else
    begin
     ForceDirectories(ExtractFilePath(ParamStr(0)) + 'PAKontakte'); //Ordner erstellen
    end;

Delphi-Quellcode:
SenderIniFile.WriteString('PAKontakt','Pfad',OrdnerPA + '\'+ ProgrammanbieterFirmaCombo.Text + '.ini')
Beim laden wird einfach in der .ini nach dem Schlüsssel mit dem Pfad gesucht.

Danke im voraus.

himitsu 11. Mai 2016 10:27

AW: Netzlaufwerk und Pfad speichern
 
Relativen Pfad speichern und zur Laufzeit mit dem aktuellen Programmpfad kombinieren?

Delphi (die IDE/Projektmanager) macht es teilweise so, daß es absoluten und relativen Pfad speichert.
Erst mit dem Absoluten versuchen und wenn nicht gefunden, dann mit dem Relativen suchen.

Delphi-Referenz durchsuchenExpandFileName
Delphi-Referenz durchsuchenTPath.IsRelativePath
Delphi-Referenz durchsuchenTPath.GetFullPath
MSDN-Library durchsuchenGetFullPathName
MSDN-Library durchsuchenPathRelativePathTo
...

Aviator 11. Mai 2016 10:28

AW: Netzlaufwerk und Pfad speichern
 
Beim Zugriff auf Netzlaufwerke sollte man die Verwendung von Laufwerkbuchstaben am besten vermeiden. Es sei denn, die Laufwerke sind bei allen genormt. In dem Fall müsstest du den UNC-Pfad zur Freigabe speichern. Dann fällt die Problematik weg sofern ein funktionierender DNS läuft.

Dalai 11. Mai 2016 14:09

AW: Netzlaufwerk und Pfad speichern
 
Ich schließe mich Aviator an: Löse den Pfad in einen UNC-Pfad auf und schon ist das Problem Geschichte. Es gibt eine API-Funktion dafür, leider weiß ich nicht, wie die heißt (aber mit passenden Suchbegriffen wirst du sicher fündig).

MfG Dalai

Klaus01 11. Mai 2016 14:13

AW: Netzlaufwerk und Pfad speichern
 
hier in der DP: http://www.delphipraxis.net/49779-pf...umwandeln.html

Grüße
Klaus

Dalai 11. Mai 2016 15:51

AW: Netzlaufwerk und Pfad speichern
 
Ich hab mal nachgeschaut und neben dem bereits genannten/verlinkten WNetGetConnection noch WNetGetUniversalName gefunden.

MfG Dalai

Sir Rufo 11. Mai 2016 16:52

AW: Netzlaufwerk und Pfad speichern
 
Ich würde mir immer die Information in dem Kontext speichern in dem diese gedacht ist.

Und hier sieht es danach aus, dass der Ordner relativ zum Anwendungsordner gewünscht ist.
Dann speicher ich auch genau das ab und mache daraus nicht etwas Absolutes, denn das war hier so nicht gedacht.


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