Einzelnen Beitrag anzeigen

Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#1

routine aendern(speichern in listbox>speichern in hashtab

  Alt 10. Jun 2009, 14:29
Hallo zusammen!

ich habe mal wieder ein problem

ich habe im EasyDelphiHelper eine schoene routine gefunden, die rekursiv nach dateien in ordnern sucht:

Delphi-Quellcode:

procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory+SR.Name)
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if ((SR.attr and faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = 'then Exit;
    if Directory[Length(Directory)] <> '\then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
die ergebnisse speicher ich in listboxes:

Delphi-Quellcode:

procedure TForm1.BtnSearchPicClick(Sender: TObject);
var direct:string;
begin
direct:=EdpathP.Text;

GetFilesInDirectory2(direct,'*.jpg',LiBoPathOfPics.Items,true,true);
GetFilesInDirectory2(direct,'*.png',LiBoPathOfPics.Items,true,false);
GetFilesInDirectory2(direct,'*.pdf',LiBoPathOfPics.Items,true,false);
GetFilesInDirectory2(direct,'*.bmp',LiBoPathOfPics.Items,true,false);
GetFilesInDirectory2(direct,'*.gif*',LiBoPathOfPics.Items,true,false);

GetFilesInDirectory1(direct,'*.jpg',LiBoPic.Items,true,true);
GetFilesInDirectory1(direct,'*.png',LiBoPic.Items,true,false);
GetFilesInDirectory1(direct,'*.pdf',LiBoPic.Items,true,false);
GetFilesInDirectory1(direct,'*.bmp',LiBoPic.Items,true,false);
GetFilesInDirectory1(direct,'*.gif*',LiBoPic.Items,true,false);

LbPic.Caption:=(IntToStr(LiBoPic.Count));

end;
ihr seht ich suche nach bildern!

so nun hab ich aber von meinem chef erfahren das mein programm mit hashtabellen viel schneller sein wuerde. nach ein bisschen suchen habe ich auch eine schoene unit csDictionary.pas von alzaimar gefunden.

Ich hab zuerst versucht mit einer zaehlschleife einfach alle items der listbox in die hashtabelle zu laden, aber es sind inkompatible typs pointer und string. Ich weiss das es am schnellsten waer wenn ich es anstatt in die listbox lade gleich in eine hashtabelle, leider weiss ich nicht so recht wie ich die routine umstellen soll!

kann mir da vielleicht jemand helfen?
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat