Newsgroup: it.comp.lang.c
Titolo: Verificare la presenza di un file in Win32

---------------------------------------------------------<

   wsprintf(acSearchFile, pcSearchFile);
gravissimo, anche se dubito che sia quello che ti morde:
il secondo parametro di wsprintf e` una *stringa di formato*,
se contiene dei caratteri '%' DEVE essere seguita da
opportuni altri argomenti.  Per pura copia di stringhe,
usare strcpy, NON sprintf o equivalenti... in questo tipo
di funzione e` meglio che la stringa di formato sia una
costante o qualcosa di costruito al volo secondo le nostre
necessita`, comunque sotto totale controllo del programma,
che deve garantire la coerenza fra la stringa (i % che essa
contiene) e gli argomenti passati alla chiamata.
Altra ipotesi di errore e` che possa mancare uno zero di
terminazione all'argomento; questo potrebbe causare il
crash.
Infine, non hai usato FindClose per concludere la ricerca
iniziata con FindFirstFile, quindi c'e` una perdita di risorse,
ma, ancora, non e` questo che puo` provocare un crash
(certo non immediatamente).
Alex

Fine<
mi viene generato il solito Errore di Protezione.
E' forse perchè non creo una Finestra o qualcosa del genere (cioè un
WinMain troppo 'scarno') o cosa (?:-((
Io non so più cosa fare comunque ti ringrazio per avermi risposto con
ottimi consigli, validi indipendentemente dal problema principale.
Cordiali saluti, UDA.


> >Utilizzo il compilatore GNU-Win32 b18 della Cygnus e mi trova a dover
    [snip]
Non ho a disposizione l'esatto ambiente in questione per verificare,
e tra l'altro e` un release davvero vecchio; persino nelle riviste oggi
in edicola trovi b19, sul sito Cygnus non so ma scommetterei almeno
b20.  Consiglio l'upgrade.  Comunque...:
Su VC++5, il tuo programma non mi da` nessun errore runtime -- ho
cambiato STDCALL in WINAPI per compilarlo, dopo avere aggiunto
le due righe iniziali:
#define STRICT
#include <windows.h>
non so bene perche` non trovasse STDCALL, ma non importa.
Su MINGW32 col compilatore EGCS 1.02 (il port di Mumit Khan):
linkando con:
gcc -g -o pep.exe pep.cpp -lUser32 -lKernel32
l'errore si riproduce; invece, linkando con:
gcc -g -o pep.exe pep.cpp -lUser32
nessun errore runtime.  Non so perche` Kernel32 sia ridondante
(il link chiude bene anche senza!) e addirittura dannoso, ma prova
un po' se le cose funzionano bene anche senza (User32 serve,
per quella strana wsprintf; cambiandola in strcpy potresti farne a
meno).
Alex

 Alex
 Ho provato e funziona, bravissimo (:-))
Purtroppo questo problema temo mi costringa ad utilizzare i makefile anziché
l'IDE però è già un passo avanti.
Da quello che mi è sembrato di capire sembra che Kernel32 venga GIA'
caricata, è vero ?
Perché se così non fosse significa che, in qualche modo, il programma
potrebbe essere limitato in possibili sviluppi che necessitino delle funzioni
contenute in questa libreria, o sbaglio (?:-/
Non posso che ringraziarti ancora per l'aiuto ... hai risolto il problema,
grazie.


grazie.
Prego, e sono contento di esserti stato utile, ma visto che non abbiamo
capito ancora in cosa il problema consista, mi riesce difficile ritenerlo
davvero "risolto" (spuntera` di nuovo in un momento inaspettato...).
Alex