Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem delphi memory/string stream

Potrebuješ zistiť výskyt nejakého reťazca v súbore? Aspoň tak som to pochopil....

Ja by som to riešil asi takto:

function PosInFile(Str,FileName:string):integer;
 var
   Buffer:array[0..1023]of char;
   BufPtr,BufEnd:integer;
   F:File;
   Index:integer;
   Increment:integer;
   c:char;

 function NextChar:char;
 begin
   if BufPtr>=BufEnd then
   begin
     BlockRead(F,Buffer,1024,BufEnd);
     BufPtr := 0;
     Form1.ProgressBar1.Position := FilePos(F);
     Application.ProcessMessages;
   end;
   Result := Buffer[BufPtr];
   Inc(BufPtr);
 end;

 begin
   Result := -1;
   AssignFile(F,FileName);
   Reset(F,1);
   Form1.ProgressBar1.Max := FileSize(F);
   BufPtr:=0;
   BufEnd:=0;
   Index := 0;
   Increment := 1;
   repeat
     c:=NextChar;
     if c=Str[Increment] then
       Inc(Increment)
     else
     begin
       Inc(Index,Increment);
       Increment := 1;
     end;
     if Increment=(Length(Str)+1) then
     begin
       Result := Index;
       Break;
     end;
   until BufEnd = 0;
   CloseFile(F);
   Form1.ProgressBar1.Position := 0;
 end;

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny