PDA

Visualizza versione completa : [VB6] Riga di comando


gkcuvb
18-06-2004, 11.32.52
C'è qualcuno che sa se la lunghezza della riga di comando è limitata? Il mio problema è che vorrei passare ad un'applicazione una stringa sql (che ha lunghezza variabilissima) ma devo essere sicura che, durante il passaggio, non venga troncata.
Grazie

P8257 WebMaster
18-06-2004, 11.36.29
Si,
non ti conviene eccedere i 64 caratteri, utilizza un file temporaneo o qualche altro metodo per scambiare informazioni che tra l'altro è anche più sicuro.

Bye :cool:

LoryOne
18-06-2004, 14.11.41
Confermo quanto detto da WebMaster, almeno per quanto riguarda il metodo più sicuro e professionale di affrontare l'argomento.

Ci sono due considerazioni da fare.
1) Se dal prompt del DOS lanci un applicativo il quale legge la rga di comando impartitagli, tale riga di comando ha una lunghezza fissa dettata dall'impossibilità di digitare un numero di caratteri superiore al limite preimpostato.
(Prova a scrivere un nome di file e continua a premere la barra spaziatrice. Ad un certo punto si bloccherà)

2) Se il tuo programma (presumibilmente in VB) ne lancia un'altro (presumibilmente anch'esso in VB) le cose cambiano.
Per sapere se la riga di comando è limitata, basta fare così:

- Crea un form con un pulsante.
Nell'evento Click inserisci
MsgBox Len(Command$)
Compila e crea il tuo programma da richiamare

-Crea un atro form che lancia il precedento con un pulsante
Nell'evento Click inserisci
Shell "[nome percorso exe] " & space$(2000)

La riga di comando sarà di 2000 caratteri spazio.
Se premendo il pulsante del programma apparirà un messagebox con l'indicazione della lunghezza pari a 2000, saprai che puoi andare ben oltre i 64 caratteri ;) :)

P8257 WebMaster
18-06-2004, 15.10.21
Aggiungo che è possibile generare un file intermedio temporaneo (per impartire comandi) anche a partire da un file batch senza bisogno di istruzioni supplementari, semplicemente reindirizzando l'output dell'echo su tale file.

Scrivi se ti interessano esempi.

Bye :cool:

LoryOne
18-06-2004, 16.16.57
Vorrei solo fare una piccola correzione alla stupidità per non dire altro che ho scritto nel post precedente.

Space$() non è la funzione corretta da utilizzare, bensì String$(2000,il carattere che volete purchè diverso da 32)

Scusate.

gkcuvb
21-06-2004, 17.14.30
Ho fatto un po' di prove e ho scoperto quanto segue :
-se tento di fare l'operazione in debug cioè scrivendo i parametri nella finestra proprietà-argomenti della riga di comando, la stringa viene troncata;
-se invece faccio il passaggio con i due eseguibili la cosa funziona perfettamente.
Comunque se mi dite che è più professionale usare il file esterno....allora seguo il vostro consiglio che certamente avrete più esperienza di me!
Grazie

P8257 WebMaster
21-06-2004, 17.21.49
Non è strettamente legato alla professionalità .. ma è anche più "sicuro" .. io non so su quali ambienti e sistemi operativi il tuo programma debba girare .. ma so di per certo che il buffer di linea di comando di dos/win95/98/me è più piccolo di quello dei sistemi NT.. questo potrebbe crearti potenziali problemi nel passare stringhe particolarmente lunghe, menre col file non avresti di questi disagi.

Bye :cool:

LoryOne
21-06-2004, 19.06.36
Come vedi è una pura questione di lunghezza di stringhe.
Ora sta a te decidere. ;)

LoryOne
21-06-2004, 19.10.31
-se tento di fare l'operazione in debug cioè scrivendo i parametri nella finestra proprietà-argomenti della riga di comando, la stringa viene troncata;


Questo perchè si suppone che le righe di comando non siano così lunghe. E' un "problema" insito nell' IDE, non negli eseguibili generati. ;)

P8257 WebMaster
22-06-2004, 09.36.23
LoryOne ha scritto:


Questo perchè si suppone che le righe di comando non siano così lunghe. E' un "problema" insito nell' IDE, non negli eseguibili generati. ;)

Esattamente ..
Quando si nota che qualcosa in debug non è permesso o dal debugger stesso (come in questo caso) oppure se vengono segnalati "warning" di vario tipo, bisognerebbe subito rizzare le antenne su eventuali problemi in fase di deploy o anche di portabilità su sistemi affini.

Bye :cool:

gkcuvb
22-06-2004, 11.06.03
Grazie a tutti per i preziosi consigli! Ho implementato il mio applicativo utilizzando un file esterno e per adesso funziona alla perfezione...speriamo lo faccia anche in mano dell'utente finale!