![]() |
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. |
AW: Unterverzeichnisse erstellen
Ich mache sowas immer mit
Delphi-Quellcode:
ForceDirectories
![]() Was verwendest du? |
AW: Unterverzeichnisse erstellen
Ich habe 3 verschiedene Funktionen getestet und bei allen das gleiche
Delphi-Quellcode:
alle 3 gehen nicht.
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; |
AW: Unterverzeichnisse erstellen
Wie lang ist der gesamte UNC-Pfad?
|
AW: Unterverzeichnisse erstellen
Zitat:
Gibt es hier Beschränkungen? |
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? |
AW: Unterverzeichnisse erstellen
Zitat:
Letztendlich landen alle deine drei Verfahren ja bei ![]() |
AW: Unterverzeichnisse erstellen
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt. |
AW: Unterverzeichnisse erstellen
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt. |
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:
) besser ausreizen.
MAX_PATH - Length('C:\') + Length(#0)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz