![]() |
relative pfadangabe [gelöst]
hi
ich habe meine applikation in einem order, (wo sonst ;)) z.B programm. auf der gleichen stufe(also nicht als unterordner!!) wie diesen ordner hab ich einen ordner DB. nun möchte ich den pfad für den DB-ordner dynamisch angeben (also nicht C:\daten\DB). den pfad der exe hole ich mit ExtractFilePath(ParamStr(0)). meine frage: wie kann ich die pfadangabe so lösen dass es nicht mehr darauf ankommt wohin das ganze installiert wird. gibts da einen befehl mit dem ich einen ordner "abschneiden" kann (im pfad-string). oder muss ich den selbst auseinander nehmen? gruss, ims |
Re: relative pfadangabe
Hallo ims,
warum willst Du den Pfad der Datenbank im Programm eintragen. Dafür gibt's doch (z.B. in der BDE) Aliasnamen! |
Re: relative pfadangabe
Die meisten Funktionen zum Angeben von Ordnern/Dateien unterstützen schon relative Pfadangaben!
Versuch also mal, nur "DB", "DB\", "DB/", "/DB", "/DB/", "./DB" oder "./DB/" zu verwenden (Wenn eine Variante nicht klappt, klappt vielleicht die andere :wink: ). |
Re: relative pfadangabe
aliasnamen... tja, könnte man machen. möchte es aber grundsätzlich wissen, da ich sowas auch mit anderen ordnern, nicht nur DB's brauch. ich möchte ja nicht direkt auf die DB verweisen sondern nur auf den dazu gehörigen ordner. chewie, ich glaube du hast mich falsch verstanden.
ich hab einen ordner C:\daten\meinProgramm (und darin ist meine exe) und einen zweiten ordner C:\daten\DB. so, mit ExtractFilePath(ParamStr(0)) krieg ich C:\daten\meinProgramm. wie kann ich nun aus diesem string C:\daten\DB machen? das war meine frage, ein wenig verständlicher vormuliert ;) gibts da ne funktion die "meinProgramm" wegschneidet und "DB" rein setzt oder muss ich das selbst machen?? gruss, ims |
Re: relative pfadangabe
Hallo ims,
sieh mal in der OH unter ExtractFilePath nach. Anschließend sollte der Operator + für Strings helfen... |
Re: relative pfadangabe
hi chooose
ich weiss schon wie ich mit ExtractFilePath umgehen muss, das ist nicht das problem. meine frage ist es, wie komme ich von C:\daten\meinProgramm auf C:\daten\DB. ich nehme ExtractFilePath(ParamStr(0)) um auf C:\daten\meinProgramm zu kommen. allerdings brauch ich was, das "meinProgramm" durch "DB" ersetzt wird. resp einfach "meinProgramm" entfernt. danach kann ich immer noch mit dem Operator + das "DB" anhängen. wie krieg ich aber "meinProgramm" weg... aber so langsam glaub ich dass ich das "von hand" entfernen muss... |
Re: relative pfadangabe
Hai ims,
hast Du es schon einmal mit einem ordinären '..\db\' versucht? |
Re: relative pfadangabe
Hi. Du könntest den String, den du abfragst, von hinten nache einem '\' durchsuchen.
Delphi-Quellcode:
Man liest sich, Stanlay :hi:
var i : Integer;
str : String; begin str := ExtractFilePath(ParamStr(0)); For i := Length(str)-1 downto 0 do begin IF str[i] = '\' THEN begin str := copy(str,0,i); break; end; end; str := str + 'DB'; end; |
Re: relative pfadangabe
Hallo ims,
ich vermute mal, Du willst alles was nach dem letzten Backslash durch etwas anderes ersetzen. Also den String von hinten zeichenweise lesen und das letzte Zeichen löschen, wenn es kein Backslash ist. Anschließend den von Dir gewünschten Text hinten drankopieren. |
Re: relative pfadangabe
Zitat:
Falls Du Dich nicht scheust, [dp]reguläre Ausdrücke[/dp] einzusetzen, sollte das funktionieren:
Delphi-Quellcode:
Vielleicht klappt aber auch etwas in der Art?
function GetParentDirectory(const ADirectory: string): string;
begin with RegExpr('(.*\\).+') do Result:= Replace(ADirectory, '$1', True); end;
Code:
also zB
c:\absolutePath\myDir\..\anotherDir\myFile
Delphi-Quellcode:
myName:= ExtractFilePath(ParamStr(0))+\..\db\foo.db';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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