![]() |
Setup.INI einlesen
Hallo Community,
ich möchte mein Delphiprogramm in einem beliebigen Verzeichnis starten und es soll dann genau dort nach einer Datei setup.ini suchen und einlesen. Zur Zeit habe ich den Pfadnamen hartkodiert im Sourcecode stehen. Das klappt prima. Auf Dauer finde ich das aber nicht ideal, da der Benutzer meines Programms selber bestimmen können soll, wo das EXE läuft. Viele Grüße Gerd |
AW: Setup.INI einlesen
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'Setup.ini'
oder
Delphi-Quellcode:
ExtractFilePath(Application.ExeName) + 'Setup.ini'
Beides gleich. |
AW: Setup.INI einlesen
Zitat:
Also, was soll's sein: c:\WINDOWS\system32 oder c:\temp?
Code:
c:\WINDOWS\system32>c:\Temp\MeinProg.exe
|
AW: Setup.INI einlesen
Zitat:
Aktuell liegt das exe in c:\games . Dort liegt auch die ini |
AW: Setup.INI einlesen
Hi, Du kannst auch in der Zeile wo Du auf eine Datei im Verzeichniss des Hauptprogramms zugreifen möchtest lediglich ein '.\Setup.ini' anstelle 'X:\Verzeichniss\Setup.ini', klappt auch mit Unter- und Oberverzeichnissen.
Der >.< ist ein Platzhalter für's Programmverzeichniss. |
AW: Setup.INI einlesen
Zitat:
Grüße Dalai |
AW: Setup.INI einlesen
Habe es gerade nochmal getestet, also bei mir wird immer das Verzeichniss genommen wo sich auch die .exe befindet, auch wenn sich die .exe nicht im aktuellen Pfad befindet. Getestet per Console (cmd.exe).
Vielleicht liegt es auch daran das in einer meiner Standard-Units ein
Code:
im INITIALIZATION part steht.
ChDir(ExtractFilePath(ParamStr(0)));
In einem Neuen Projekt ohne auf meine Units zuzugreifen kommt genau das raus was ihr beschrieben habt also denke ich mal das ChDir() macht den Unterschied. |
AW: Setup.INI einlesen
Das ChDir wechselt das aktuelle Arbeitsverzeichnis. Nur kann es sein, dass das nach dem Aufruf noch einmal irgendwo anders geschieht, z.B. durch einen Dialog. Aber das hast Du bestimmt auch schon ausprobiert und hier reden alle nur Blödsinn :roll:
|
AW: Setup.INI einlesen
Tut mir ja leid, ich konnte nichts von einem Dialog lesen und bin daher auch von keinem vorigen Dialog der das Verzeichniss wechselt ausgegangen, in meinem Test war nur Console-Code, kein VCL.
|
AW: Setup.INI einlesen
Zitat:
Zitat:
|
AW: Setup.INI einlesen
So, ich kann mal kurz erzählen, was jetzt alles passiert ist.
Als ich das mit dem .\setup.ini gelesen habe, dachte ich: "Brauchst Du nicht zu prüfen", da ich das schon vor einer Woche ausprobiert hatte. Kam immer eine Fehlermeldung zurück, dass die setup.ini nicht gefunden werden kann. Jetzt ist es aber so, dass in meinem Debug-Ordner, wo Delphi das EXE erzeugt, keine weiteren Dateien lagen. Zum Glück habe ich dann doch noch mal die .\setup.ini - Variante ausprobiert und die Fehlermeldung in Gänze durchgelesen. Danach habe ich dann die fehlenden Dateien ins Debug-Verzeichnis kopiert und siehe da... es läuft (natürlich!) Danke euch allen. Ich werde im nächsten Schritt mal schauen, dass ich den Code umstelle auf eine Variante ohne ".\", damit ich mir das Programm nicht zerschiesse, wenn ich den ersten OpenDialog einbaue. |
AW: Setup.INI einlesen
Kurz überschlagen
Delphi-Quellcode:
IniFile := 'setup.ini';
Ini := ExtractFilePath(Application.ExeName) + IniFile; if FileExists(Ini) then begin end else begin if OpenDialog1.Execute then begin Ini := OpenDialog1.FileName; end; end; |
AW: Setup.INI einlesen
Erstelle dir doch eine globale string variable, im OnCreate sowas hier 'MeinPfad := ExtractFilePath(ParamStr(0));'
Damit ist "MeinPfad" immer das Verzeichniss wo deine .exe liegt, egal ob zwischenzeitlich das Verzeichniss gewechselt wurde. Sollte alle zukünftigen Probleme beseitigen. Nachtrag: Oder als Funktion, Beispiel:
Code:
function MeinPfad : String;
begin Result := ExtractFilePath(ParamStr(0)); end; |
AW: Setup.INI einlesen
Zitat:
by the way: Wenn ich solche Funktionen in eine Library (also wahrscheinlich unit) auslagern will, attach ich die dann mit einem einfachen "uses"? |
AW: Setup.INI einlesen
Ich verstehe das Attach nicht.
Also so hier könnte eine neue Unit ausschauen:
Delphi-Quellcode:
In deinem Projekt steht auch irgendwo weit oben ein "USES", da fügst du dann MeineHelfer hinzu,
UNIT MeineHelfer; // Name der Unit
INTERFACE // was stellt diese Unit bereit USES SysUtils; // was braucht diese Unit FUNCTION MeinPfad : String; // hier haben wir etwas was bereitgestellt werden soll IMPLEMENTATION // nun zum Code function MeinPfad : String; // hier die oben genannte Funktion begin Result := ExtractFilePath(ParamStr(0)); end; INITIALIZATION FINALIZATION END. ab nun kannst du in dem Formular wo du das USES MeineHelfer nutzt auch auf die Funktion MeinPfad zugreifen. PS: "MeineHelfer.pas" muss im Verzeichniss deines Projekt oder im Suchpfad von Delphi liegen. |
AW: Setup.INI einlesen
Zitat:
|
AW: Setup.INI einlesen
Na dann hoff ich mal das trotz Sprachbarriere Dir weitergeholfen werden konnte und nun Dein "Wie gelang ich zu Setup.ini" Problem im positiven Sinne erfolgreich abgeschlossen ist. Ansonsten einfach mehr Nachfragen bei Unstimmigkeiten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 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