Entwickler-Ecke
Dateizugriff - zwei Verzeichnisse auf Gleichheit prüfen
stiftmaster - Mi 03.02.10 17:31
Titel: zwei Verzeichnisse auf Gleichheit prüfen
Hallo,
meine Funktion "SindVerzeichnisnamenGleich" kriegen zwei string übergeben. Als Ergebnis soll zurückgeliefert werden, ob es sich um das gleiche Verzeichnis handelt oder nicht. Hintergrund ist, dass Verzeichnisnamen ja unterschiedliche geschrieben werden können, es sich aber um das gleiche Verzeichnis handelt.
Beispiel:
C:\Programme
C:\Program
C:\Prog~1 (oder wie auch immer genau diese alte Kurzschreibweise funktionierte)
C:\programme
Gibt es dafür bereits fertige Funktionen, die dies handeln? Kann aktuell nichts finden und bin daher für jeden Tipp dankbar.
Gruß
Stefan
Delete - Mi 03.02.10 19:07
Ich nehme an Vista und höher?
Es gibt nur das physische Verzeichnis c:\program files. Such mal mit Google nach
VISTA C:\PROGRAM FILES C:\PROGRAMME da wird alles erklärt.
DonManfred - Do 04.02.10 15:07
jaenicke hat folgendes geschrieben : |
die DOS-Schreibweise, es sei denn man hat in der Registry die 3.8 Namen deaktiviert. |
[oberlehrer an]8.3 - Namen. Bestehend aus 8 Zeichen vor dem Punkt, EINEM Punkt und 3 Zeichen als Extender[oberlehrer off]
stiftmaster - Fr 05.02.10 13:04
Hallo,
vielen Dank für eure Hilfe. Die "DOS-Schreibweise" habe ich mit GetLongPathName gelöst bekommen. Ebenso die Problematik mit Groß- und Kleinschreibung. Der Code sieht daher aktuell so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function ArePathTheSame(const Path1, Path2: string): Boolean; var Temp1, Temp2: string; begin Temp1 := GetLongFileName(Path1); Temp1 := ExcludeTrailingPathDelimiter(Temp1);
Temp1 := AnsiUpperCaseFileName(Temp1);
Temp2 := GetLongFileName(Path2); Temp2 := ExcludeTrailingPathDelimiter(Temp2); Temp2 := AnsiUpperCaseFileName(Temp2);
Result := (Temp1 = Temp2); end; |
Als letztes Problem bleibt noch die "Vista-MultiLanguage-Problematik". Mir ist komplett bewusst, was damit gemeint ist, allerdings nützt mir das nicht viel :-) Ich bräuchte ja eine Funktion "MacheAusÜbersetzungsStringDasKorrekteVerzeichnis". Da habe ich aber bisher nichts gefunden. Ich kann auch nicht pauschal "Programme => Program Files" umwandeln:
- es gibt auch andere Verzeichnisse (Program Data sei hier nur erwähnt)
- ich kann nicht sicherstellen, dass alle "Deutsch" als Sprache eingerichtet haben
=> es muss universell funktionieren.
Bin für jeden Tipp dankbar
Gruß
Stefan
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!