可通过函数POS及COPY配合使用实现该功能。
一、函数说明:
POS:获取特定字符所处字符串的位置,返回数据类型为整型。POS共有两个参数:POS(特定字符或字符串,源字符串)。
COPY:字符串截取,返回数据类型为字符型。COPY共有三个参数:COPY(源字符串,起始截取位(整型,可为变量),截取位数(整型,可为变量))。
二、实例演示(笔者以截取特定字符‘.'前5位为例),操作如下:
1、添加TEDIT及TBUTTON控件各一个;
2、在TBUTTON控件的单击事件中,写入代码:ShowMessage(Copy(Trim(ed2.Text),Pos('.',Trim(ed2.Text))-6,5));
3、在TEDIT中随便输入一串字符,点击TBUTTON控件,效果如下图:
我给一段代码并附上测试例程.
//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.