memo1的一行数据格式是
位置,30,40,55,25
位置,35,46,50,25如何把这一五个数值,分别付给label1.caprion
label2.caprion
label3.caprion
label4.caprion
label5.caprion
位置,30,40,55,25
位置,35,46,50,25如何把这一五个数值,分别付给label1.caprion
label2.caprion
label3.caprion
label4.caprion
label5.caprion
嘿嘿.写进去简单,不懂得取出来了.
这个也可以写在“函数体”
实现代码如下:
procedure TForm1.Memo1Click(Sender: TObject);
var
a:integer;
a0,a1,a2,a3:string;
begin a:=SendMessage(Memo1.Handle,EM_LineFromChar,Memo1.SelStart,0); //获取当前行号 if Trim(memo1.Lines.Strings[a])<>'' then
begin
if Pos(',',memo1.Lines.Strings[a])>0 then
begin
a0:=Copy(memo1.Lines.Strings[a],1,Pos(',',memo1.Lines.Strings[a])-1);
showmessage('当前行信息内容:'+memo1.Lines.Strings[a]+#10#13+ //记录显示
'第一个关键字是:'+a0); end;
end;
//将第一个字符开始截取到第一个分号后的所以字符串
//示例 位置,30,40,55,25 截取后的信息是: 30,40,55,25
a1:=RightStr(memo1.Lines.Strings[a],(length(memo1.Lines.Strings[a]))-length(a0)-1); //引用系统单元StrUtils
showmessage('a1 '+a1); //获取字符串 30,40,55,25 //============================================================================
if Trim(a1)<>'' then
begin
if Pos(',',a1)>0 then
begin
a2:=Copy(a1,1,Pos(',',a1)-1);
showmessage('当前行信息内容:'+a2+#10#13+ //记录显示
'第二个关键字是:'+a2); end;
end;
//将第一个字符开始截取到第一个分号后的所以字符串
//示例 位置,30,40,55,25 截取后的信息是: 30,40,55,25
a3:=RightStr(a1,(length(a1))-length(a2)-1); //引用系统单元StrUtils
showmessage('a3 '+a3); //获取字符串 30,40,55,25end;
function GetDefaultString(Bankinformation:String;bsfdh:Char;nPos:integer):string;
var
sListinfo:TStringList;
begin
Result:='';
sListinfo:=TStringList.Create;
sListinfo.Text:=StringReplace(Bankinformation,bsfdh,#13#10,[rfReplaceAll]);
if (nPos>0) and (sListinfo.Count>=nPos) then Result:=sListinfo[nPos-1];
end;引用方式如下:
procedure TForm1.Button3Click(Sender: TObject);
var
a:integer;
begin
a:=SendMessage(Memo1.Handle,EM_LineFromChar,Memo1.SelStart,0); //获取当前行号 label1.Caption:=(GetDefaultString(memo1.Lines.Strings[a],',',1));//第3个*后的字符.
label2.Caption:=(GetDefaultString(memo1.Lines.Strings[a],',',2));//第3个*后的字符.
label3.Caption:=(GetDefaultString(memo1.Lines.Strings[a],',',3));//第3个*后的字符.
label4.Caption:=(GetDefaultString(memo1.Lines.Strings[a],',',4));//第3个*后的字符.
label5.Caption:=(GetDefaultString(memo1.Lines.Strings[a],',',5));//第3个*后的字符.end;//重点声明一下:
必须用“鼠标”选中MEMO1中的某一行后,再点击“按扭”获取信息的测试OK,继续“潜水”.............
等待下一次涨海水.................
try
CommaText := '位置,30,40,55,25';
Label1.Caption := Strings[0];
Label2.Caption := Strings[1];
Label3.Caption := Strings[2];
Label4.Caption := Strings[3];
Label5.Caption := Strings[4];
finally
Free
end;
基本上这个写得很了,但是,这个要鼠标指定位置我要操作了,每隔几秒自动读取(相当于后台操作)一行数据,然后付值,然后再读取下一行数据
楼主其实你可以在读取信息到控件MEMO1后,
再循环读取这个MEMO1控件中的信息即可