Oppure

Loading
29/07/08 19:57
gantonio
Ma allora non hai capito la mia risposta ...

NON ti serve eliminare quei 3 caratteri ... non ti serve in nessuna parte del codice ... quindi, perche' impegnarti a capire e scrivere un codice che non ti serve?
aaa
29/07/08 20:00
ma allora come posso generare la lista dei file???
29/07/08 20:18
gantonio
E cosa c'entrava il togliere i 3 caratteri finali con la lista dei file?

La lista dei file la ottieni - te lo ripeto - creando una "lista semplice" (linked list) e aggiungendo un elemento man mano che i file vengono trovati.
aaa
29/07/08 21:14
io li volevo togliere perchè:
  strcpy(pf, p);
  strcat(pf, "\*.*");

questo codice fa si che se p è uguale a "C:" pf sarà uguale a "C:\*.*", quindi volevo togliere *.* per sostituirlo con il nome del file in modo da avere un percorso corretto.
Forse però potrei ottenere il percorso anche scriendo questo quando è stato trovato un file:
strcpy(tlist, p);
strcat(tlist, "\");
strcat(tlist, fd.cFileName)
codice per generare la lista

dici che funzionerà(a me sembra di si!!!)???
tra l'altro sulla mia guida (guida completa al c++ 4°edizione di Herbert Schildt) di dovrebbe essere qualcosa!!! domani provo ciao!:k:
30/07/08 6:21
gantonio
Beh ... mi fa piacere che ci sei arrivato ...

Nelle prime righe, la maschera *.* serve alla FindFirstFile per sapere quali file deve trovare.
Quello NON e' il file trovato ma il file DA TROVARE e quindi NON ti serve.

Quello che ti serve e' - come hai detto - il file mentre viene trovato in quanto, all'interno del ciclo, lo inserisci cosi' com'e', nella tua lista SENZA togliere nulla.

Ok?
Ultima modifica effettuata da gantonio 30/07/08 6:21
aaa
30/07/08 8:22
ok mi metto all'opera!!!
30/07/08 8:46
ciao,
coi puntatori non ci so fare + di tanto (lo li studierò ma vorrei il programma pronto per fine mattina!!!)... non so se in questo codice l'errore è di visualizzazione o di assegnamento alla list (ti ho segnato i 2 punti con possibili errori):
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <list>
#include <cstdlib>
using namespace std;

list<char> lista;

void search(char *p)
{
  WIN32_FIND_DATA fd;

  int dim;
  char tlist[MAX_PATH];
  char pf[MAX_PATH];
  strcpy(pf, p);
  strcat(pf, "\*.*");


  HANDLE h = FindFirstFile(pf, &fd);
  if (h != INVALID_HANDLE_VALUE)
  {
    do
    {
      if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
      {
        if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
          printf ("[%s]\n", fd.cFileName);

          char pf[MAX_PATH];
          strcpy(pf, p);
          strcat(pf, "\");
          strcat(pf, fd.cFileName);

          search(pf);
        }
        else
        {
          printf ("\t%s\n", fd.cFileName);
          strcpy(tlist, p);
          strcat(tlist, "\");
          strcat(tlist, fd.cFileName);
          lista.push_back(*tlist);/*possibile errore (penso sia questo)*/
        }
      }
    } while (FindNextFile(h, &fd));

    FindClose(h);
  }
  else
    printf("Errore %d\n", GetLastError ());
}

int main()
{
  char percorso[MAX_PATH];


  cout<<"Inserire il percorso in effettuare la ricerca:  ";
  cin>>percorso;

  search(percorso);

  cout<<endl<<endl<<endl;

  //possibile errore di visualizzazione
  list<char>::iterator a = lista.begin();
  while(a != lista.end())
  {
        cout<<*a<<endl;
        a++;
  }

  system("pause");
}

ciao grazie:k:
Ultima modifica effettuata da 30/07/08 8:51
30/07/08 9:24
ps: se non hai tempo per correggerlo momentaneamente dimmi dov'è l'errore!!!
please