Entwickler-Ecke
Dateizugriff - Relative Verzeichnispfade
Cosmic - Do 09.01.03 09:16
Titel: Relative Verzeichnispfade
Hi,
um einige Berechnugen zu tätigen, übergebe ich meinem Programm ein festes Verzeichnis (Gruß an Klabautermann!). Soooo wenn ich nun aber Installshield nehme und ein anderes Installationsverzeichnis wähle, klappt nix mehr. Also gibt es bestimmt einen Befehl, der Verzeichnisse relativ zur Programmdatei (wo die exe liegt und somit das Programm installiert ist) festlegt.
Hier der jetzige feste Pfad. Die EXE liegt in Order "4", das wichtige Verzeichnis ist "planfall1".
Quelltext
1:
| DatabaseName := 'C:\Programme\Borland\Delphi7\Projects\Projects2\4\planfall1'; |
Der neue Code müste vielleicht so aussehen:
Quelltext
1:
| DatabaseName := '...\4\planfall1'; |
Nur das kann natürlich nicht klappen, weil Delphi so nach dem Verzeichnis C:\4\planfall1 sucht, was es ja nicht gibt.
Aber auch andere kombinationen lassen mich im Stich...
ob mit oder one "\" nix funktioniert .....
Ich vermute dass das so gar nicht klappen kann.
Ciao Cosmic
-----------------------------------------
Letz Fet´s heute beginnt Dein Leben
Keldorn - Do 09.01.03 09:47
Hallo
Quelltext
1:
| ProgDir := extractFilepath(Application.exename); |
oder du arbeitest mit paramstr(0)
damit erhälst du das verzeichnis, wo deine Exe drin ist und kannst dann die Unterverzeichnisse erreichen
Mfg Frank
Cosmic - Do 09.01.03 11:04
Titel: klingt gut
Hi,
klingt gut, aber so ganz durchblicke ich das noch nicht.
Sieht das so aus ?
Also z.B.
Quelltext
1: 2:
| ProgDir := extractFilepath(Application.exename); databasename := ('ProgDir\planfall1') |
Das klappt aber leider nicht.
Wenn ich die " ' " weg lasse meldet Delphi, das ein illegal Chart "\" im Code ist. Und mit " ' " findet es das Verzeichnis nicht ?
Auch wenn ich versuche die Verzeichnisse außerhalb des CopyDir Befehls zu verändern und als Variable übergebe, scheitert es am hinzufügen des Verzeichnisses.....
Das Pfad der exe wird aber einwandfrei ausgelesen.
Gruß Cosmic
-----------------------------------------
Letz Fet´s heute beginnt Dein Leben
Klabautermann - Do 09.01.03 11:11
Hallo,
du kannst stings einfach mit dem Plus (+) Operator aneinander hängen. Also z.B. so:
Quelltext
1: 2: 3:
| ProgDir := extractFilepath(Application.exename); databasename := (ProgDir + 'planfall1'); INI := tIniFile.Create(ProgDir + 'config.ini'); |
Einfach den Variablennamen in den String schreiben, wie du es versucht hast, funktioniert natürlich nicht.
Gruß
Klabautermann
Keldorn - Do 09.01.03 11:12
progdir ist doch eine variable! :roll:
Quelltext
1: 2: 3: 4:
| databasename := progdir+'\planfall' oder gleich databasename := extractfilepath(...)+'\planfall' |
gugg aber mal in die OH zu extractfilepath, ob evtl der \ schon mit dabei ist.
edit : da war wohl einer schneller :D
Mfg Frank
LCS - Do 09.01.03 11:15
| Keldorn hat folgendes geschrieben: |
gugg aber mal in die OH zu extractfilepath, ob evtl der \ schon mit dabei ist.
|
Ist er.
Gruss Lothar
Cosmic - Do 09.01.03 11:34
Titel: Klasse
Super!
Danke an alle !
AUf die einfachsten Möglichkeiten kommt man ja meinstens eh nicht so schnell :P
Danke ciao Cosmic
Tja und als ob es nicht da Probleme gäbe.....
So kann ich ja leider auch alle möglichen Verzeichnisse laden! Wie unpassend ! Desshalb habe ich mir folgendes ausgedacht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Dir := 'C:\'; if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then Begin If FileExists((Dir+'valid')) then Begin x := (Dir); if CopyDir(x,extractfilepath(Application.exename)) = True then begin MessageBox(0,'Projekt geladen.','Hinweis',16); end; end else begin MessageBox(0,'Ungültiges Verzeichnis','Problem',16); End; End; |
Also es muß die Datei Valid im Ordner sein damit er kopiert wird. An sich fand ich meine Idee toll :oops:
Nur leider findet er irgendwie die Datei nicht...... Dumm gelaufen ;)
Ich glaube, das ich die Datei nicht mit folgendem definieren darf.
Quelltext
1: 2:
| If FileExists((Dir+'valid')) then |
Auch 100 andere Kombos wollen nicht so recht. Was habe ich mal wieder übersehen?!
-----------------------------------------
Letz Fet´s heute beginnt Dein Leben
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!