Thema: Delphi Routine dauert ewig

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#5

Re: Routine dauert ewig

  Alt 26. Mär 2007, 12:39
Wie groß ist eigentlich die Datei?
TMemoryStream ließt ja erstmal die ganze Datei ein, selbst wenn nur das Stückchen am Anfang gebraucht wird.

Zur Zeitmessung:
wie schon gesagt, wie hast du den Unterschied festgestellt?
hast du bedacht, daß die Datei beim einlesen in der Windows-FileCache landet und demnach eim nächsten Mal eventuell wesendlich schneller geladen werden könnte? (solange du die FileCache vorher nicht jedesmal in einen definierten/gleichwertigen Zustand versetzt)

[add]
ist dir aufgefallen, daß das HiByte von wHeader2 undefiniert ist?
Dieses ist ja ein Word und Write ließt nur 1 Byte (in das LoByte).
u solltest also vor der Schleife wHeader2 in einen definierten Zustand bringen (z.B. wHeader2 := 0; ).


Delphi-Quellcode:
Var F: File of Byte;
  Buf: Array[0..48*3-1] of Byte;
  W: Integer;

Begin
  AssignFile(F, ASpecialFile);
  Try
    FileMode = fmOpenRead;
    Reset(F);
    Seek(F, 16);
    BlockRead(F, Buf, SizeOf(Buff), W);
    If W = SizeOf(Buf) Then Begin
      SetLength(Result, 48);
      For i := 0 to 47 do
        //Result[i + 1] := WideChar(PWord(@Buf[i * 3])^
        // + Buf[i * 3 + 2] * 256);
        Result[i + 1] := WideChar(Buf[i * 3] + Buf[i * 3 + 1] * 256
          + Buf[i * 3 + 2] * 256);
    End Result := '';
  Finally
    CloseFile(F);
  End;
End;
(ich hoff ich hab's richtig übersezt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat