Newsgroup: it.comp.lang.c++
Titolo: File corrente

Salve a tutto il ng.
Ho un piccolo problema per voi.
Si tratta di una mia esigenza legata ad una particolare applicazione
che sto realizzando. Lavoro su Windows. Una volta compilati i miei
sorgenti ottengo un EXE. Dall'interno del programma, durante
l'esecuzione, vorrei sapere quale è il nome dell'EXE in cui è
contenuto il programma stesso.
Scusate la banalità, sono un novellino.
Ho cercato per bene prima di postare, ma non sono riuscito a trovare
nulla.
Grazie in anticipo.
Mario

 contenuto il programma stesso.
Il newsgroup adatto per queste domande e` it.comp.programmare.win32,
dedicato a quegli aspetti della programmazione che specificamente
riguardano Win32 (qualsiasi Windows a 32 bit) in qualsiasi linguaggio.
Il gruppo it.comp.lang.c++, invece, riguarda quegli aspetti della
programmazione in C++ che sono indipendenti dalla piattaforma che
stai usando (sistema operativo, compilatore, librerie non-standard).
Comunque, l'API che stai cercando e` GetModuleFileName, da
chiamarsi con il primo argomento pari a 0.  Ti invito a passare
su it.comp.programmare.win32 per qualsiasi altra domanda o
richiesta di ulteriore chiarimento su questo tema.
Alex

...

Il nome del tuo eseguibile è il nome che hai dato al progetto

 richiesta di ulteriore chiarimento su questo tema.
Scusate l'intromissione,
ma argc ed argv non sono standard? sono dipendenti dalla piattaforma? il
nome dell'eseguibile non si trova in argv[0]?
#include <iostream>
int main(int argc,char*argv[]){
    std::cout << "Nome eseguibile:" << argv[0] << std::endl;
    return 0;
}
ciao un lurker

 Il nome del tuo eseguibile č il nome che hai dato al progetto
Scusa l'ignoranza - cosa intendi per "progetto"?
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 Scusa l'ignoranza - cosa intendi per "progetto"?
Qualcosa 20 anni avanti al make.
8-))))))
-- 
Luc.

 Qualcosa 20 anni avanti al make.
Se per "avanti" intendi qualcosa che fa automaticamente un millesimo di
quello che make ti permette di fare a mano, la tua definizione di
"avanti" assomiglia molto alla mia definizione di "indietro".
Pero' mi rendo conto che la scelta tra fare mille click al giorno e
premere mille tasti una volta sola e' anche questione di gusti.
Ciao,
Nicola Musatti

 premere mille tasti una volta sola e' anche questione di gusti.
Non l'ho capita ma ho capito... 8)
-- 
Luc.

Il nome del tuo eseguibile è il nome che hai dato al progetto
Non é sempre vero, queste sono cose stabilite da chi ha creato il
compilatore o il sistema di sviluppo(il VC++ per esempio ti permette
di stabilire il nome dell'eseguibile anche se usa il nome del progetto
per default),e sono comunque fuori tema su questo ng.
Il Ghenio
---------
// TODO: Place your ass here

 ma argc ed argv non sono standard? sono dipendenti dalla piattaforma? 
Il contenuto di argv[0] e' dipendente dalla piattaforma.
Su alcune piattaforme c'e' il solo nome dell'eseguibile,
su altre c'e' l'intero percorso.
In ogni caso, se programma per Windows, gli conviene 
usare l'API del sistema operativo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 usare l'API del sistema operativo.
...anche perche` quella e` assai piu` difficile (NON certo
impossibile) che sia "taroccata" per imbrogliarti.
Alex

 Qualcosa 20 anni avanti al make.
Dici SCons, 
http://www.scons.org/doc/HTML/scons-man.html
 ?  Ma
quello e` *30* anni (circa) "avanti al make", e comunque non
mi pare definisca un termine "progetto".  Comunque, e` scritto
in Python, e anche se fosse scritto in C++ non sarebbe parte
dello Standard ISO, quindi e` OT per questo gruppo, no?
Alex

grazie ad entrambi
torno a lurkare :)

 richiesta di ulteriore chiarimento su questo tema.
Grazie anche per la dritta.
Ciao
Mario

 il nome dell'eseguibile non si trova in argv[0]?
argv[0] dovrebbe contenere il nome a cui si e` fatto riferimento quando 
si e` lanciato il programma; ad esempio, in un sistema operativo che 
supporta i link simbolici puo` capitare che argv[0] contenga un nome (ad 
esempio "sh") quando l'eseguibile vero e proprio ha un altro nome (ad 
esempio "bash").
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it


mentre aspettavo per un appuntamento mi venne in mente
i=0;
while(argv[0][i]!='\0') 
   {while( argv[0][i]=='\\' || argv[0][i]=='/')  i++;
    for(j=0;argv[0][i]!='\0' && argv[0][i]!='\\' &&  
argv[0][i]!='/';i++,j++) 
    partenza[j]=argv[0][i];
   }
 partenza[j]='\0';
in char * partenza; ci dovrebbe essere il nome del file di partenza
sia in UNIX sia in Windows. In windows+bcc32 sembra funzionare. 
Dovrebbe funzionare se il compilatore da il path in modo UNIX o in
modo windows, e anche se il compilatore da solo il nome.
Ma non ne sono sicuro :)))
Per curiosità provatela con i vostri sistemi.
Saluti

Per curiosità provatela con i vostri sistemi
Si dovrebbe provare il caso in cui il file si trova alla radice del
dispositivo per esempio in C:  o in casi particolari di nomi che
contengono '/' o '\' (se un nome di file può contenere tali caratteri)

 esempio "bash").
Questa convenzione e' fondamentale sotto Unix: l'invocazione di una
shell come shell di login e' identificata dal fatto che argv[0] comincia
con un '-'.
E' pure usuale far assumere diverse personalita' ad un programma in
funzione del valore di argv[0].
Ciao,
Nicola

On Wed, 23 Jan 2002 08:14:54 GMT, qwe...@afdf.afdfa (qwerty) wrote:
i=0; j=0;
