Newsgroup: it.comp.programmare.win32
Titolo: Re: contenuto directory in C

 
tdan...@jumpy.it
Ciao, potresti usare il comando DIR sotto console e dirigere l'output su
file, per esempio:
dir *.exe > file.txt
ciao.

dir *.exe > file.txt
Ciao e grazie della risposta.
Il fatto č che dovrei inserire questa piccola porzione di codice
all'interno di un programma piů ampio.
Dovrei visualizzare un elenco di file per far scegliere all'utente
quale aprire per poi compiere determinate operazioni. E questa parte
dovrebbe proprio essere interna al programma.
Quindi purtroppo il dir rediretto non fa al caso mio...
Altre idee?
Grazie,
ciao
--
tdan...@jumpy.it

 Altre idee?
FindFirstFile(), FindNextFile(), FindClose().
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

HTH
Ciao, grazie della risposta.
Avresti un esempio di come utilizzare le funzioni che hai suggerito in
C?
Ho trovato solo documentazione riguardante C++ e non sono riuscito ad
adattarla.
Grazie,
ciao
--
tdan...@jumpy.it

 C?
L'esempio su 
msdn.microsoft.com
 e` in C, dacci un link dell'esempio che  
non riesci a tradurre in C se l'esempio di MSDN non basta.
-- 
Marco Barisione
http://hotkeybind.sf.net
http://marcobari.altervista.org

non riesci a tradurre in C se l'esempio di MSDN non basta.
Partendo dal semplice incollo il seguente frammento di codice:
#include <windows.h>
#include <stdio.h>
WIN32_FIND_DATA FileData; 
void main (void)
{
	int risultato;
	risultato = FindFirstFile("*.txt", &FileData);
	if (risultato == INVALID_HANDLE_VALUE) 
	{ 
   		printf("No .TXT files found."); 
    		return;
	}
	else
	{
		printf("il file e': %s.", FileData);
	}
}
Secondo le mie previsioni avrebbe dovuto stampare il nome del primo
file .txt contenuto nella directory. Invece sembra che non trovi alcun
txt.
Dove sbaglio?
Grazie
--
tdan...@jumpy.it

 }
Ad occhio mi sembra giusto (non ho ora un compilatore per Windows a  
portata di mano), sei sicuro che ci sia il file? Se usi Visual Studio la  
directory in cui il programma viene eseguito e` quella del progetto, non  
dell'eseguibile.
Comunque il tipo di risultato dovrebbe essere HANDLE.


 		printf("il file e': %s.", FileData);
FileData e' di tipo WIN32_FIND_DATA che puzza tanto di struttura (e
infatti lo e') e non di char*.


> Partendo dal semplice incollo il seguente frammento di codice:
<snip>
Prova cosě ;-)
#include "windows.h"
int main(int argc, char *argv[])
{
  WIN32_FIND_DATA FindFileData;
  HANDLE hFind;
  printf ("Target file is %s.\n", argv[1]);
  hFind = FindFirstFile(argv[1], &FindFileData);
  if (hFind == INVALID_HANDLE_VALUE) {
    printf ("Invalid File Handle. Get Last Error reports %d\n", GetLastError
());
  } else {
    printf ("The first file found is %s\n", FindFileData.cFileName);
    FindClose(hFind);
  }
  return (0);
}
Ciao

 ha
scritto:
[cut]
Ciao e grazie dell'aiuto. Effettivamente cosě funziona. Ho perň un
altro problema. Anzichč passare il nome del file da riga di comando,
avrei bisogno di inserirlo in una variabile. Ho fatto una piccola
modifica al codice e non funziona piů.
Ecco il codice:
#include "windows.h"
int main(int argc, char *argv[])
{
  WIN32_FIND_DATA FindFileData;
  HANDLE hFind;
  char *nome = "*.txt";
  printf ("Target file is %s.\n", nome);
  hFind = FindFirstFile(nome, &FindFileData);
  if (hFind == INVALID_HANDLE_VALUE) {
    printf ("Invalid File Handle. Get Last Error reports %d\n",
GetLastError());
  } else {
    printf ("The first file found is %s\n", FindFileData.cFileName);
    FindClose(hFind);
  }
  return (0);
}
Non capisco che differenza ci sia tra il passare argv[1] e nome !
Grazie,
ciao
--
tdan...@jumpy.it

 Non capisco che differenza ci sia tra il passare argv[1] e nome !
Direi che una bella occhiata al "K & R" potrebbe essere utile :-) !!

 Non capisco che differenza ci sia tra il passare argv[1] e nome !
Sono due puntatatori a char, quindi infilati in una chiamata a funzione
dove e' previsto un char* si comportano allo stesso modo (se la funzione
chiamata non tenta di modificare quanto puntato).
Portesti dire cosa non ti funziona? il programma compila correttamente
(se aggiungi #include <stdio.h>) e funziona esattamente allo stesso modo
sia usando nome che usando argv[1].


Direi che una bella occhiata al "K & R" potrebbe essere utile :-) !!
Beh, il tuo č il giusto commento alla mia affermazione che perň non
voleva essere proprio presa alla lettera...
Intendevo che secondo me non dovrebbe esserci nessuna differenza ai
fini del funzionamento del codice. Sbaglio?
Il codice da me presentato nel post precedente mi da il seguente
errore: "Invalid File Handle. Get Last Error reports 2"
Di nuovo... dove sbaglio?
Grazie
--
tdan...@jumpy.it