请教pos函数(delphi)

发布网友 发布时间:2024-10-22 20:05

我来回答

2个回答

热心网友 时间:2024-10-22 23:21

unit Unit1;

interface

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

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

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

{$R *.dfm}

procere 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;

procere 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;

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

end.

热心网友 时间:2024-10-22 23:22

放一个edit1,和button1
按钮的单击事件如下:输入sfds+QQ432432测试,则取出432432
procere 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+QQ
+QQefe349ejrelre
+QQ683163269077F7000801124F60597D002053D1
结果为3

procere 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;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com