mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 13:19:27 +02:00
* more strutils small things
This commit is contained in:
parent
c11c3fdc67
commit
8f0bc1fc2d
@ -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
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user