Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Eine Pfadangabe "säubern"? (https://www.delphipraxis.net/193807-eine-pfadangabe-saeubern.html)

p80286 12. Sep 2017 00:02

AW: Eine Pfadangabe "säubern"?
 
Zitat:

Zitat von Glados (Beitrag 1380855)
Zitat:

Ich habe den Eindruck daß du ein etwas rustikales Vorgehen bevorzugst.
Wie genau meinst du das?

Nun z.B. ist c:\Daten. durchaus eine zulässige Angabe. Da einfach den Punkt zu löschen ist eher ein rustikales Vorgehen.

Gruß
K-H

TigerLilly 12. Sep 2017 07:08

AW: Eine Pfadangabe "säubern"?
 
Ein richtiger Pfad ist noch lange nicht gültig.

Gut wäre es, wenn die Pfade beim Eingeben validiert werden.

Sie nachträglich zu bereinigen ist problematisch, weil du da raten musst, was gemeint sein könnte. Ein ":" im Pfad ist sicher falsch, aber ev. war ja das "L" darüber gemeint - ein Entfernen des ":" macht den Code also sicher nicht gültig - obwohl syntaktisch richtig.

Glados 12. Sep 2017 07:53

AW: Eine Pfadangabe "säubern"?
 
Das ist gut zu wissen. Ich sollte dem Windows-Explorer weniger Beachtung schenken.

Dann kann das hier ja schon einmal raus
Delphi-Quellcode:
while Pos('\ ', aPath) > 0 do
 aPath := StringReplace(aPath, '\ ', '\', [rfReplaceAll]);
Auch geändert habe ich das hier
Delphi-Quellcode:
 // bIsNetworkPath := Copy(aPath, 1, 2) = '\\';
 bIsNetworkPath := IsUNCPathEx(aPath);
Delphi-Quellcode:
// (teils aus der DP-Suche)

function IsUNCPathEx(aPath: string): Boolean;
begin
 // true: aPath = \\server\path, \\?\server\path or \\?\UNC\server\path
 Result := GetUNCPrefix(aPath) <> '';
end;

function GetUNCPrefix(aPath: string): string;
begin
 Result := '';

 case GetExtendedPrefix(aPath) of
  pptExtended:
   Result := '\\?\';
  pptExtendedUNC:
   Result := '\\?\UNC\'
 else
  if Copy(aPath, 1, 2) = '\\' then
   Result := '\\';
 end;
end;

p80286 12. Sep 2017 08:04

AW: Eine Pfadangabe "säubern"?
 
Ich hätte da noch was:
Code:
\\.\%tmp%\123.zip
(ist ein gültiges und vorhandenes Verzeichnis)
oder
Code:
\\.\D:\
Gruß
K-H

Glados 12. Sep 2017 08:07

AW: Eine Pfadangabe "säubern"?
 
Kommt man damit ins Temp-Verzeichnis? Nehme ich mal stark an

p80286 12. Sep 2017 08:15

AW: Eine Pfadangabe "säubern"?
 
Zitat:

Zitat von Glados (Beitrag 1380882)
Kommt man damit ins Temp-Verzeichnis? Nehme ich mal stark an

Kommt darauf an was auf dem entsprechenden Rechner definiert wurde, aber in den meisten Fällen ja.
übrigens
Code:
"c:/Daten/Temperaturen"
funktioniert auch!

Gruß
K-H

noisy_master 12. Sep 2017 08:16

AW: Eine Pfadangabe "säubern"?
 
Das
Delphi-Quellcode:
while Pos(....)
kannst du weglassen, weil du ja schon ein rfReplaceAll drin hast....

TigerLilly 12. Sep 2017 08:20

AW: Eine Pfadangabe "säubern"?
 
https://msdn.microsoft.com/en-us/lib...).aspx#maxpath

sakura 12. Sep 2017 08:27

AW: Eine Pfadangabe "säubern"?
 
Zitat:

Zitat von noisy_master (Beitrag 1380888)
Das
Delphi-Quellcode:
while Pos(....)
kannst du weglassen, weil du ja schon ein rfReplaceAll drin hast....

Nope, da liegst Du falsch.

Teste mal folgenden Code:
Delphi-Quellcode:
procedure TestWhile;
var
  SomeText: string;
const
  SOURCE = 'ab\\\cd';
begin
  SomeText := SOURCE;
  while Pos('\\', SomeText) > 0 do
    SomeText := StringReplace(SomeText, '\\', '\', [rfReplaceAll]);

  Writeln('WHILE: ', SomeText);

  SomeText := SOURCE;
  SomeText := StringReplace(SomeText, '\\', '\', [rfReplaceAll]);
  Writeln('DIRECT: ', SomeText);
end;
...:cat:...

uligerhardt 12. Sep 2017 08:33

AW: Eine Pfadangabe "säubern"?
 
Schuss ins Blaue: MSDN-Library durchsuchenPathCanonicalize ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Seite 2 von 4     12 34      

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