* more strutils small things

This commit is contained in:
marco 2004-03-19 12:54:22 +00:00
parent c11c3fdc67
commit 8f0bc1fc2d

View File

@ -146,57 +146,72 @@ begin
NotYetImplemented(' AnsiResemblesText');
end;
Function AnsiContainsText(const AText, ASubText: string): Boolean;
begin
AnsiContainsText:=Pos(ASubText,AText)<>0;
end;
Function AnsiStartsText(const ASubText, AText: string): Boolean;
begin
Result:=Copy(AText,1,Length(AsubText))=ASubText;
end;
Function AnsiEndsText(const ASubText, AText: string): Boolean;
begin
result:=Copy(AText,Length(AText)-Length(ASubText)+1,Length(ASubText))=asubtext;
end;
Function AnsiReplaceText(const AText, AFromText, AToText: string): string;
var iFrom, iTo: longint;
begin
NotYetImplemented(' AnsiReplaceText');
iTo:=Pos(AFromText,AText);
if iTo=0 then
result:=AText
else
begin
result:='';
iFrom:=1;
while (ito<>0) do
begin
result:=Result+Copy(AText,IFrom,Ito-IFrom+1)+AToText;
ifrom:=ITo+Length(afromtext);
ito:=Posex(Afromtext,atext,ifrom);
end;
if ifrom<=length(atext) then
result:=result+copy(AText,ifrom, length(atext));
end;
end;
Function AnsiMatchText(const AText: string; const AValues: array of string): Boolean;
var i : longint;
begin
NotYetImplemented(' AnsiMatchText');
result:=false;
if high(AValues)=-1 Then exit;
for i:=low(AValues) to High(Avalues) do
if avalues[i]=atext Then
result:=true;
end;
Function AnsiIndexText(const AText: string; const AValues: array of string): Integer;
var i : longint;
begin
NotYetImplemented(' AnsiIndexText');
result:=-1;
if high(AValues)=-1 Then exit;
for i:=low(AValues) to High(Avalues) do
if avalues[i]=atext Then
exit(i); // make sure it is the first val.
end;
{ ---------------------------------------------------------------------
Case insensitive search/replace
---------------------------------------------------------------------}
@ -295,8 +310,15 @@ end;
Function StuffString(const AText: string; AStart, ALength: Cardinal; const ASubText: string): string;
var i,j : longint;
begin
NotYetImplemented(' StuffString');
j:=length(ASubText);
i:=length(AText);
SetLength(Result,i-ALength+j);
move (AText[1],result[1],AStart-1);
move (ASubText[1],result[AStart],j);
move (AText[AStart+ALength], Result[AStart+j],i-AStart-ALength+1);
end;
@ -304,7 +326,8 @@ end;
Function RandomFrom(const AValues: array of string): string; overload;
begin
NotYetImplemented(' RandomFrom');
if high(AValues)=-1 then exit('');
result:=Avalues[random(High(AValues)+1)];
end;
@ -474,11 +497,17 @@ var l : longint;
begin
if (offset<1) or (offset>length(s)) then exit(0);
l:=length(s);
{$ifndef useindexbyte}
while (offset<=l) and (s[offset]<>c) do inc(offset);
if offset>l then
posex:=0
else
posex:=offset;
{$else}
posex:=offset+indexbyte(s[offset],l-offset+1);
if posex=(offset-1) then
posex:=0;
{$endif}
end;
@ -629,7 +658,10 @@ end.
{
$Log$
Revision 1.3 2004-03-18 16:55:47 marco
Revision 1.4 2004-03-19 12:54:22 marco
* more strutils small things
Revision 1.3 2004/03/18 16:55:47 marco
* more simple implementations done, based on copy() Largely untested
}