AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unterverzeichnisse erstellen

Ein Thema von zeras · begonnen am 17. Mai 2018 · letzter Beitrag vom 18. Mai 2018
Antwort Antwort
Seite 1 von 2  1 2      
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#1

Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 20:11
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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 20:30
Ich mache sowas immer mit
ForceDirectories http://docwiki.embarcadero.com/Libra...rceDirectories

Was verwendest du?
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#3

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 21:32
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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 22:03
Wie lang ist der gesamte UNC-Pfad?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#5

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 22:12
Wie lang ist der gesamte UNC-Pfad?
Muss ich morgen sehen, da dies auf Arbeit passiert.
Gibt es hier Beschränkungen?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 22:24
(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?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 23:10
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Unterverzeichnisse erstellen

  Alt 17. Mai 2018, 23:45
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt.
Gruß vom KodeZwerg

Geändert von KodeZwerg (18. Mai 2018 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Unterverzeichnisse erstellen

  Alt 18. Mai 2018, 00:27
edit
Meine Lösung war anscheinend falsch, um Platz zu sparen entfernt.
Gruß vom KodeZwerg

Geändert von KodeZwerg (18. Mai 2018 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Unterverzeichnisse erstellen

  Alt 18. Mai 2018, 01:22
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 (MAX_PATH - Length('C:\') + Length(#0) ) besser ausreizen.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 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