delphi 如何把一串字符串的某个值的前几个字符保留下来
例如字符串是='abcdef'我要的是过滤c后面的,取出来的值是ab这个怎么实现?然后在把取出来的ab变成char数组类型。。。。...
例如字符串是='abcdef'
我要的是过滤c后面的,取出来的值是ab
这个怎么实现?
然后在把取出来的ab变成char数组类型。。。。 展开
我要的是过滤c后面的,取出来的值是ab
这个怎么实现?
然后在把取出来的ab变成char数组类型。。。。 展开
展开全部
不知道楼上的朋友程序调了没.大眼一看就好几处错误.真是不应该啊....
我给一段代码并附上测试例程.
//Delphi 7.0+win2k下通过
function myfun(str: string): PChar;
var
i: integer;
begin
i := Pos('c', str);
GetMem(Result, i); //注意,调用完该函数后,要调用FreeMem释放内存
ZeroMemory(Result, length(Result));
CopyMemory(Result, @str[1], i-1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
p: PChar;
i: integer;
begin
Str := 'aabcdefg'; //测试范例字符串
p := myfun(Str); //获取'c'之前的字符串并转换为字符数组(指针)
for i:=0 to Length(p) do //对两种方式访问结果的每一个元素
begin
Memo1.Lines.Add(p[i]); //按数组访问
Memo1.Lines.Add((p+i)^); //按指针访问
end;
Memo1.Lines.Add(p); //支持字符串式访问的自动转换
FreeMem(p); //对应GetMem.不然会内存泄漏
end;
end.
我给一段代码并附上测试例程.
//Delphi 7.0+win2k下通过
function myfun(str: string): PChar;
var
i: integer;
begin
i := Pos('c', str);
GetMem(Result, i); //注意,调用完该函数后,要调用FreeMem释放内存
ZeroMemory(Result, length(Result));
CopyMemory(Result, @str[1], i-1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
p: PChar;
i: integer;
begin
Str := 'aabcdefg'; //测试范例字符串
p := myfun(Str); //获取'c'之前的字符串并转换为字符数组(指针)
for i:=0 to Length(p) do //对两种方式访问结果的每一个元素
begin
Memo1.Lines.Add(p[i]); //按数组访问
Memo1.Lines.Add((p+i)^); //按指针访问
end;
Memo1.Lines.Add(p); //支持字符串式访问的自动转换
FreeMem(p); //对应GetMem.不然会内存泄漏
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个嘛用的基本是字符串的处理函数
i,j:integer;
s1,s2:string;
arr :array of char;
begin
s1:="abcdef"; //这步你当然可以用s1来动态获得它的值比方说 //s1:=edit2.text;
i:=pos('c',s1);
s2:=copy(s1,1,length(s1-i-1));
setlength(arr,i-1);
for j:=0 to i-1do
begin
arr[j]:=copy(s2,j+1,1); //其实s2本身也可以当成数组来用了
end;
end;
i,j:integer;
s1,s2:string;
arr :array of char;
begin
s1:="abcdef"; //这步你当然可以用s1来动态获得它的值比方说 //s1:=edit2.text;
i:=pos('c',s1);
s2:=copy(s1,1,length(s1-i-1));
setlength(arr,i-1);
for j:=0 to i-1do
begin
arr[j]:=copy(s2,j+1,1); //其实s2本身也可以当成数组来用了
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询