• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

ファイルの開きは失敗します

  • Thread starter Thread starter Angelo2449
  • Start date Start date

Angelo2449

Guest
salve a tutti,
sto impazzendo nel tentativo di aprire un file, ricevo sempre il messaggio :
> errore: tipo di argomento errato: file nil <

il nome del file, completo del percorso è > d:\altprovvisori\lcfile.dat < che tradotto il autolisp fa > d:\\altprovvisori\\lcfile.dat <.

se inserisco il percorso in modo diretto :
Code:
(setq percorso "d:\\altprovvisori\\lcfile.dat")
tutto funziona perfettamente, se invece faccio derivare il percorso tramite la clipboard di windows 10 :
Code:
(setq percorso nil)
(runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)
(while (= percorso nil)
            (setq percorso (getcliptext))
        );;while

        (princ "\n")
        (princ "percorso >>>>> ")
        (princ percorso)
        (princ "\n")
ottenendo > d:\\altprovvisori\\lcfile.dat < compare il messaggio di errore di cui sopra e l'operazione fallisce.

ho inserito anche gli apici prima e dopo > "d:\\altprovvisori\\lcfile.dat" ma il risultato è il medesimo.
grazie
 
scusa ma dove apri il file?
e' runapp la chiamata di apertura? io non l'ho trovata tra le funzioni lisp
 
grazie cristallo ho omesso l'apertura del file :
Code:
(setq percorso nil)

    (runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)

        (while (= percorso nil)
            (setq percorso (getcliptext))
        );;while

        (princ "\n")
        (princ "percorso >>>>> ")
        (princ percorso)
        (princ "\n")

       (setq frd (open percorso "r"))

i risultati sono questi :

percorso >>>>> d:\\altprovvisori\\lcfile.dat
punto di origine :; errore: tipo di argomento errato: file nil
grazie.
 
credo ti stia segnalando che la variabile file contiene un tipo di dato non coerente con quello richiesto dal comando, o che sia nil (inesistente)
 
questi sono i risultati ottenuti con le diverse opzioni :
opzione 1 - inserimento del nome del file da aprire (percorso) direttamente dalla barra di comando
Code:
comando: lcdraw

(setq filename (getstring "\npercorso completo : "))

percorso completo : d:\altprovvisori\lcfile.dat

filename >>>>> d:\altprovvisori\lcfile.dat

d:\altprovvisori\lcfile.dat

.........
.........   funziona !!!!!!!!!!!

opzione 2 - inserimento tramite programma esterno - non apici - barra rovescia semplice

Code:
comando: lcdraw

(runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)
(setq filename (getcliptext))

filename >>>>> d:\altprovvisori\lcfile.dat

d:\altprovvisori\lcfile.dat

; errore: tipo di argomento errato: file ni
l

opzione 3 - inserimento tramite programma esterno - non apici - barra rovescia doppia

Code:
comando: lcdraw

(runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)
(setq filename (getcliptext))

filename >>>>> d:\\altprovvisori\\lcfile.dat

d:\\altprovvisori\\lcfile.dat

; errore: tipo di argomento errato: file nil

opzione 4 - inserimento tramite programma esterno - con apici - barra rovescia doppia

Code:
comando: lcdraw

(runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)
(setq filename (getcliptext))

filename >>>>> "d:\\altprovvisori\\lcfile.dat"

"d:\\altprovvisori\\lcfile.dat"

; errore: tipo di argomento errato: file nil

opzione 5 - inserimento tramite programma esterno - con apici - barra rovescia semplice

Code:
comando: lcdraw

filename >>>>> "d:\altprovvisori\lcfile.dat"

"d:\altprovvisori\lcfile.dat"

; errore: tipo di argomento errato: file nil

a questo punto non so più cosa inventare!!!
grazie
 
io credo che la difficoltà è nella "natura" di cio che lcdraw produce.
e' una stringa pura?
la funzione getcliptext non è di autolisp. l'hai creata tu? cosa restituisce?
 
proseguo con il racconto :
l'applicazione > inputpregeo.exe < trasferisce negli appunti di windows 10 il nome del file da aprire completo di percorso.

la funzione > (getcliptext) < restituisce il contenuto degli appunti di windows quindi il nome del file da aprire completo di percorso.
Code:
(defun getcliptext(/ html result)
        (setq html (vlax-create-object "htmlfile"))
        (setq result (vlax-invoke (vlax-get (vlax-get html 'parentwindow) 'clipboarddata) 'getdata "text"))
        (vlax-release-object html)
        result
    );;defun

non capisco perché se inserisco il nome del file dalla barra dei comandi di autocad :
Code:
(setq filename  (getstring "\npercorso completo : "))
tutto funziona perfettamente con la stringa > d:/altprovvisori/lcfile.dat <.

se estraggo la stessa stringa dagli appunti di di windows 10, non funziona.
Code:
 (runapp "c:\\autocadsupporto\\libertytre\\inputpregeo.exe " "c:\\autocadsupporto\\libertytre\\inputpregeo.tkn" :vlax-true)
        (setq filename (getcliptext))
risultato : d:/altprovvisori/lcfile.dat
eppure è la stessa cosa, la medesima stringa|
grazie.
 
prova a far elaborare la stringa ad autolisp.
una cosa inutile, del tipo (setq stringa2 (strcat filename ""))
vedi se la tratta come una stringa
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top