Apertura File fallisce

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#1
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 :
Codice:
(setq Percorso "D:\\AltProvvisori\\LCfile.dat")
tutto funziona perfettamente, se invece faccio derivare il percorso tramite la ClipBoard di Windows 10 :
Codice:
(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
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#2
scusa ma dove apri il file?
E' RUNAPP la chiamata di apertura? io non l'ho trovata tra le funzioni LISP
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#3
Grazie Cristallo ho omesso l'apertura del file :
Codice:
(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.
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#4
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)
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#5
Questi sono i risultati ottenuti con le diverse opzioni :
Opzione 1 - Inserimento del nome del file da aprire (percorso) direttamente dalla barra di comando
Codice:
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

Codice:
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

Codice:
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

Codice:
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

Codice:
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
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#6
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?
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#8
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.
Codice:
(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 :
Codice:
(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.
Codice:
 (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.
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#9
prova a far elaborare la stringa ad autolisp.
Una cosa inutile, del tipo (setq STRINGA2 (strcat Filename ""))
Vedi se la tratta come una stringa