Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Verschachtelte Schleifen - Gesamtfortschritt

  Alt 27. Feb 2008, 15:47
Ich werde noch mal wahnsinnig:
Delphi-Quellcode:
    PosTotal := 0;
    for Pass := 0 to FPassCount - 1 do
    begin
      if Assigned(OnShredderPass) then
        OnShredderPass(self, Pass + 1, FPassCount);
      // Schreibpuffer füllen
      for i := 0 to Length(Buffer) div SizeOf(TTrippleByte) - 1 do
        if (Pass < Low(Mask)) or (Pass > High(Mask)) then
        begin
          Buffer[i * SizeOf(TTrippleByte)] := Random(256);
          Buffer[i * SizeOf(TTrippleByte) + 1] := Random(256);
          Buffer[i * SizeOf(TTrippleByte) + 1] := Random(256);
        end
        else
          PTrippleByte(@Buffer[i * SizeOf(TTrippleByte)])^ := Mask[Pass];

      // Datei überschreiben
      SetFilePointer(H, 0, nil, FILE_BEGIN);
      Pos := 0;
      while Pos < Sectors do
      begin
        i := Min(Sectors - Pos, Length(Buffer) div Integer(SectorSize));
        if not WriteFile(H, Buffer[0], i * SectorSize, W, nil)
          or (Integer(W) <> i * SectorSize) then
          Exit;
        Inc(Pos, i);

        if Assigned(OnShredderProgress) then
        begin
          PosTotal := PosTotal + Pos; // MP
          p := ((PosTotal / Sectorsize) / (FPassCount * Sectors/(length(buffer)) / Sectorsize) * 100); // !!!
          OnShredderProgress(self, Trunc(p));
        end;
      end;
    end;
Das liefert mindestens um den Faktor 1.000 zu hohe Werte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat