Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

f-ja koja vraća datoteke u direktoriju

[es] :: C/C++ programiranje :: f-ja koja vraća datoteke u direktoriju

[ Pregleda: 4336 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.cmu.carnet.hr.



+26 Profil

icon f-ja koja vraća datoteke u direktoriju10.05.2006. u 19:53 - pre 218 meseci
dakle trebao bih u f-ju koja bi mi vratila imena fajlova...
riječ je o borland c++ builderu 6
trebam sva imena fajlova iz jednog foldera postaviti u combobox... bez extenzije...
hvala...
ovo ništa mi nije problem jer znam kako no problem mi je ovo kako da dobijem van imena fajlova hvala...
there's no place like 127.0.0.1
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: f-ja koja vraća datoteke u direktoriju10.05.2006. u 20:25 - pre 218 meseci
Ne kapiram sta ne znas? Kako se dobija naziv fajla bez ekstenzije?

Ako je to, onda mozes sam da napravis neku funkciju, jer nista slicno nema u VCL.

Na primer:

Code:

AnsiString ExtractFileNameWithoutExtension( AnsiString FILE )
{
   return ( ExtractFileName ( ChangeFileExt( FILE, "" ) ) );
}


ili

Code:

AnsiString ExtractFileNameWithoutExtension( AnsiString FILE )
{
   AnsiString FNM = ExtractFileName( FILE );
   AnsiString EXT = ExtractFileExt ( FNM );
   FNM.SetLength( FNM.Length() - EXT.Length() );
   return ( FNM );
}
// ili u jednoj liniji, to isto:
AnsiString ExtractFileNameWithoutExtension( AnsiString FILE )
{
   return ( ExtractFileName( FILE ).SetLength( ExtractFileName( FILE ).Length() - ExtractFileExt( FILE ).Length() ) );
}


pa sve to (tj izaberi samo jednu funkciju koja ti se vise svidja) mozes da strpas u kod
(ComboBox1 ce hvatati foldere, a ComboBox2 ce hvatati fajlove i to bez ekstenzije):

Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ComboBox1->Items->Clear();
   ComboBox2->Items->Clear();

   TSearchRec sr;
   if ( FindFirst( "C:\\*.*", faAnyFile, sr ) == 0 )
   {
      do
      {
         if ( ( sr.Attr & faDirectory ) > 0 )
            ComboBox1->Items->Add( sr.Name );
          else
            ComboBox2->Items->Add( ExtractFileNameWithoutExtension( sr.Name ) );
      }
      while( FindNext( sr ) == 0 );

      FindClose( &sr );
   }

   if ( ComboBox1->Items->Count > 0 )
      ComboBox1->ItemIndex = 0;

   if ( ComboBox2->Items->Count > 0 )
      ComboBox2->ItemIndex = 0;

}



[Ovu poruku je menjao X Files dana 10.05.2006. u 21:26 GMT+1]

[Ovu poruku je menjao X Files dana 10.05.2006. u 21:47 GMT+1]
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: f-ja koja vraća datoteke u direktoriju11.05.2006. u 08:58 - pre 218 meseci
Code:

bool FindFiles(const char* dir, const char* ext, std::vector<std::string>& ret)
{
    WIN32_FIND_DATA FileData; 
    HANDLE hSearch; 
    BOOL fFinished = FALSE; 

    ret.clear();

// pravi se string oblika "X:/path/*.ext"
    std::string target = dir;

    int l = (int)dir.size();
    if ((dir[l-1] != '\\') || (dir[l-1] != '/')) dir += '/';

    target = target + ext;

    hSearch = FindFirstFile(target.c_str(), &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 
        return false;

    while (!fFinished) 
    { 
        if (!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
            ret.push_back(FileData.cFileName);

        if (!FindNextFile(hSearch, &FileData))
            fFinished = TRUE; 
    } 

    FindClose(hSearch);

    return true;
}

Primer: 
std::vector<std::string> spisak;
FindFiles("c:/windows/system32","*.dll", spisak);
i ako je poziv uspeo... u spisak ces dobiti imena svih DLL fajlova


 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.cmu.carnet.hr.



+26 Profil

icon Re: f-ja koja vraća datoteke u direktoriju11.05.2006. u 13:01 - pre 218 meseci
ma trebalo mi je samo FindNextFile samo to...
hvala...
there's no place like 127.0.0.1
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: f-ja koja vraća datoteke u direktoriju28.09.2006. u 21:04 - pre 213 meseci
Krenuo sam ja malo WinAPI,pa sam naletio na ovaj primjer,ne znam zasto
ali mi ne radi ova linija koda:
Code:
int l = (int)dir.size();

A ne cudi me sto ne radi jel ipak dir je tipa char a ne string pa se sa njime
ne moze pozvat funkcija size(),zato sam ja napisao ovako:
Code:
#include <windows.h>
#include <vector>
#include <iostream>
#include <stdlib.h>
using namespace std;

bool FindFiles(const char* dir, const char* ext, vector<string>& ret)
{   WIN32_FIND_DATA FileData; 
    HANDLE hSearch; 
    BOOL fFinished = FALSE; 

    ret.clear();
    
   string target = dir;

    int l = target.size();
    if ((dir[l-1] != '\\') || (dir[l-1] != '/')) dir += '/';

    target = target + ext;

    hSearch = FindFirstFile(target.c_str(), &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 
        return false;

    while (!fFinished) 
    { 
        if (!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
            {ret.push_back(FileData.cFileName);}

        if (!FindNextFile(hSearch, &FileData))
            fFinished = TRUE; 
    } 

    FindClose(hSearch);

    return true;
}


int main()
{
vector<string> spisak;
FindFiles("c:/windows/system32","*.dll", spisak);

for(int i=0;i<spisak.size();i++)
  cout<<"Spisak od"<<i<<"je"<<spisak[i]<<"\n";  
  
system("PAUSE");
}


Mislim da je sve ok,ali se nista ne ispisuje,stovise cini mi se da program
ne ulazu uopce u petlju kad je se pozove,ako neko zna sta je problem
neka pls kaze,hvala..
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: f-ja koja vraća datoteke u direktoriju29.09.2006. u 22:00 - pre 213 meseci
Code:
    if ((dir[l-1] != '\\') || (dir[l-1] != '/')) dir += '/';

treba
Code:
    if ((target[l-1] != '\\') || (target[l-1] != '/')) target += '/';


btw.. prethodni primer sam kopirao iz mog code-a ali sam ga modifikovao dok sam pisao poruku i napravio gresku koju si ti primetio.
 
Odgovor na temu

IDE

Član broj: 53403
Poruke: 586
*.crnagora.net.



Profil

icon Re: f-ja koja vraća datoteke u direktoriju30.09.2006. u 12:48 - pre 213 meseci
Za dobijanje imena fajlova uvijek mozes iskoristiti klasu TFileListBox, cini mi se da se tako zove.

napravi petlju koja ce ti prebaciti imena svih fajlova u ComboBox, pri cemu im mice ekstenziju...

Mislim... nije savrseno, ali radi svoj posao...
there's something out there
waiting for us,
and it ain't no man...
 
Odgovor na temu

[es] :: C/C++ programiranje :: f-ja koja vraća datoteke u direktoriju

[ Pregleda: 4336 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.