Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arbeitspfade in Delphi (https://www.delphipraxis.net/21457-arbeitspfade-delphi.html)

ak1 3. Mai 2004 11:05


Arbeitspfade in Delphi
 
Hallo Leute,

ich habe ein Projekt bei dem ich verschiedene Unterordner mit lokalen Tabellen bearbeite. Wenn ich das Programm über die EXE starte, dann werden die Tabellen auch korrekt aufgerufen. Wenn ich nun aber dieses Programm über die Delphi-IDE starte, dann stimmen die Pfade nicht mehr überein, da Delphi den "Quelltext"-Ordner als Startordner nimmt. Wie kann ich Delphi sagen, dass es den Ordner mit der Exe als Startordner nehmen soll (der Ausgabeordner (Projekt->Optionen->Verzeichnisse/Bedingungen))? Ich könnte zwar allen Tabellen einen tablename über "extractfiledir(Application.exename)+'\...'" übergeben, das wäre aber in meinem Fall zu aufwändig.


Gruß

mumu 3. Mai 2004 11:13

Re: Arbeitspfade in Delphi
 
setzte einfach den Pfad mit "setcurrentdir".

Luckie 3. Mai 2004 11:13

Re: Arbeitspfade in Delphi
 
Zitat:

Zitat von ak1
Ich könnte zwar allen Tabellen einen tablename über "extractfiledir(Application.exename)+'\...'" übergeben,

Dieser Satz sagt mir, dass du es bisher nicht so machst. Wie findet deine Anwendungen die Dateien die es braucht? Eine angbe der Datein ohne explizite Angabe von relativen Pfaden ist eine tickende Zeitbombe. Einmal das Verzeichnis mit einem Öffnen- oder Speicherndialog geändert und das war es dann für deine anwendung mit dem Finden der benötigten Dateien.

Und was ist bitte an "extractfiledir(Application.exename)+'\...'" aufwendig? Die 15 Zeichen mehr eintippen kann es wohl nicht sein, wenn man damit eine stabile Anwendung bekommt. :roll:

Luckie 3. Mai 2004 11:16

Re: Arbeitspfade in Delphi
 
Zitat:

Zitat von mumu
setzte einfach den Pfad mit "setcurrentdir".

Argh, nein. Das kann er ja dann jedes mal machen, wenn er den Pfad braucht. Und der Benutzer wird sich wundern, wenn er eine Datei mit dem Dateiöffnen-Dialog in einem anderen Verzeichnis geöffnet hat und er beim nächsten Mal sich wieder durch alle Verzeichnisse durchklicken darf. :?

Die einzige, in diesem Fall, richtige Methode ist das Arbeiten mit relativen Pfaden.

mumu 3. Mai 2004 11:22

Re: Arbeitspfade in Delphi
 
ja luckie, das ist mir schon klar. ich würde das auch nicht so machen, aber vielleicht gibt es ja irgendeinen grund dafür das er das unbedingt so lösen will :gruebel: und da denke ich ist setcurrentdir die einfachste lösung...

ak1 3. Mai 2004 11:36

Re: Arbeitspfade in Delphi
 
@Luckie,
das sind zwei größere Anwendungen, die jetzt zusammengeführt werden. Da ist der Aufwand des manuellen Schreibens sehr hoch. Ausserdem wird beim Start des Programms eine SQL-Anweisung aus einer INI-DFatei gelesen, da kann ich nicht viel machen, war aber auch nicht meine Idee.
Das Verändern der Pfade durch einen "Öffnen" oder "Speichern"-Dialog kann ich verhindern indem ich im OI des jeweiligen Dialoges unter Options das "ChangeDir" auf false setze.
Die Zuweisung der Pfade in den Querys ist bis jetzt so: "select * from Tabellen\tabelle3.db" und das geht ja auch wenn ich die exe starte, da muss es doch eine Möglichkeit geben der Delphi-IDE den gleichen Startordner zu verpassen.


Gruß

Luckie 3. Mai 2004 12:12

Re: Arbeitspfade in Delphi
 
Und wenn du die anwendung weitergibst hast du den Schlamassel. :? Bzw. den hast du schon auf deinem System. Wenn du es also richtig machen willst, hilft da wohl nichts erstmal alles manuell von Hand zu ändern.

ak1 3. Mai 2004 12:35

Re: Arbeitspfade in Delphi
 
@Luckie,

wenn ich das Programm weitergebe, dann kann ich doch im Installshieldexpress (Version von Delphi 7) das Arbeitsverzeichnis angeben, welches dann auch das Startverzeichnis ist. Da wird dann die "select * from Tabellen\tabelle3" Abfrage als "select * from Startverzeichnis\Tabellen\tabelle3" interpretiert. So ist das auch wenn ich meine exe starte. Aber die Delphi-IDE interpretiert diese Anweisung als "select * from Quelltext\Tabellen\Tabelle3" und wundert sich, dass es diese Tabelle nicht gibt.
Da muss es doch eine Einstellmöglichkeit geben.


Gruß

Luckie 3. Mai 2004 12:39

Re: Arbeitspfade in Delphi
 
Kannst du, aber was wenn es der Anwender aus was für einen Grund auch ändert? Außerdem sollte ein anderes Program, aus was für einen Grund auch immer, SetCurrentDirectory aufrufen, was übrigens sehr unfein ist, findet dein Programm wieder nichts. Wie ich es auch drehe und wende, so wie du es bisher machst, hast du da eine tickende Zeitbombe programmiert. :?

ak1 3. Mai 2004 13:12

Re: Arbeitspfade in Delphi
 
Hast ja recht Luckie...

Übrigens habe ich versehentlich in den Debugger-Optionen den Haken bei "integrierte Fehlersuche" rausgenommen, dadurch hat Delphi wohl nur im Queltextordner gesucht. Das war es wohl :-)


Gruß


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