03. maj 2001 - 18:40Der er
4 kommentarer og 1 løsning
Tæl ord i RichEdit
Hej. Jeg bikser med et richedit-komponent, og jeg vil gerne lave en funktion som tæller antallet af ord som brugeren har skrevet i richedit\'en. Håber nogen kan hjælpe.. P.S. 400 point for præcist svar.
type TForm1 = class(TForm) Button1: TButton; RichEdit1: TRichEdit; Edit1: TEdit; procedure Button1Click(Sender: TObject); private function WordCount(Text: string): Integer; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.WordCount(Text: string): Integer; const Tokens: array[0..3] of Char = (#9, #10, #13, #32); //tab, lf, cr, space
procedure StripTokens(var Str: string); var i: Integer; T: Boolean; begin repeat T := False; for i := Low(Tokens) to High(Tokens) do if Str[1] = Tokens[i] then begin Delete(Str, 1, 1); T := True; Break; end; until not T or (Length(Str) = 0); end;
function FindNextToken(const Str: string): Integer; var i, p: Integer; begin Result := Length(Str);
for i := Low(Tokens) to High(Tokens) do begin p := Pos(Tokens[i], Str); if (p <> 0) and (p < Result) then Result := p; end; end;
var Count, P: Integer; begin Count := 0;
if Length(Text) > 0 then repeat StripTokens(Text); P := FindNextToken(Text); Delete(Text, 1, P); if p <> 0 then Inc(Count); until (P = 0) or (Length(Text) = 0);
Result := Count; end;
procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := IntToStr(WordCount(RichEdit1.Text)); end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.