Avatar billede tosssen Nybegynder
24. december 2002 - 08:24 Der er 9 kommentarer og
1 løsning

File detection

Jeg skal bruge en metode, som kan scanne det bibliotek som mit program ligger i for filer, således at jeg i et array kan have samtlige filnavne på disse.
Er der nogen der kan hjælpe med det?
Mit program er et console-mode program, som jeg kompilerer med Visual C++ .NET

God Jul,
Søren
Avatar billede narrr Nybegynder
24. december 2002 - 15:08 #1
Noget lignende det her:

WIN32_FIND_DATA fd;
HANDLE search;
vector<char*> ret;
search = FindFirstFile(.\\*.*, &fd);

if(search != INVALID_HANDLE_VALUE)
{
    do{
        ret.push_back(fd.cFileName);
           
    }while(FindNextFile(search, &fd));

    FindClose(search);
}
Avatar billede narrr Nybegynder
24. december 2002 - 15:08 #2
hovsa! Det skal naturligvis være search = FindFirstFile(".\\*.*", &fd);
Avatar billede narrr Nybegynder
24. december 2002 - 15:16 #3
Hmm.. Det virker åbenbart også bedre med vector<string>.. :)
Avatar billede tosssen Nybegynder
25. december 2002 - 13:25 #4
Mange tak!
Hvilke filer skal jeg #include før det virker? Jeg kommer en gang i morgen og prøver det af, og så får du point, hvis det virker. Er du sikker på det virker i et console-mode program? Du bruger jo nogle win32 ting, så som handles.
Avatar billede narrr Nybegynder
25. december 2002 - 14:42 #5
Jaja, det virker skam :)

---
#include <windows.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
WIN32_FIND_DATA fd;
HANDLE search;
vector<string> ret;
search = FindFirstFile("c:\\*.*", &fd);

if(search != INVALID_HANDLE_VALUE)
{
    do{
        ret.push_back(fd.cFileName);
           
    }while(FindNextFile(search, &fd));

    FindClose(search);
}



for(vector<char*>::size_type i = 0; i <= ret.size()-1; ++i)
cout << ret[i]<<endl;
    return 0;
}
Avatar billede narrr Nybegynder
25. december 2002 - 14:44 #6
Ja ok, det ser vel bedre ud, hvis du skriver for(vector<string>::size_type ..... istedet for char*
Avatar billede tosssen Nybegynder
25. december 2002 - 14:44 #7
Kanon når jeg kommer hjem til min pc i morgen er det det første jeg prøver! Mange tak!
Avatar billede tosssen Nybegynder
26. december 2002 - 19:41 #8
Mange tak!
Det virker også med:

search = FindFirstFile("*.*", &fd);

Er der nogen forskel på "*.*" og ".\\*.*"?
Avatar billede narrr Nybegynder
27. december 2002 - 03:30 #9
Det tror jeg ikke. Prikken betyder bare, at den skal søge i den nuværende mappe. To prikker ville betyde mappen et niveau oppe...
Avatar billede tosssen Nybegynder
27. december 2002 - 14:48 #10
Ok, du skal igen have mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester