Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#30

Re: Anzahl Zeilen in einem Textfile

  Alt 19. Mai 2004, 12:46
Hier mal die Anzahl der Zeilen aus einer Datei in einer eigenen Funktion

Delphi-Quellcode:
function CountLines(aFileName: string): Integer;
const
  BUF_SIZE = 4096;
var
  Buffer: array[0..Pred(BUF_SIZE)] of Byte;
  Cnt: Integer;
  FS: TFileStream;
begin
  FS := TFileStream.Create(aFileName, fmOpenRead or fmShareDenyWrite);
  try
    Result := 0;
    repeat
      Cnt := FS.Read(Buffer[0], BUF_SIZE);
      asm
        // load data count
        mov EAX, Cnt
        dec EAX
        js @@NoData // no data

        // load current line count
        mov ECX, Result

        // loop data buffer
        @@LoopBuffer:
        // compare byte in memory
        cmp byte ptr[Buffer + EAX], $0A
        jnz @@CheckDataLeft // not a line break (#10)
        // increment line count
        inc ECX

        // goto next byte
        @@CheckDataLeft:
        dec EAX
        jns @@LoopBuffer

        // return result
        mov Result, ECX
        @@NoData:
      end;
    until Cnt < BUF_SIZE;
  finally
    FS.Free;
  end;
end;
Okay, ich gebe es, ich wollte mal wieder mit Assembler rumspielen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat