Einzelnen Beitrag anzeigen

k4rstn

Registriert seit: 29. Dez 2010
3 Beiträge
 
#1

Dateien kopieren wird langsam.

  Alt 30. Dez 2010, 13:34
Hallo
Ich schreib zur zeit ein programm was viele datein kopieren sol...
es funzt auch schon recht gut, jedoch wird es nach ner weile recht langsam.
in der funktion "lesedatum" hatte ich zunächst FreeandNil(ImgData) vergessen, wodurch sich der genutzte RAM aufgebläht hat. Doch auch dadurch läuft das prog nicht mit konstanter geschwindigkeit.
hat jmd ne ahnung warum es gegen ende immer langsamer wird?

hier der code

Delphi-Quellcode:
function LeseDatum(datei:string):string;
var ImgData: TImgData;
begin
  ImgData := TImgData.Create;
  DexifDecode := true;
  ImgData.TraceLevel := 1;
       if ImgData.ProcessFile(datei) then
          if ImgData.HasExif then
            LeseDatum := ImgData.ExifObj.DateTime
          else
            lesedatum := ''
       else
       lesedatum :='';
  FreeAndNil(ImgData);
end;

function TForm1.trennedatum(datum:string) : TStrArray;
begin
trennedatum[0] := Copy(datum, 1, 4);
trennedatum[1] := Copy(datum, 6, 2);
trennedatum[2] := Copy(datum, 9, 2);
trennedatum[3] := Copy(datum, 12, 2);
trennedatum[4] := Copy(datum, 15, 2);
trennedatum[5] := Copy(datum, 18, 2);
end;

procedure TForm1.kopierebilder;
var
i : integer;
jahr,mon,tag : string;
n_jahr,n_mon,n_tag : string;
 fileSource, fileDest: string;
begin
Progressbar1.Max:=Liste.Count-1;
ListBox1.Clear;
  for i:=0 to Liste.Count-1 do
  begin
  Label1.Caption := inttostr(Liste.Count) + ' / ' + inttostr(Liste.Count) + ' Bilder kopiert.';
  ListBox1.Items.Add(Liste[i]);
  Progressbar1.Position :=i;
    if LeseDatum(Liste[i]) <> 'then
    begin
    jahr := trennedatum(LeseDatum(Liste[i]))[0];
    mon := trennedatum(LeseDatum(Liste[i]))[1];
    tag := trennedatum(LeseDatum(Liste[i]))[2];

    n_jahr := Ziel + '\' + jahr;
    n_mon := Ziel + '\' + jahr + '\' + jahr + '_' + mon;
    n_tag := Ziel + '\' + jahr + '\' + jahr + '_' + mon + '\' + jahr + '_' + mon + '_' + tag + '-';
    {$IOChecks off}
    if not(DirectoryExists(n_jahr)) then
      mkdir(n_jahr);
    if not(DirectoryExists(n_mon)) then
      mkdir(n_mon);
    if not(DirectoryExists(n_tag)) then
      mkdir(n_tag);
    {$IOChecks on}

    fileSource := Liste[i];
    fileDest := n_tag + '\' + ExtractFileName(Liste[i]);
    end
    else
    begin
      if not(DirectoryExists(Ziel + '\zeitlos')) then
        mkdir(Ziel + '\zeitlos');
    fileSource := Liste[i];
    filedest := Ziel + '\zeitlos' + '\' + ExtractFileName(Liste[i]);
    end;
    //ListBox1.Items.Add(filesource);
    //ListBox1.Items.Add(filedest);
    CopyFile(PChar(fileSource), PChar(fileDest), true);
    SendMessage(ListBox1.Handle, LB_SETTOPINDEX, ListBox1.Items.Count-1, 0);
  end;
  Progressbar1.Position :=0;
end;
  Mit Zitat antworten Zitat