pos函数 ( 积分: 20 )

  • 主题发起人 主题发起人 mawei0913_green
  • 开始时间 开始时间
M

mawei0913_green

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟想实现如下功能:
在memo控件中有如下内容:
5656565656565656
123456123+QQ64
+QQefe349ejrelre
+QQ683163269077F7000801124F60597D002053D1
.......
ABCDEFERFD+QQFEREFEF
..................
求助pos函数的功能,怎样循环判断+QQ的出现,然后取出+QQ后的内容
那一行有+QQ就把它后面的内容取出来,例如:123456123+QQ64,就取出64把它赋予给edit ;当 +QQefe349ejrelre这一行出现+QQ,就把上一个行+QQ后的内容删除,把本行的+QQ后的内容efe349ejrelre赋予edit
望各位高人能给予代码说明,谢谢!
 
前两天有人提过类似的问题。
 
大家都来看看呀,菜鸟刚遇到pos函数的问题,并且菜鸟对函数一直很头痛,还望各位高人能给予指点呀
 
前两天有人提过类似的问题。
 
11.Pos
功能说明:查找字符(串)所在位置。该函数有二个参数。第一个参数为要查找的字符(串),第二个参数为被查找字符(串)。

参考实例:

var

nPos: Integer; // 用于保存查找的字符所在位置

begin

nPos := Pos('Like', 'I Like Reading!');

end;

此时nPos等于3。如果没有查找到,则nPos为0。

注意:Pos函数在查找时是要区分字符大小的。如果要实现不区分大小,那么需要使用UpperCase或LowerCase函数将两个参数的字符(串)转换为“大写”或“小写”再进行查找。

另外还有一个查找字符(串)的函数----AnsiPos,该函数的使用方法与Pos函数完全一样。当你查找的是汉字时,最好使用AnsiPos函数。
 
如果一行只有一个‘QQ’用POS还行,否则不行的,因为POS只能找到第一个位置,
所以你的一行最多有一个QQ时可以以下
VAR
Times : integer;
Times := 0;
for i := 0 to memo1.lines.count - 1 do
begin
if Pos(UPPERcASE('qq'),uppercase(Memo1.Lines.strings0 > 0 then
inc(times)

end;
这样不能统计一行多个QQ的情况。
如果想统计还得对第一行的字符串进行分板,发现第一个QQ后,取右边的字符串,继续判断。
 
pos函数的功能我也清楚,只是菜鸟现在想循环判断+QQ的出现位置,然后把它后的内容取出来,求助高人,怎样写pos函数的循环语句,若该行满足有+QQ时,就执行以下语句,若不满足就跳出该循环!

谢谢各位高人,给菜鸟指点一下!
 
怎么
高人没有人回答呀,菜鸟真急用,望各位高人指教呀,谢谢
 
不用pos函数,其它函数只要能实现就行,请各位高人指教!
 
你所说的其后的内容是指哪里到哪里的内容?
 
+QQ后的内容
那一行有+QQ就把它后面的内容取出来,例如:123456123+QQ64,就取出64
 
请高人指教呀,谢谢!
 
var
i,j:integer;
memo2.lines.delimiter:='+'
memo2.lines.delimittext:=memo.text
for i:=1 to memo2.lines.count-1 do
begin
if pos('qq',memo2.lines.string)>0 then
inc(j)
end;
 
copy(字符串,pos()+3,总字符串长度-(pos()+3)+1),试验着来吧
 
利用rightstr可以实现你所说的那个功能
你试一下
 
各位大侠都来看看这个函数问题呀,菜鸟不会了,是关于用pos函数或其他函数的循环执行的,望各位高人能给予指点,谢谢
 
求助各位高人帮忙了,昨天没有解决,今天再求助各位,给菜鸟看看这个问题如何写呢?
 
怎么没高人回答呀?求助各位高人看看,谢谢!
 
pos函数的循环问题,请各位高人给菜鸟出出主意,谢谢
 
后退
顶部