Deutsch
Quelltexte/ Codesnippets

Dateiname Pathremovefilespec Pfad Splitfilename Trennen

 

Michael
Wodrich
Dateinamen aufdröseln ab Version 10.0 (nutzt SubStr rückwärts und Match$)
KompilierenMarkierenSeparieren
SplitFilename  (Test-Schnipsel)
Ab XProfan 10

Proc SplitFilename

    Parameters Vollname$
    Declare Laufwerk$, Pfad$, Datei$, Extension$
    Laufwerk$ = Match$(.:,Vollname$)
    Pfad$ = Match$(~.{0,2}\(.*\)?,Vollname$)
    Datei$ = SubStr$(Vollname$,-1,If(InStr(\,Vollname$),\,:))
    Extension$ = If(InStr(.,Datei$),SubStr$(Datei$,-1,.),)
    AddString Voller Dateiname: q + Vollname$ + q
    AddString Laufwerk + MkStr$(.,8) + : q + Laufwerk$ + q
    AddString Pfad + MkStr$(.,12) + : q + Pfad$ + q
    AddString Dateiname + MkStr$(.,7) + : q + Datei$ + q
    AddString Extension + MkStr$(.,7) + : q + Extension$ + q
    AddString

EndProc

ClearList
SplitFilename C:
SplitFilename Datei
SplitFilename Datei.
SplitFilename C:Datei.ext
SplitFilename C:Datei.ext
SplitFilename C:TestDatei
SplitFilename C:Test.$$$Datei.ext
SplitFilename C:Test.$$$Datei.
SplitFilename C:Test.$$$Datei
SplitFilename .Text.$$$
SplitFilename ....von weiter vorndatei.ext
ListBox$(die Ergebnisse,2)
VVV damit habe ich mal schnell die Ergebnisse abgegriffen
Declare s$,B#
Dim B#,50000
MoveListToMem(B#,
)
BlockWrite C:\Test_Splitfilename.txt,B#,0,Len(String$(B#,0))
Dispose B#
ShellExec(C:\Test_Splitfilename.txt,open,1)
End

und die Ergebnisse:

Voller Dateiname: C:
Laufwerk........: C:
Pfad............:
Dateiname.......:
Extension.......:

Voller Dateiname: Datei
Laufwerk........:
Pfad............:
Dateiname.......: Datei
Extension.......:

Voller Dateiname: Datei.
Laufwerk........:
Pfad............:
Dateiname.......: Datei.
Extension.......:

Voller Dateiname: Catei.ext
Laufwerk........: C:
Pfad............:
Dateiname.......: Datei.ext
Extension.......: ext

Voller Dateiname: Catei.ext
Laufwerk........: C:
Pfad............:
Dateiname.......: Datei.ext
Extension.......: ext

Voller Dateiname: C:TestDatei
Laufwerk........: C:
Pfad............: Test
Dateiname.......: Datei
Extension.......:

Voller Dateiname: C:Test.$$$Datei.ext
Laufwerk........: C:
Pfad............: Test.$$$
Dateiname.......: Datei.ext
Extension.......: ext

Voller Dateiname: C:Test.$$$Datei.
Laufwerk........: C:
Pfad............: Test.$$$
Dateiname.......: Datei.
Extension.......:

Voller Dateiname: C:Test.$$$Datei
Laufwerk........: C:
Pfad............: Test.$$$
Dateiname.......: Datei
Extension.......:

Voller Dateiname: .Text.$$$
Laufwerk........:
Pfad............: .Text.$$$
Dateiname.......:
Extension.......:

Voller Dateiname: ....von weiter vorndatei.ext
Laufwerk........:
Pfad............: ....von weiter vorn
Dateiname.......: datei.ext
Extension.......: ext
 
Programmieren, das spannendste Detektivspiel der Welt.
16.06.2006  
 



[quote:283141f477=Michael Wodrich]
und die Ergebnisse:
[box:283141f477]
Voller Dateiname: Catei.ext
[/box:283141f477][/quote:283141f477]
Da fehlt ein Backslash
Du solltest die Laufwerksbuchstaben auch mit BackSlash zurückgeben, alle API-Aufrufe akzeptieren
im allgemeinen beides, also C: und C:, so das es mit Backslash einheitlicher wäre.
Ansonsten sehr nützlich.
 
16.06.2006  
 




Michael
Wodrich
Ist nicht ganz richtig mit dem Backslash.

Die Datei kann ja in *jedem* Verzeichnis auf Laufwerk C: sein, wenn sie so angegeben ist.

Und es ist nicht die Aufgabe eines Splitters für einen vollständigen Namen zu sorgen. Dann wären nämlich auch die .. alle aufgelöst worden.

Manchmal braucht man einfach nur einen Namens-Verhackstücker, weil man ein Teil davon austauschen möchte.

Korrekt wäre allerdings, den Dateinamen von der Erweiterung zu befreien. Dann reicht ein einfaches addieren der Teile und man hat wieder ein Ganzes (deshalb: Laufwerk nur der Buchstabe und Doppelpunkt).

Ist bei den Snippets gelandet, weil man sich da ja was draus ableiten kann.

In jedem Fall geht es jetzt mit XProfan 10 alles etwas kürzer zu schreiben.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
16.06.2006  
 




Jac
de
Lad
Gibts dafpr nicht auch ne API? Ich meine, wenn ich aus einem Dateinamen den Pfad extrahieren will, ich könnte das grad gut gebrauchen, finde das aber nicht.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
07.03.2007  
 




KompilierenMarkierenSeparieren
DEF @PathRemoveFileSpec(1) !shlwapi,PathRemoveFileSpecA
WindowTitle Dateinamen von Pfad trennen
Windowstyle 31+512
Window 0,0-640,440
Declare EingabeDatei$,Pfad#
Let EingabeDatei$=C:
Dim Pfad#,513

While EingabeDatei$<>

    let EingabeDatei$=@LoadFile$(Bitte Datei auswählen,*.*)
    String Pfad#,0=EingabeDatei$
    @PathRemoveFileSpec(Pfad#)
    Print @String$(Pfad#,0)

wend

 
07.03.2007  
 



Michael Wodrich
Ist nicht ganz richtig mit dem Backslash.

Die Datei kann ja in *jedem* Verzeichnis auf Laufwerk C: sein, wenn sie so angegeben ist.


Völlig korrekt denn wenn sich ein Prozess z.B. via chdir  auf d: befinded, zuvor aber nach c:sonstwasirgendwas gewechselt wurde - so würde die Angabe von C:meine.datei auf c:sonstwasirgendwasmeine.datei zeigen, statt auf c:meine.datei.

Michaels Algo funzt IMHO absolut richtig.
 
07.03.2007  
 




Jac
de
Lad
@Andreas: Danke!
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
08.03.2007  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.689 Betrachtungen

Unbenanntvor 0 min.
Rainer Hoefs11.06.2023
rafl03.10.2014
Christian Hahn05.07.2013
maxpayne200129.04.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie