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

f-ja koja vraća datoteke u direktoriju

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

[ Pregleda: 1409 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

w3bl0rd

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



Profil

icon f-ja koja vraća datoteke u direktoriju10.05.2006. u 19:53

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...
internet is my kingdom but google is my god
10.05.2006. u 19:53 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: f-ja koja vraća datoteke u direktoriju10.05.2006. u 20:25
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]
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
10.05.2006. u 20:25 

yooyo
Centroid / Technical director

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



Profil

icon Re: f-ja koja vraća datoteke u direktoriju11.05.2006. u 08:58
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


11.05.2006. u 08:58 

w3bl0rd

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



Profil

icon Re: f-ja koja vraća datoteke u direktoriju11.05.2006. u 13:01
ma trebalo mi je samo FindNextFile samo to...
hvala...
internet is my kingdom but google is my god
11.05.2006. u 13:01 

k4rl0
Localhost

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



Profil

icon Re: f-ja koja vraća datoteke u direktoriju28.09.2006. u 21:04
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..
28.09.2006. u 21:04 

yooyo
Centroid / Technical director

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



Profil

icon Re: f-ja koja vraća datoteke u direktoriju29.09.2006. u 22:00
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.
29.09.2006. u 22:00 

IDE

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



Profil

icon Re: f-ja koja vraća datoteke u direktoriju30.09.2006. u 12:48
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...
30.09.2006. u 12:48 

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

[ Pregleda: 1409 | Odgovora: 6 ]

Postavi temu Odgovori

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