Einzelnen Beitrag anzeigen

Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#16

AW: SJ MMF File Reader 0.2 - Schneller Textdatei Reader

  Alt 17. Jul 2010, 00:31
Hallo Sebastian,

ich habe versucht, Dein Programm für meine Zwecke zu erweitern. Das ist mir auch gelungen, aber an einer Stelle haut es ihn immer wieder raus. Er soll die Position eines String suchen und setzt gleichzeitig die Position des Readers auf diese :

Beispiel :
f := TSJMmfFileReader.Create(Dateiname);
f.Position := f.StringPos(S);

Delphi-Quellcode:
function TSJMmfFileReader.StringPos(AValue: string): Int64;
var
  s: string;
begin
  Result := -1;

  while Position < FSize do
  begin
    ReadLn(s);
    if s = AValue then
    begin
      Result := Position;
      Exit;
    end;
  end;
end;
Das Setzen der Position geht bei mir solange gut, bis ich zu einer Position mit der Größe von 2.386.487 komme. Bei SetPosition ruft er ReInitView auf. MapViewOfFile setzt dann FPointer auf nil. In ReadLn haut es ihn dann raus.

Kannst Du mir sagen, was ich falsch mache?

Gruss Jens

Edit:
Sooo..., warum der Fehler auftritt, weiß ich immer noch nicht, aber so scheint es zu funktionieren :

Beispiel:
f := TSJMmfFileReader.Create(Dateiname);
f.GotoString(S);

Delphi-Quellcode:
function TSJMmfFileReader.GotoString(AValue: string): Boolean;
var
  s: string;
begin
  Result := False;
  Position := 0;

  while Position < FSize do
  begin
    ReadLn(s);
    if s = AValue then
    begin
      Result := True;
      Exit;
    end;
  end;
end;

Geändert von Jens01 (17. Jul 2010 um 13:05 Uhr)
  Mit Zitat antworten Zitat