请教pos函数(delphi)

菜鸟想实现如下功能:
在memo控件中有如下内容:
5656565656565656
123456123+QQ64
+QQefe349ejrelre
+QQ683163269077F7000801124F60597D002053D1
.......
ABCDEFERFD+QQFEREFEF
..................
求助pos函数的功能,怎样循环判断+QQ出现的次数,然后取出:+QQ后的内容
那一行有+QQ就把它后面的内容取出来,例如:123456123+QQ64,就取出64
望各位高人能给予代码说明,谢谢!
请高人给予指教,谢谢!
各位高人都来来看看,怎样解决这个问题,因为我的积分已没了,所以给的分太少,请各位别见怪呀,谢谢,还是我的问题是真诚的,呵呵!
请各位写一个循环函数呀

上述提问不太清楚,现把清楚的展示给各位高人,请高人帮忙

菜鸟想实现如下功能:
在memo控件中有如下内容:
5656565656565656
123456123+QQ64
+QQefe349ejrelre
+QQ683163269077F7000801124F60597D002053D1
.......
ABCDEFERFD+QQFEREFEF
..................
求助pos函数的功能,怎样循环判断+QQ的出现,然后取出+QQ后的内容
那一行有+QQ就把它后面的内容取出来,例如:123456123+QQ64,就取出64把它赋予给edit ;当 +QQefe349ejrelre这一行出现+QQ,就把上一个行+QQ后的内容删除,把本行的+QQ后的内容efe349ejrelre赋予edit
望各位高人能给予代码说明,谢谢!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
mylist:Tstringlist;//定义一个Tstringlist类型,用来读取memo1的内容。
m:integer;//全局变量,用来测定读取到了mylist的第几行。
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
mylist:=Tstringlist.Create;//逐行读取memo1的内容
for i:=0 to memo1.Lines.Count-1 do
mylist.Add(memo1.Lines.Strings[i]);
m:=0;//初始化全局变量m。
end;

procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;
s:string;
begin
edit1.Clear;
if m < mylist.Count then//如果未到mylist未尾进行以下步骤。
begin
s:=mylist.Strings[m];//读取一行
n:=pos('+',s);//判断+号的位置
s:=copy(s,n+3,length(s)-(n+2));//复制QQ后面的内容,位置为n+3,长度为length(s)-(n+2)
if n <> 0 then//如果n不为0,既有+号,则进行下面步骤。
edit1.Text:=s
else//如果n为0,既没有+号,则edit1中注明没有。
edit1.Text:='第'+inttostr(m+1)+'行没有QQ';
m:=m+1;//m增加1,下次读mylist的下一行
end
else//如果读到了mylist未尾,则进行下面步骤。
begin
m:=0;//将m恢复为0,下次点击button1时,从mylist的第一行开始。
edit1.Text:='搜索完毕,点击重新开始!';
edit1.SetFocus;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mylist.Free;//释放mylist。
end;

end.
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-06-19
放一个edit1,和button1
按钮的单击事件如下:输入sfds+QQ432432测试,则取出432432
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:string;
begin
i:=pos('+',edit1.Text);
s:=copy(edit1.Text,i+3,length(edit1.Text));
showmessage(s);
end;
分太少了,兄弟强烈要求加分,才帮你做完

我就是一个人,不是各位,循环我已经写好了,不过还要一点时间来测试一下,出了bug,没办法,搞了好几天.
在form 上放一个memo,一个button,在memo的line里加上一些数据5656565656565656
123456123+QQ64
+QQefe349ejrelre
+QQ683163269077F7000801124F60597D002053D1
结果为3

procedure TForm1.Button1Click(Sender: TObject);
var
s,str:string;
i,num:integer; //num是所要求的值;
j:integer;//加号的位置;
k:integer;//逗号的位置;
m:integer;//逗号出现的次数;
begin
s:=memo1.Lines.CommaText+',afsa'; //都是这里出了bug害我调了好几天;加一段是为了更好的判断
num:=0;
m:= (Length(s) - Length(AnsiReplaceStr(s, ',', ''))) div (length(',')); //计算逗号的次数;
for I := 1 to m+1 do
begin
k:=pos(',',s);
str:=copy(s,0,k-1);
s:=copy(s,k+1,length(s)-k); //复制字符串
if s<>'' then //s不为空时程序才能进行;
begin
j:=pos('+',str);
if copy(str,j,3)='+QQ' then //循环判断每一行是否有+QQ;
begin
num:=num+1; //有则加1;
end
else
begin
num:=num; //无则退出;
end;
end;
end;
showmessage('+QQ一共出现了 '+inttostr(num)+' 次'); // +QQ一共出现了num次;
end;

请教pos函数(delphi)
s:=mylist.Strings[m];\/\/读取一行 n:=pos('+',s);\/\/判断+号的位置 s:=copy(s,n+3,length(s)-(n+2));\/\/复制QQ后面的内容,位置为n+3,长度为length(s)-(n+2)if n <> 0 then\/\/如果n不为0,既有+号,则进行下面步骤。edit1.Text:=s else\/\/如果n为0,既没有+号,则edit...

delphi中pos函数怎么用?
pos(‘b’,‘abcd’);返回结果是2;在delphi中使用汇编异常的简单,只用使用关键字asm ...end来引导就行了。 得到一个字符在字符串中的位置有很多方法,最简单的就是使用delphi自己的Pos函数 。另外一个方法就是使用 循环查找字符串数组的方法,二分法等,这几种是比较常规的方法,其中建议最好不...

delphi中POS函数返回的是一个什么值?我ShowMessage(Pos(,sF
一、delphi中POS函数返回的是一个什么值?我ShowMessage(Pos(,sFullpath));出错说不兼容的STRING AND INT  Pos的位置,所以是整数类型来的。可以这样用:ShowMessStr(Pos('\\',sFullpath)));二、delphi中POS函数返回的是一个什么值?我ShowMessage(Pos('\\',sFull...Pos返回的是当前子串所出...

delphi中如何编程实现pos,copy函数
function MyPos(u: string; s: string) : integer;var i,j: integer;begin Result := 0;for i := 1 to Length(s) do begin if s[i] = u[1] then begin j := 1;while j <= length(u) do begin if u[j] = s[i+j-1] then begin j := j + 1;continue;end else break...

在Delphi中,怎么查找字符串?
Delphi提供的字符串函数里有一个Pos函数,它的定义是: function Pos(Substr: string; S: string): Integer; 它的作用是在字符串S中查找字符串Substr,返回值是Substr在S中第一次出现的位置,如果没有找到,返回值为0。 使用pos函数来查找字符第一次出现的位置 1 2 3 4 5 6 7 8 9 var str1:string; i,j...

delphi 中的move()和pos()函数究竟是怎样用的?
将Source按字节拷贝到Dest。Count为要拷贝的字节数。var A: array[0..1] of Char;B: array[0..1] of Char;begin A[0]:='1';A[1]:='2';Move(A, B, SizeOf(B));end;function Pos(Substr: string; S: string): Integer;在S中查找Substr第一次出现的位置。返回0表示在S中没有...

delphi 如何把一串字符串的某个值的前几个字符保留下来
可通过函数POS及COPY配合使用实现该功能。一、函数说明:POS:获取特定字符所处字符串的位置,返回数据类型为整型。POS共有两个参数:POS(特定字符或字符串,源字符串)。COPY:字符串截取,返回数据类型为字符型。COPY共有三个参数:COPY(源字符串,起始截取位(整型,可为变量),截取位数(整型,可为...

关于delphi strpos函数的用法
首先说一下错误,这应该是编译不过的,国为StrPos是一个针对pchar(指针)的函数,而不是针对string的函数,而edit1.text是一个string,会有类型不匹配,如果你一个要用这个方法,可以写成 StrPos(pchar(edit1.text),'.'),或者你可以用针对string的函数Pos.不过参数就与strPos相反了。Pos('.', ...

关于delphi截取字符串的问题
先用取出<>以及这中间的内容。这边可以用pos(substring,string)函数获得。再利用replace函数替换为空,最后去掉空格。

DELPHI函数 检查字符串中是否含有
\/\/楼上一看就知道是复制的, 都没有换行 \/\/Delphi有个函数POS, 是判断是否含有字串的 \/\/我写个函数给你 function HaveDot(Str: string): Boolean;var i: Integer;begin result := false;{假设没有'.'} i := Pos('.', Str);\/\/字串是'.'if i <> 0 then result := true;{如果有'....

相似回答
大家正在搜