Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Unterverzeichnisse erstellen (https://www.delphipraxis.net/196390-unterverzeichnisse-erstellen.html)

zeras 17. Mai 2018 20:11

Unterverzeichnisse erstellen
 
Hallo,

ich habe ein Programm, welches unter anderem Unterpfade auf einem Server erzeugen muss.
Wenn ich dem Pfad auf dem Server ein Laufwerk zugewiesen habe, funktioniert meine Routine zum Erzeugen von einem oder mehreren Unterpfaden.
Wenn ich das aber direkt mit dem UNC Pfad mache, geht das nicht.
Sollte das nicht das gleiche sein? Rechte müssen ja da sein, da ich bei der Laufwerkszuweisung die Unterpfade erzeugen kann.

WiPhi 17. Mai 2018 20:30

AW: Unterverzeichnisse erstellen
 
Ich mache sowas immer mit
Delphi-Quellcode:
ForceDirectories
http://docwiki.embarcadero.com/Libra...rceDirectories

Was verwendest du?

zeras 17. Mai 2018 21:32

AW: Unterverzeichnisse erstellen
 
Ich habe 3 verschiedene Funktionen getestet und bei allen das gleiche
Delphi-Quellcode:
function MkDirEx(bez: string): boolean;
var verz : string;

begin

//  Result := ForceDirectories(bez); //Test1 180517

//  TDirectory.CreateDirectory(bez); //Test2 180517


//Original
  if copy(bez, length(bez), 1) <> '\' then bez := bez + '\';
  result := False;
  verz := copy(bez, 1, 2);
  delete(bez, 1, 3);
  while length(bez) > 0 do begin
    verz := verz + '\' + copy(bez, 1, pos('\', bez) -1);
    delete(bez, 1, pos('\', bez));
    {$i-}
      mkdir(verz);
    {$i+}
    case IOresult of
         0,
         183 : begin end;
         else exit
    end;
  end;
  result := True;


End;
alle 3 gehen nicht.

Uwe Raabe 17. Mai 2018 22:03

AW: Unterverzeichnisse erstellen
 
Wie lang ist der gesamte UNC-Pfad?

zeras 17. Mai 2018 22:12

AW: Unterverzeichnisse erstellen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1402390)
Wie lang ist der gesamte UNC-Pfad?

Muss ich morgen sehen, da dies auf Arbeit passiert.
Gibt es hier Beschränkungen?

KodeZwerg 17. Mai 2018 22:24

AW: Unterverzeichnisse erstellen
 
(bez: string), wie sieht der bez aus? Gib da mal ein Konkretes Beispiel.
Ein Unc Pfad und ein Lokal Pfad kann man nicht direkt vergleichen da der Unc gemapped sein kann (hat anderen Namen als physisch vorhanden ist)
Von daher, gebe da mal mehr Info's. Um einen Unc Pfad in den tatsächlichen zurück zu verwandeln, da kenne ich nur den Api Befehl "NetShareGetInfo". Mit String copy/delete usw. kommst Du so nie ans Ziel.

Beispiel:
Real = c:\test\klappt gemapped als "SharedTest".
UNC = \\MeinRechner\SharedTest
Wie will willst du mit String manipulation an "c:\test\klappt" rankommen?

Uwe Raabe 17. Mai 2018 23:10

AW: Unterverzeichnisse erstellen
 
Zitat:

Zitat von zeras (Beitrag 1402391)
Gibt es hier Beschränkungen?

Je nach Windows-Version und Einstellungen kann das auf 248 Zeichen beschränkt sein. Wird vom UNC-Pfad ein ausreichender Teil auf einen Buchstaben gemapt, könnte das dann schon wieder funktionieren.

Letztendlich landen alle deine drei Verfahren ja bei CreateDirectory.

KodeZwerg 17. Mai 2018 23:45

AW: Unterverzeichnisse erstellen
 
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt.

KodeZwerg 18. Mai 2018 00:27

AW: Unterverzeichnisse erstellen
 
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt.

himitsu 18. Mai 2018 01:22

AW: Unterverzeichnisse erstellen
 
Per se kann UNC mit längeren Namen umgehen. (auch wenn es nicht immer funktioniert)

Man kann jeweils bestehende und gerade erstellte Pfade kürzen, auf die "alten" 8.3-ShortNames, und so die 256 Zeichenlänge (
Delphi-Quellcode:
MAX_PATH - Length('C:\') + Length(#0)
) besser ausreizen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Seite 1 von 2  1 2   

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