Newsgroup: it.comp.lang.delphi
Titolo: Riga di comando in Delphi

Salve a tutti.
Con il mio programma vorrei aprire un file il cui nome è in riga di comando.
Come posso fare?
Grazie mille
Sandro

> Con il mio programma vorrei aprire un file il cui nome è in riga di
comando.
Ti servono le funzioni:
ParamCount: Ti da il numero di parametri
ParamStr: ti da l'elenco dei parametri
ciao
--
*-*-*-*-*-*-*-*-*-*-
Per rispondere in privato togliere 1975 dall'indirizzo di posta
*-*-*-*-*-*-*-*-*-*-

 ParamStr: ti da l'elenco dei parametri
... e cmdLine e' un puntatore all'intera stringa
a mio avviso piu' comodo
Ciao,
Alan Solo

Come posso fare?
Delphi definisce CmdLine come variabile stringa globale contenente
tutta la riga di comando.  Se devi interpretare la riga (estrarre
opzioni, nomi di file, ecc...) e' abbastanza scomoda, ti conviene
usare ParamCount e ParamStr (v. help).

 ha scritto:

il mondo e' bello perche' e' vario
(ho appena detto l'esatto contrario) ;)
cmdLine secondo me e' meglio perche'
se viene passata una cosa del tipo
C:\Documenti\File da aprire.txt
avrai 3 parametri
- "C:\Documenti\File"
- "da"
- "aprire.txt"
"problema" scavalcabile se la sringa viene passata tra apici
tuoexe.exe "NomeFile" altrimenti l'uso di param* lo trovo scomodo
Ciao,
Alan Solo

tuoexe.exe "NomeFile" altrimenti l'uso di param* lo trovo scomodo
Visto che addizionare i vari ParamStr non fa altro che restituire la
stringa contenuta in CmdLine e visto che l'analisi della riga di
comando consiste in suddivisione della testa in token, non capisco,
onestamente, in che modo Param* potrebbe mai essere piu' scomodo di
CmdLine.  CmdLine impone la scansione della stringa e non aiuta per
nulla nel caso da te citato, perche' comunque non riusciresti a
riconoscere dove iniza e finisce il nome di un file.  Da che mondo e
mondo la scansione della linea di comando porta a separare ogni parola
trovata dall'altra e questo lavoro lo troviamo gia' pronto in Param*.
D'altronde in C e in C++ si segue una strada simile nel passare gli
argomenti intero argc e l'array di stringhe argv alla funzione main e
nessuno mai si e' lamentato della mancanza di un puntatore contenente
l'intera riga di comando.

 comando.
io mi sono lamentato, cio' andava bene ad es. com programmini dos (nomi
standard 8+3 caratteri) adesso io, in alcuni casi suggerisco di usare
cmdLine, poi fai un po' come vuoi, stiamo gia' discutendo anche troppo su
questo problema tanto banale quanto inutile
Ciao,
Alan Solo

cmdLine, poi fai un po' come vuoi, 
Suggerisci male.  Suggerisci allora, anche una routine che estrapoli i
diversi parametri, perche' non vedo che utilita' possa avere usare
CmdLine, senza poter accedere ai singoli elementi che essa contiene.
Non offre alcuna utilita' aggiuntiva all'uso di ParamCount e ParamStr
nella trattazione di nomi di file con spazi, perche' l'impossibilita'
di ottenere il nome del file in modo preciso esiste comunque.
Nel caso si usino (come si dovrebbe) gli apici, contiene le stesse
identiche informazioni che i valori di ParamStr, solo che questi
ultimi le hanno gia' suddivise e pronte all'uso.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

 wrote in message
97qqp0$q6ffu$1...@ID-44131.news.dfncis.de...


 La *domanda del thread* ha bisogno di risposte utili.
allora rileggiti *La *domanda del thread** per cortesia
[snip]
v. sopra

Come posso fare?
RISPOSTA :
Usa ParamStr e ParamCount.


 Usa ParamStr e ParamCount.
QUESTA E' LA *TUA* RISPOSTA E NON HO MAI DETTO CHE NON VADA BENE,
HO DETTO CHE IN ALCUNI CASI, COME IL PRESENTE, CMDLINE LO TROVO PIU'
COMODO
NomeDiStoCazzoDiFile := cmdLine;
COME SI PUO' FARE
NomeDiStoSTRACazzoDiFile := ParamStr(1);
PERO NEL *TUO* CASO BISOGNA AVERE L'ACCORTEZZA DI PASSARE IL NOME DEL
FILE TRA APICI (COME GIA' AVEVO SPECIFICATO ALL'INIZIO)
PER FAVORE NON FARE A FINTA DI NON AVER CAPITO PER L'ENNESIMA VOLTA, TI
PREGO.
c:\> mandaafanculo Andrea La Forgia
Error: File "Andrea" not found
c:\> mandaafanculo "Andrea La Forgia"
c:\>