The-Freak:
Jeg prøvde å telle ordene i denne teksten. 7 ord?
This
is a
test
Her er en annen simpel funksjon som også kan utvides. Jeg håper du kan bruke den
function CountWords(S: String): Integer;
var
I: Integer;
IsWord: Boolean;
begin
IsWord := False;
if S <> '' then
Result := 1
else
Result := 0;
for I := 1 to Length(S) do
begin
if IsWord and
(S[I] <> ' ') and
(S[I] <> #13) and
(S[I] <> #10) then
Inc(Result);
IsWord := (S[I] = ' ') or
(S[I] = #13) or
(S[I] = #10);
end;
end;
-------------------------------------
I am AGAINST TCPA!!
[ http://www.againsttcpa.com/ ]
-------------------------------------
Mvh
DiZpel
DiZpel, grunden er at min bruger noget der ligner PHP's explode. Derved piller den bare strengen fra hindanden ved mellemrummene... Den er nemlig ikke tilpasset til denne opgave præcist... Men ved at lave et loop der køre igennem den og sletter alle ' ' forekomster vil det blive fixet... Tak fordi du pointerede fejlen
... Skulle nemlig snart til at bruge det i et program!
EDIT:Denne her virker
:
function CountWords(Text: String): Integer;
type
TExplodedString = array of String;
function Explode(Text: String; Seperator: String; DiscardNoneText: Boolean = False): TExplodedString;
var
I: Integer;
Tmp: String;
begin
if (Length(Text) or Length(Seperator)) = 0 then Exit;
if Length(Seperator) = 1 then begin
if Copy(Text, Length(Text)-Length(Seperator), Length(Seperator)) <> Seperator then
Text := Text + Seperator + Seperator;
end else begin
if Copy(Text, Length(Text)-Length(Seperator), Length(Seperator)) <> Seperator then
Text := Text + Seperator;
end;
I := 1;
while I < Length(Text) do begin
if Copy(Text, I, Length(Seperator)) = Seperator then begin
if DiscardNoneText then begin
if Tmp <> '' then begin
SetLength(Result, High(Result)+2);
Result[High(Result)] := Tmp;
Tmp := '';
Inc(I, Length(Seperator));
end;
Inc(I);
end else begin
SetLength(Result, High(Result)+2);
Result[High(Result)] := Tmp;
Tmp := '';
Inc(I, Length(Seperator));
end;
end else begin
Tmp := Tmp + Text[I];
Inc(I);
end;
end;
end;
var
Tmp: TExplodedString;
begin
Tmp := Explode(Text, ' ', True);
Result := Length(Tmp);
end;
Men tror DiZpel's er hurtigere til denne opgave!
MH.
The-Freak
Livet er for kort til at kede sig.
[Redigeret d. 02/11-04 15:14:17 af The-Freak]