R robert168 Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #1 如果提取某个含中文字字符串A内的以B为开始的子字符串,我们用Ansistrpos(B,A)就行了。但我现在需要提取的是的是B位置前10位开始的子字符串,请问如何解决!是B位置往前10位,这之后的子字符串!本人结贴迅速,搞定立刻给分,谢谢!
如果提取某个含中文字字符串A内的以B为开始的子字符串,我们用Ansistrpos(B,A)就行了。但我现在需要提取的是的是B位置前10位开始的子字符串,请问如何解决!是B位置往前10位,这之后的子字符串!本人结贴迅速,搞定立刻给分,谢谢!
C CoolSlob Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #2 大概是这样Copy(A, AnsiStrPos(A,B) - 10, MAXINT)
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #3 Ansistrpos返回的是一个pchar地址,那么只需这样就可以了,前提是你确定b往前10个字符是存在的,否则会内存访问出错。x:= pchar(integer(Ansistrpos(a,b))-10);
Ansistrpos返回的是一个pchar地址,那么只需这样就可以了,前提是你确定b往前10个字符是存在的,否则会内存访问出错。x:= pchar(integer(Ansistrpos(a,b))-10);
R robert168 Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #4 TO:CoolSlobAnsiStrPos(A,B) - 10应该是不能进行的,AnsiStrPos(A,B)返回值是PCHAR类型TO:ufo!integer(Ansistrpos(a,b),这是不能转换的,里面不止是数字啊,可能有中文或英文啊。
TO:CoolSlobAnsiStrPos(A,B) - 10应该是不能进行的,AnsiStrPos(A,B)返回值是PCHAR类型TO:ufo!integer(Ansistrpos(a,b),这是不能转换的,里面不止是数字啊,可能有中文或英文啊。
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #5 安全版本,测试通过procedure TForm_login.Button1Click(Sender: TObject);var a,b,x: pchar;begin a:= '123456789'; b:= '456'; x:= pchar(integer(Ansistrpos(a,b))-2); if integer(a)<= integer(x) then showmessage(x) else showmessage('地址超出');end;
安全版本,测试通过procedure TForm_login.Button1Click(Sender: TObject);var a,b,x: pchar;begin a:= '123456789'; b:= '456'; x:= pchar(integer(Ansistrpos(a,b))-2); if integer(a)<= integer(x) then showmessage(x) else showmessage('地址超出');end;
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2009-02-17 #7 这样说吧,integer(XX) 和 strtoint(xx) 是不一样的。integer(XX)仅仅是告诉编译器把xx作为数字运算。这里是对内存地址进行运算。下面的例子也是测试通过的var a,b,x: pchar;begin a:= '中国人民解放军'; b:= '解放'; x:= pchar(integer(Ansistrpos(a,b))-2); if integer(a)<= integer(x) then showmessage(x);end;
这样说吧,integer(XX) 和 strtoint(xx) 是不一样的。integer(XX)仅仅是告诉编译器把xx作为数字运算。这里是对内存地址进行运算。下面的例子也是测试通过的var a,b,x: pchar;begin a:= '中国人民解放军'; b:= '解放'; x:= pchar(integer(Ansistrpos(a,b))-2); if integer(a)<= integer(x) then showmessage(x);end;