![]() |
suche Funktion FindLastDir
suche eine Funktion, die mir ausgehend von einem Pfad , in dem weitere Unterverzeichnisse sind, immer tiefer ins erste "erreichbare"** Unterverzeichnis geht bis keines mehr vorhanden ist und mir den "tiefsten" Pfad zurückliefert.
** der erste Ordner,alphabetisch wie im Windows-Explorer Jemand ne Idee oder Ansatz? Gruß, bluescreen25 |
Re: suche Funktion FindLastDir
|
Re: suche Funktion FindLastDir
Zitat:
Dachte eher an sowas nur umgekehrt...:
Delphi-Quellcode:
function GetAudioplayerDirectory(const APath: String): String;
var i: Integer; begin Result:=APath; i:=Length(APath); If i>3 Then Begin Repeat Dec(i); Until (APath[i] = '\') OR (i=1); If APath[i]='\' Then Result:=Copy(APath,1,i); End end; |
Re: suche Funktion FindLastDir
|
Re: suche Funktion FindLastDir
Zitat:
Ich habe C:\Ordner1 und am Ende möchte ich C:\Ordner1\UnterOrdner1\UnterOrdner1... haben, sprich den letzten und im ersten Moment unbekannten Pfad. Falls es noch UnterOrdner 2 oder mehr gibt, sind diese unberücksichtigt. Immer nur solange in den ersten verfügbaren Ordner springen bis es nicht tiefer geht und dann den vollen Pfad ausgeben. Gruß, bluescreen25 |
Re: suche Funktion FindLastDir
Das kannst du recht einfach mit FindFirst ohne Rekursion erledigen.
Einfach FindFirst mit dem Dateinamen des letzten Aufrufs aufrufen, bis der Rückgabewert <> 0 ist. Als Filter solltest du faDirectory setzen |
Re: suche Funktion FindLastDir
Zitat:
Falls es ein String ist, kannst du dir entweder eine Funktion schreiben, die den String rückwärts nach dem ersten Vorkommen von '\' (oder '/' je nach Fall) durchsucht und einfach mit Copy den Teil von der Position ausgehend rauskopieren oder nach einer "LastPos" Funktion suchen. Falls es das letztere ist, dann sollte der Link die Grundlage bilden, die letzte Ebene eines Verzeichnisses zu finden. |
Re: suche Funktion FindLastDir
Zitat:
Ich nutze schon FindAllFiles, doch in einer ganz anderen Weise, dachte es würde einfacher gehen.... Eigendlich wäre das nur ein Teil des Gesamten, wo in einem MP3Player von einem File ausgehend, ein Ordner abgespielt, am Ende dann aus dem Ordner in die höhere Ebene in den nächsten Ordner gehen soll und das erste File abspielen soll. Natürlich wenn keine Ordner vorhanden, das nächste File in der höheren Ebene. Gruß, bluescreen25 |
Re: suche Funktion FindLastDir
Naja, in dem Fall weißt du ja den Pfad schon fast.
Du brauchst nur den String an Hand der '\' zerlegen, kriegst daraus alle Teile des Pfades und kannst rückwärts auf die einzelnen Teile eine rekursive Verzeichnissuche machen. Wenn es keine Verzeichnisse in einem Pfad mehr gibt, hast du die letzte Ebenen unter einem jeweiligen Teilpfad. |
Re: suche Funktion FindLastDir
Zitat:
c:\MP3\Album1\letzterSong.mp3 c:\MP3 c:\MP3\nächstesAlbum\ggfUnterordner\ggfUnterOrdner \erstesFile.mp3 <-- hier würde ich nur c:\Mp3\nächstesAlbum wissen ,aber den letzten Ordner und sogar daraus das erste File wieder abspielen wollen... hehe...etwas kurios wird aber noch schlimmer: eine gesetzte oberste Grenze (Pfad) erreicht wie c:\MP3 und als letztes c:\MP3\letztesAlbum\letzterOrdner\letztesFile.mp3 soll dann wiedrum beim ersten Ordner anfangen und dort in die Tiefe gehen und da abspielen...und dann der Ablauf von oben weiter....wobei in der Tiefe abgespielt wird, immer eine Ebene höher und zuletzt auf das nächste Album in die Tiefe...bis wieder alles abgespielt wird.... Ist eine Art CD-Wechsler-Funktion , nur das es etwas komplexer ist, wegen Ordner in der Tiefe, was eine normale CD nicht hat wie C:\MP3\Album1\CD1\*.mp3 und das ggf in jedem Ordner darüber noch Restfiles liegen können sprich in ..\Album1 liegt Ordner \CD1 und ggf noch *.mp3. Insgesamt wollte ich die Schritte in einzelne Funktionen aufteilen und dann zusammenstellen... Gruß,bluescreen25 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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