Avatar billede schubert1 Nybegynder
14. marts 2003 - 11:33 Der er 12 kommentarer og
1 løsning

Tilføje filer med bestemt extension til listbox

Hej alle eksperter...
Jeg har et lille problem og kunne godt tænke mig at få et par svar på det.
Jeg er igang med et client/server program i delphi (naturligtvis) og mangler at kunne få tilføjet bestemte filer fra en mappe, med en bestemt extension til en listbox. Samtidigt skal dele af filerne blive lagret i en 2-dimensionel array...(dvs. en fil skal blive splittet op og indsat i [1,x] osv.)

Håber at der er nogle som kan overskue det... =)
Avatar billede martinlind Nybegynder
14. marts 2003 - 11:42 #1
du kan bruge FindFirst /findnext til at finde filer i en mappe med wildcard's ( *.mp3 osv ) nr. spm forstår jeg ikke lige
Avatar billede schubert1 Nybegynder
14. marts 2003 - 11:46 #2
Det som denne del af mit program skal kunne gøre, er at tjecke om en fil har den bestemte extension. Hvis filen har det skal programmet tilføje filen i en listbox, åbne den, og (ligesom med en ini-fil) læse det der står imellem ] og [ og tilføje det til en array med hvert sit index.
Btw. forstår ikke dit første svar =)
Avatar billede martinlind Nybegynder
14. marts 2003 - 12:10 #3
if FindFirst(IncludeTrailingPathDelimiter('C:\mydir\*.mp3'),faANYFILE,S) = 0 then
  repeat
      if ( S.Attr and faSysFile = 0 ) and ( S.Attr and faDIRECTORY = 0 ) and
        ( S.Attr and faVolumeID = 0 ) and ( S.Name <> '.' ) and ( S.Name <> '..' ) then
      begin
        // her får du alle filer der har mp3 som endelse
        // i S.FindData.cFileName
      end;
  until FindNext(S) <> 0;
  FindClose(S);
Avatar billede martinlind Nybegynder
14. marts 2003 - 12:11 #4
har ikke delphi kørende, det er muligt du ikke skal bruge IncludeTrailingPathDelimiter() S er en

var
  S : TSearchRec;


/Martin
Avatar billede schubert1 Nybegynder
14. marts 2003 - 13:16 #5
øhh når du siger at "det er muligt du ikke skal bruge IncludeTrailingPathDelimiter()" mener du så at der ikke skal stå nogen path, eller er det kun "IncludeTrailingPathDelimiter" der skal væk? (ps. det virker ikke pga. den).
Avatar billede martinlind Nybegynder
14. marts 2003 - 13:51 #6
væk med include... 
du skal angive den path du vil søge i
Avatar billede schubert1 Nybegynder
14. marts 2003 - 14:07 #7
Lige nu har jeg forkortet den første linje ned til:
if FindFirst('*.mcf',faANYFILE,S) = 0 then
Men den siger nu at "Types of actual and formal var parameters must be identical" ???
Avatar billede martinlind Nybegynder
14. marts 2003 - 14:23 #8
det lyder mærkeligt ??

det ser rigtig nok ud det du har gjort
Avatar billede schubert1 Nybegynder
14. marts 2003 - 14:24 #9
øhhm jeg bruger også delphi 3... kan det have noget med det at gøre???
Avatar billede martinlind Nybegynder
14. marts 2003 - 14:28 #10
Jeg mener ikke findfirst har ændret sig, kan du ikke prøve at smide din kode op så jeg kan se den
Avatar billede schubert1 Nybegynder
14. marts 2003 - 14:30 #11
I en case of en integer ser lige den del som skal søge således ud:

10:begin
  if FindFirst('*.mcf',faANYFILE,S) = 0 then
  repeat
      if ( S.Attr and faSysFile = 0 ) and ( S.Attr and faDIRECTORY = 0 ) and
        ( S.Attr and faVolumeID = 0 ) and ( S.Name <> '.' ) and ( S.Name <> '..' ) then
      begin
        // her får du alle filer der har mp3 som endelse
        // i S.FindData.cFileName
      end;
  until FindNext(S) <> 0;
  FindClose(S);
  end;

Ved ikke helt hvad du ville se ellers??
Avatar billede stoney Nybegynder
14. marts 2003 - 16:26 #12
procedure FindAll (const Path: String;
                        Attr: Integer;
                        List: TStrings);
var
  Res: TSearchRec;
  EOFound: Boolean;
begin
  EOFound:= False;
  if FindFirst(Path, Attr, Res) < 0 then
    exit
  else
    while not EOFound do begin
      List.Add(Res.Name);
      EOFound:= FindNext(Res) <> 0;
    end;
  FindClose(Res);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FindAll('C:\winnt\*.mcf',faAnyFile,ListBox1.Items);

end;

Stoney
Avatar billede schubert1 Nybegynder
15. marts 2003 - 11:59 #13
Tusind tak Stoney. Det virker perfekt. Dog forstår jeg ikke rigtigt koden. Gider du ikke forklare lidt om de forskellige ting? De 3 ting jeg specielt gerne vil have forklaret er: TSearchRec, FindFirst, Res, faAnyFile og FindNext
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