AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Erst alles klein schreiben (LowerCase) und dann "jeden ersten Buchstaben nach einem Backslash groß".
|
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Zitat:
|
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Warum?
Code:
Oder was hab eich da jetzt übersehen?
C:\MeinOrdner\meinDritterOrdner\ -> C:\meinordner\meindritterordner\ -> C:\Meinordner\Meindritterordner\
|
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Delphi-Quellcode:
Alternative:
function TitleCase2(const sText: String;
const bLowerCaseFirst: Boolean = True): String; const cDelimiters = [#9, #10, #13, ' ', ',', '.', ':', ';', '"', '\', '/', '(', ')', '[', ']', '{', '}']; var iLoop: Integer; begin Result := sText; if (Result <> '') then begin Result[1] := UpCase(Result[1]); for iLoop := 2 to Length(Result) do if (Result[iLoop - 1] in cDelimiters) then Result[iLoop] := UpCase(Result[iLoop]); end; end; function GetLongPathName(ShortName:String):String; var NameS: String; Len : integer; Buffer: array[0..MAX_PATH] of Char; pDummy: PCHAR; begin Len := GetFullPathName(PChar(ShortName), 0, PChar(result), pDummy); SetLength(NameS, Len); GetFullPathName(PChar(ShortName), Len, PChar(NameS), pDummy); result := TitleCase2(NameS); end; procedure TForm1.Button9Click(Sender: TObject); begin Caption:= GetLongPathName('c:\windows\system32'); end;
Delphi-Quellcode:
function TitleCase3(const sText: String;
const bLowerCaseFirst: Boolean = True): String; var iLoop: Integer; begin Result := sText; if (Result <> '') then begin Result[1] := UpCase(Result[1]); for iLoop := 2 to Length(Result) do if (not (Result[iLoop - 1] in ['a'..'z','A'..'Z','0'..'9'])) then Result[iLoop] := UpCase(Result[iLoop]); end; end; function GetLongPathName(ShortName:String):String; var NameS: String; Len : integer; Buffer: array[0..MAX_PATH] of Char; pDummy: PCHAR; begin Len := GetFullPathName(PChar(ShortName), 0, PChar(result), pDummy); SetLength(NameS, Len); GetFullPathName(PChar(ShortName), Len, PChar(NameS), pDummy); result := TitleCase3(NameS); end; procedure TForm1.Button9Click(Sender: TObject); begin Caption:= GetLongPathName('C:\Windows\System32\ATEST\123Test'); end; |
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Zitat:
Aber vorzugsweise sollte sundance sich halt mal äußern. |
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Sorry für die Verwirrung bedingt durch die unklare Formulierung.
Es ist tatsächlich so (Glaskugel = OK), dass mich die korrekte Schreibweise (Groß-/Kleinschreibung) interessiert. Und das, wie schon angemerkt, nicht aus funktionellen, sondern nur aus optischen Gründen. |
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Zitat:
|
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Was liefert das zurück:
Delphi-Quellcode:
GetFullPathName("c:\windows\system32\.")
GetLongPathName kann dir eventuell den Pfad ändern, wenn du einen kurzen Namen übergibts (c:\win~12). |
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Delphi-Quellcode:
-> c:\windows\system32 (das hatte ich auch schon probiert... :?)
GetFullPathName('c:\windows\system32\.')
Delphi-Quellcode:
-> c:\Windows\System32
GetLongPathName('c:\windows\system32')
Damit kann ich "leben"... Es ist ohnehin fraglich, ob die "richtige" Schreibweise für Laufwerksbuchstaben groß oder klein ist... (ich hätte schwören können, dass ich die Funktion schon probiert habe...) Vielen Dank an alle Beteiligten für die spontane Hilfe! |
AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt
Zitat:
Zitat:
Denn sowohl Windows macht intern einen Unterschied und - es wird noch besser - NTFS ist es auch wichtig. Aber wenn du ausdrücken wolltest, daß Groß- und Kleinschreibung in Windows für einen Delphiprogrammierer egal ist, hast du absolut recht. Denn aus dem Win32-Subsystem kommste mit Delphi im Prinzip nicht raus. Wollte nur klarstellen, daß intern durchaus unterschieden wird und ich in meiner Funktion als Treiberentwickler sehr wohl einen Stream ("Dateiinstanz") unter verschiedenen Namen zu verschiedenen Zeitpunkten sehen kann - und zwar nicht nur während die Datei gerade umbenannt wird. Für mich ist das Flag OBJ_CASE_INSENSITIVE dann wichtig. Zitat:
Übrigens kann man einfach - solange es sich um ASCII-Zeichen handelt - das Bit $20 (weil: Ord('a') - Ord('A') = $20) setzen um Kleinschreibung oder löschen um Großschreibung zu erzwingen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz