Verzeichnisnamen vergleichen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Verzeichnisnamen vergleichen

Beitrag von ZeHa »

Servus,

hab hier grad ein Stück Code gebastelt, mit dem sich prüfen läßt, ob es sich bei zwei Verzeichnisnamen um die gleichen handelt:

Code: Alles auswählen

Procedure sameDirectory(a$, b$)
    cur$ = GetCurrentDirectory()
    
    SetCurrentDirectory(LCase(a$))
    a$ = GetCurrentDirectory()
    
    SetCurrentDirectory(cur$)
    
    SetCurrentDirectory(LCase(b$))
    b$ = GetCurrentDirectory()
    
    SetCurrentDirectory(cur$)

    If a$ = b$
        ProcedureReturn #True
    Else
        ProcedureReturn #False
    EndIf
EndProcedure
Sie funktioniert auch mit relativen und komisch geschriebenen Pfadangaben, z.B. "C:\Programme\..\Windows//system32/../" und "C:/WINDOWS", welche beide die gleichen Pfade darstellen.

Allerdings finde ich das generell etwas umständlich, allein schon deshalb, weil meine Lösung nur dann funktioniert, wenn die Verzeichnisse existieren. Zudem ist es blöd, daß das CurrentDirectory geändert wird, das müßte im Multithreading-Betrieb noch verbessert werden.

Es wäre daher viel cooler, wenn es in PB eine FormatFileName()-Funktion oder so etwas gäbe, die sozusagen den Schritt, der hier durch Set- und GetCurrentDirectory() gelöst ist, auf ganz normaler Stringwurschtelebene arbeitet. Vielleicht hat ja jemand Bock drauf, sowas zu programmieren, dürfte nicht allzu viel Aufwand sein (hab aber grad selbst keine Lust ;) bzw. auch keine Zeit).
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

könnt ich vielleicht gebrauchen, hab aber auch grad keine Lust sowas
auszufutzeln.
Win11 x64 | PB 6.20
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Gibt es da nicht eine API-Befehl, der sowas automatisch kann?

(ich weiß, ich als Linux-Nutzer dürfte das gar nicht vorschlagen. ^^)
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Hab ich mir auch schon gedacht, Windows muß das ja intern auch irgendwie hinkriegen... hab aber noch keinen gefunden. Liegt primär aber eher daran, daß ich noch keinen gesucht hab :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten