var a: array of string; s: TStringList; i: Integer; begin s:= TStringList.Create; i := Pos(str2,str1); while i>0 do begin s.Add(copy(str1,0,i-1)); Delete(str1,1,i); i := Pos(str2,str1); end; SetLength(a,s.Count); For i:= 0 to s.count-1 do a[i] := s.strings[i]; s.Free; end;
function splitstr(const str1 ,str2:string):strings; var i:integer; s:string; begin result:=tstringlist.create; s:=str1; i:=pos(s,str2); while i do begin result.add(copy(s,1,i)); s:=rightstr(s,legth(s) - i - legnth(str2) -1); i:=pos(s,str2); end; result.add(s); end;
function SetPath(const StrInput: string):PCHAR; var s : char; i,j:integer; maxL:integer; ss:string; begin s := '\'; ss:=strInput; maxL:=length(strinput); j:=0; for i:=1 to maxL do if comparetext(copy(strinput,i,1),s)=0 then begin inc(j,1); insert(s,ss,i+j); end; result:=PCHAR(ss+#0); end;ss:=SetPath(‘c:\aa\aa.txt’); ss的值為’c:\\aa\\aa.txt’ 你參考一下吧。
ExtractStrings();
不太明白楼主的意思。 你所说的意思是不是以下的表现。 试试看。 Function StrBeCut(str1,str2:string;var Cutstr:array of string):boolean; begin Result:=False; if pos(str2,str1)<>0 then begin Cutstr[0]:=Copy(str1,1,pos(str2,str1)-1); CutStr[1]:=Copy(str1,pos(str2,str1)+1,length(str1)); Result:=True; end; End; procedure TForm1.Button2Click(Sender: TObject); var str1,str2 : string; CutStr : array[0..1] of string; begin str1:='aaabbb/cccddd'; str2:='/'; IF StrbeCut(str1,str2,CutStr) then begin Showmessage(CutStr[0]); //->> aaabbb Showmessage(CutStr[1]); //->> cccddd End; End;
function xx(str1, str2 : string) : tstrings; var a: array of string; s: TStringList; i: Integer; begin s:= TStringList.Create; i := Pos(str2,str1); while i>0 do begin s.Add(copy(str1,0,i-1)); Delete(str1,1,i+length(str2)-1); i := Pos(str2,str1); end; s.Add(str1); //SetLength(a,s.Count); result := s; //s.Free; end;ljmanage(过客) 的代码我修改了一下,总算过了,谢谢!
什么意思
a: array of string;
s: TStringList;
i: Integer;
begin
s:= TStringList.Create;
i := Pos(str2,str1);
while i>0 do
begin
s.Add(copy(str1,0,i-1));
Delete(str1,1,i);
i := Pos(str2,str1);
end;
SetLength(a,s.Count);
For i:= 0 to s.count-1 do
a[i] := s.strings[i];
s.Free;
end;
var
i:integer;
s:string;
begin
result:=tstringlist.create;
s:=str1;
i:=pos(s,str2);
while i do
begin
result.add(copy(s,1,i));
s:=rightstr(s,legth(s) - i - legnth(str2) -1);
i:=pos(s,str2);
end;
result.add(s);
end;
var
s : char;
i,j:integer;
maxL:integer;
ss:string;
begin
s := '\';
ss:=strInput;
maxL:=length(strinput);
j:=0;
for i:=1 to maxL do
if comparetext(copy(strinput,i,1),s)=0 then
begin
inc(j,1);
insert(s,ss,i+j);
end;
result:=PCHAR(ss+#0);
end;ss:=SetPath(‘c:\aa\aa.txt’);
ss的值為’c:\\aa\\aa.txt’
你參考一下吧。
ExtractStrings();
你所说的意思是不是以下的表现。
试试看。
Function StrBeCut(str1,str2:string;var Cutstr:array of string):boolean;
begin
Result:=False;
if pos(str2,str1)<>0 then begin
Cutstr[0]:=Copy(str1,1,pos(str2,str1)-1);
CutStr[1]:=Copy(str1,pos(str2,str1)+1,length(str1));
Result:=True;
end;
End;
procedure TForm1.Button2Click(Sender: TObject);
var
str1,str2 : string;
CutStr : array[0..1] of string;
begin
str1:='aaabbb/cccddd';
str2:='/';
IF StrbeCut(str1,str2,CutStr) then begin
Showmessage(CutStr[0]); //->> aaabbb
Showmessage(CutStr[1]); //->> cccddd
End;
End;
str1 := 'a,b,c,d'
str2 := ','返回的是:右 'a','b','c','c' 组成的数组
var
a: array of string;
s: TStringList;
i: Integer;
begin
s:= TStringList.Create;
i := Pos(str2,str1);
while i>0 do
begin
s.Add(copy(str1,0,i-1));
Delete(str1,1,i+length(str2)-1);
i := Pos(str2,str1);
end;
s.Add(str1);
//SetLength(a,s.Count);
result := s;
//s.Free;
end;ljmanage(过客) 的代码我修改了一下,总算过了,谢谢!