Hallo,
habe den LISP-Befehl "open" in unserem Betriebsbedingungen nochmal genau geprüft
1. Funktion im Netzwerk: ist ok (N: ist ein Netzwerkpfad)
2. Betriebssystem: Windows 2000
3. Schreib- und Lesezugriff: ist gewährleistet
4. ACAD-Version: 2000, 2000i, bzw. 2002 (also die R15-Familie)
(Achim hatte seinerzeit mit der R16-Familie getestet und von 255 Zeichen gesprochen)
Getestet mit Lesezugriff:
Bei "unseren" Bedingungen ist so, daß 126 Zeichen akzeptiert werden, 127 hingegen nicht.
Dabei ist es unerheblich, ob Leerzeichen, anerkannte Sonderzeichen oder Umlaute dabei sind; ebenso wie es unerheblich ist, ob der Pfadname oder der Dateiname lang ist. Also wenn ein weiteres Unterverzeichnis mit 10 Zeichen hinzukommt, muß der Dateiname um 11 Zeichen kürzer sein (Slash und Ordner = 11 Zeichen), damit die gesamtzahl von 126 Zeichen nicht überschritten wird.
Beispielpfad mit 127 Zeichen:
"N:\\18-02 Daun\\7_CAD\\Umbau 1.OG Ortho+Physik\\ankommende
Pläne\\A_Plan06\\Eingang_060721\\10 Zeichen\\27Z 1ie und klad orthopädie.ltc"
Durch Wegname 1 Zeichens im Pfad- oder Dateinamen geht es
Dies wurde auf 2 verschiedenen Rechnern mit ACAD2000 bzw. 2002 getestet bei jeweils gleichem Ergebnis.
Vieleicht gibt es noch andere User, die mit R15-Versionen arbeiten und ähnliches festgestellt haben.
Die Ursache dieses Phänomens ist wohl nur Autodesk-Insidern bekannt, wenn überhaupt. Tatsache ist jedoch, dass es diese Einschränkung gibt und sie evtl. von weiteren verschiedenen bekannten und unbekannten Faktoren abhängt.
Interessanterweise werden beim Schreiben Dateien mit mehr als 127 Zeichen im Pad/Dateinamen zunächst wohl erzeugt
(setq Dateidescriptor (open Dateiname "w"))
allerdings wird nil zurückgegeben, so dass
(write-line "beliebiger String" Dateidescriptor)
nicht mehr greifen kann
Habe nun die fso (vlax-Lösung) von Andi getestet. Hier wird die Hürde einwandfrei genommen (zumindest bei den getesteten 145 Zeichen) Vielen Dank für den Lösungsansatz.
Habe noch folgende Definition ergänzt:
(defun fso:read-line (datobj /)(vlax-invoke-method datobj 'readline))
da ich ja auch die erzeugten Dateien auslesen möchte
übrigends: wo finde ich in der Hilfe die Befehlsreferenz für 'opentextfile, 'writeline, 'readline ..?
Da ich ein Lisper seit 1993 (ACAD R12) bin, arbeite ich noch sehr gern mit dem "Purem" Lisp ohne VL-Zusätze auch wegen der Kompatibilität mit diversen LT-Extendern. Dennoch die unbedarfte Frage:Welcher Sprache sind diese Zusätze entlehnt? ActiveX, Visual-Lisp, oder beides oder VBA
PS:
Zitat:
der Vollständigkeit halber möchte ich doch noch auf die (undokumentierte) Funktion fnsplitl hinweisen :
(fnsplitl "d:\\ACAD\\acad.exe") --> ("D:\\ACAD\\" "acad" ".exe")
wo man mittels car / cadr / caddr auf die einzelnen elemente des Dateinamens zugreifen kann..
Hallo Thomas und Kollegen,
ich finde die Formulierung "wo man ..." allein schon deshalb so super, weil sie aufzeigt, dass man es auf CAD.de mit ganz normalen Menschen wie du und ich zu tun hat. Gerade das ist das schöne an CAD.de. Ich finde, auch das sollte mal ab und zu gesagt werden.
...übrigens, gibt es da noch mehr so undokumentierte Funktionen?
Grüße Armin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP