Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi relative pfadangabe [gelöst] (https://www.delphipraxis.net/14340-relative-pfadangabe-%5Bgeloest%5D.html)

ims 7. Jan 2004 11:00


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

r_kerber 7. Jan 2004 11:07

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!

Chewie 7. Jan 2004 11:07

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: ).

ims 7. Jan 2004 12:12

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

choose 7. Jan 2004 12:18

Re: relative pfadangabe
 
Hallo ims,

sieh mal in der OH unter ExtractFilePath nach. Anschließend sollte der Operator + für Strings helfen...

ims 7. Jan 2004 12:34

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...

Sharky 7. Jan 2004 12:37

Re: relative pfadangabe
 
Hai ims,

hast Du es schon einmal mit einem ordinären '..\db\' versucht?

Stanlay Hanks 7. Jan 2004 12:42

Re: relative pfadangabe
 
Hi. Du könntest den String, den du abfragst, von hinten nache einem '\' durchsuchen.

Delphi-Quellcode:
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;
Man liest sich, Stanlay :hi:

r_kerber 7. Jan 2004 12:44

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.

choose 7. Jan 2004 13:05

Re: relative pfadangabe
 
Zitat:

Zitat von ims
ich weiss schon wie ich mit ExtractFilePath umgehen muss

Sorry, habe ich überlesen.

Falls Du Dich nicht scheust, [dp]reguläre Ausdrücke[/dp] einzusetzen, sollte das funktionieren:
Delphi-Quellcode:
function GetParentDirectory(const ADirectory: string): string;
begin
  with RegExpr('(.*\\).+') do
    Result:= Replace(ADirectory, '$1', True);
end;
Vielleicht klappt aber auch etwas in der Art?
Code:
c:\absolutePath\myDir\..\anotherDir\myFile
also zB
Delphi-Quellcode:
myName:= ExtractFilePath(ParamStr(0))+\..\db\foo.db';


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 Uhr.
Seite 1 von 2  1 2      

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