Poszukiwacz znaków

0

Witam.
Ma ktos program w Pascalu albo Delphi który przeszukuje pliki i znajduje w nim ciąg znaków który chcemy aby znalazł? Prosze o pomoc.

0

Ponieważ kiedyś był przykład "Sumowanie bajtów", a teraz nie wiem gdzie to się podziało, wklejam kod:

{Autor: Snoobi
Opis: Program wczytuje plik, następnie zlicza wszystkie znaki w kodzie ASCII i wyświetla podsumowanie. Przydatne np. przy badaniu pliku z zaszyfrowanym textem (częstość występowania określonych liter)}

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ComCtrls;

type
  TMainFrm = class(TForm)
    sgChart: TStringGrid;
    btnStart: TButton;
    OpenDialog: TOpenDialog;
    ProgressBar: TProgressBar;
    procedure btnStartClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);

//...
procedure TMainFrm.btnStartClick(Sender: TObject);
var
  F : File;
  Ch : array[0..4095] of Char;
  CharsTab : array[0..255] of Integer;
  FSize : Int64;
  I : Integer;
  j : Integer;
  n : int64;
begin
  if OpenDialog.Execute then
    for I := 0 to 255 do
      CharsTab[I] := 0;
    ProgressBar.Position := 0;
    AssignFile(F, OpenDialog.FileName);
    Reset(F, 1);
    FSize := FileSize(F);
    sgChart.ColWidths[1] := 120;
    while not Eof(F) do
      begin
        n := FSize - FilePos(F);
        if n < 4096 then
        begin
          BlockRead(F, Ch, n);
          for j := 0 to n do
            Inc(CharsTab[Ord(Ch[j])]);
        end
        else
          begin
            BlockRead(F, Ch, 4096);
            for j := 0 to 4096 do
              Inc(CharsTab[Ord(Ch[j])]);
          end;
        ProgressBar.Position := ((FilePos(F) * 100) div FSize);
      end;
      CloseFile(F);
      for I := 0 to 255 do
      begin
        sgChart.Cells[0,I] := Format('Znak %d: %s',[I, Char(I)]);
        sgChart.Cells[1,I] :=  FormatFloat('0.000',(CharsTab[I] * 100) / FSize)+' %, '+ IntToStr(CharsTab[I]);
      end;
end;

procedure TMainFrm.FormCreate(Sender: TObject);
begin
  sgChart.ColWidths[0] := 120;
  sgChart.ColWidths[1] := 120;
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1