Seite 1 von 1

Verzeichnisnamen vergleichen

Verfasst: 21.05.2009 14:05
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).

Verfasst: 21.05.2009 17:32
von Andesdaf
könnt ich vielleicht gebrauchen, hab aber auch grad keine Lust sowas
auszufutzeln.

Verfasst: 21.05.2009 20:35
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. ^^)

Verfasst: 22.05.2009 01:15
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: