Zitat:
C:\123\ 456\789\ ist zulässig
Wie schafft man es denn ein Verzeichnis mit [Leerzeichen]456 abzuspeichern? Habe ich bisher noch nie geschafft.
Zitat:
Ich wollte lediglich darauf hinweisen, dass es auch andere legale Pfade gibt, welche durch das entfernen des doppelten \\ zerstört werden
Ich hätte besser anfügen sollen, dass ich an einer anderen Stelle mittlerweile prüfen, ob es sich um einen Netzwerkpfad handelt. Klappt wunderbar.
Delphi-Quellcode:
var
bIsDirectory, bIsNetworkPath: Boolean;
begin
aPath := Trim(aPath);
if aPath = '' then
begin
Result := '';
Exit;
end;
aPath := StringReplace(aPath, '/', '\', [rfReplaceAll]);
bIsNetworkPath := Copy(aPath, 1, 2) = '\\';
bIsDirectory := ist aPath ein Verzeichnis? ...
// Wenn aDir eine Dateiangabe ist warum auch immer, dann ...
// aDir := ExtractFileDir(aDir);
while Pos('\ ', aPath) > 0 do
aPath := StringReplace(aPath, '\ ', '\', [rfReplaceAll]);
if not bIsNetworkPath then
while Pos('\\', aPath) > 0 do
aPath := StringReplace(aPath, '\\', '\', [rfReplaceAll]);
while (AnsiEndsStr('\', aPath)) or AnsiEndsStr('.', aPath) do
aPath := Copy(aPath, 1, Length(aPath) - 1);
Result := Trim(aPath);
end;
Zitat:
Ich habe den Eindruck daß du ein etwas rustikales Vorgehen bevorzugst.
Wie genau meinst du das?
Wenn es hierfür was Fertiges gäbe, würde ich es sofort nehmen.
Auf etwa dieselbe Art und Weise habe ich auch etwas zusammengebaut, was verbotene Zeichen in Dateinamen entfernt.
Da aber mit einem Array.