Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ini-Dateien aus Unterordnern laden (https://www.delphipraxis.net/93872-ini-dateien-aus-unterordnern-laden.html)

Honigdachs 12. Jun 2007 15:28


Ini-Dateien aus Unterordnern laden
 
Hallo zusammen,

ich bin mal wieder auf der Suche nach für mich unlösbaren Problemen.
Das Problem ist, dass ich eine .ini-file in eine Listbox einlesen möchte. Dabei nutze ich extractfilepath um den Pfad der Anwendung rauszufinden. Allerdings möchte ich die .ini-file in einem Unterordner haben. Und das ist das Problem - wie kann ich Delphi mitteilen, dass es in den anderen Ordner gehen soll :?:

MfG

Honigdachs

ErazerZ 12. Jun 2007 15:31

Re: Ini-Dateien aus Unterordnern laden
 
Delphi-Quellcode:
const
  sFilename = '%sUnter Ordner\Meine Ini.ini';
begin
  ListBox1.Items.LoadFromFile(Format(sFilename, [ExtractFilePath(Application.ExeName)]));

patti 12. Jun 2007 15:33

Re: Ini-Dateien aus Unterordnern laden
 
Delphi-Quellcode:
pfad := ExtractFilePath(Application.ExeName) + 'NameDesOrdners/namederini.ini';
P@Tti

Der_Unwissende 12. Jun 2007 15:39

Re: Ini-Dateien aus Unterordnern laden
 
Hi,
an sich hast Du ja schon zwei Vorschläge, wie man es machen könnte. Interessant ist aber schon der Punkt, dass beide ein unterschiedliches Trennzeichen für die Unterordner verwenden. Hier kann man sich natürlich leicht vertippen und deshalb ist es vielleicht Hilfreich auf die Funktion IncludeTrailingPathDelimiter zurück zu greifen (ebenfalls aus der Unit SysUtils), also:

Delphi-Quellcode:
  pfad := ExtractFilePath(ParamStr(0)) + 
          IncludeTrailingPathDelimiter('NameDesOrdners') +
          'namederini.ini';
Wie Du siehst steht zudem der Name der Exe immer auch im ersten Argument, dass die Anwendung übergeben bekommt. Wenn ich mich richtig erinner war der Zugriff auf diese Variable etwas perfomanter als die zusätzliche Indirektion des Application-Objkets. Vorallem brauchst Du aber nicht die Unit Forms.

Gruß Der Unwissende

Honigdachs 12. Jun 2007 15:57

Re: Ini-Dateien aus Unterordnern laden
 
Erstmal danke für das schnelle Feedback. Ich habe es jetzt mit einer Mischung aus beiden Vorschlägen hinbekommen. Ist wahrscheinlich etwas holperig programmiert, aber seinen Zweck erfüllt es.

Noch mal vielen Dank,

MfG,

Honigdachs

dajuhsa 12. Jun 2007 18:49

Re: Ini-Dateien aus Unterordnern laden
 
jetzt mal kurz zum verständnis und weil es glaub ich ganz gut passt:

ist "'.\'" das gleiche wie "ExtractFilePath(Application.ExeName)"?

Der_Unwissende 12. Jun 2007 18:56

Re: Ini-Dateien aus Unterordnern laden
 
Zitat:

Zitat von dajuhsa
ist "'.\'" das gleiche wie "ExtractFilePath(Application.ExeName)"?

Nein. Das fängt schon damit an, dass Du eben bei ExtractFilePath(Application.ExeName) einen wirklich kompletten String hast, der den absoluten Pfad angibt. Überleg Dir einfach mal, was passiert wenn jmd. den letzten Ordner des Pfades umbennen möchte, mit '.\' hat der diese Informationen gar nicht.
Selbst bei dem Punkt, auf den Du abzielst, ob sie den gleichen Pfad referenzieren würde ich sagen (ohne es selbst getestet zu haben), dass es sich hier um unterschiedliche Verzeichnis handeln kann. '.\' gibt (wahrscheinlich) nur das aktuelle Arbeitsverzeichnis zurück. Das ist eines der typischen Probleme, da es durch verschieden Funktionen gesetzt wird. Verwende einfach mal einen TSaveDialog, speicher etwas in einem anderen Ordner als die Ausführende .exe und schau Dir an, auf welches Verzeichnis '.\' dann verweist (speicher einfach eine andere Datei im Verzeichnis '.\').
Dann gibt es noch (bei Verknüpfungen) die Möglichkeit, dass Du eine Verknüpfung in einem anderen Verzeichnis ausführst, auch dass sollte Effekte auf '.\' haben.


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