delphi memo问题
代码如下procedureTForm1.Button1Click(Sender:TObject);varSearchText:string;k,l:integer;beg...
代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
SearchText:string;
k,l:integer;
begin
edit1.Text:=UpperCase(edit1.text);
memo1.Clear;
SearchText:=edit1.Text; //查找edit1中输入的文本
k:=pos(SearchText,memo2.Text) ; //求出首次出现SearchText的位置
l:=pos(';',memo2.Text);// 找;
if k=0 then
showmessage('指令未找到')
else
begin
memo1.SelStart:=k;
memo1.SelLength:=length(SearchText);
// memo1.SetFocus;//这一句很重要,否则就会看不到文字被选中
memo1.Text:='说明:'+copy(memo2.Text,l +1,length(memo2.Text)-l) ; //这里出问题了
end;
end;
end.
我在memo2里存放了一些字符,想要实现当点击查找后依照edit里输入的在memo2里查找,如果找到一样的,就将';'后面到本行末的内容复制到memo1里并显示。
现在运行程序后没有查找我在edit里输入的内容,且它将memo2所有的内容全部复制到memo1里去了
请帮我看看是哪里出错了
不好意思,是我表达的不够清楚,我把目的继续说下:
因为memo2里的字母都是大写的,所以第 一段的edit1.Text:=UpperCase(edit1.text)是用来把字母转成大写的以便做查找。
我想做的是,在memo2里查找与edit的内容,然后把后面的内容到全行复制到memo1里显示。
比如memo2里有aaabcdeadfda,(下一行还有很多内容)我在edit里输入aaa以后,能够把aaa后的(bcdeadfda)复制到memo1里显示。
谢谢两位大鸟,我虽然接触delphi约有两个,但全都是自学的,工作和这个没有一点联系完全是个人爱好。
请求帮助,谢谢! 展开
procedure TForm1.Button1Click(Sender: TObject);
var
SearchText:string;
k,l:integer;
begin
edit1.Text:=UpperCase(edit1.text);
memo1.Clear;
SearchText:=edit1.Text; //查找edit1中输入的文本
k:=pos(SearchText,memo2.Text) ; //求出首次出现SearchText的位置
l:=pos(';',memo2.Text);// 找;
if k=0 then
showmessage('指令未找到')
else
begin
memo1.SelStart:=k;
memo1.SelLength:=length(SearchText);
// memo1.SetFocus;//这一句很重要,否则就会看不到文字被选中
memo1.Text:='说明:'+copy(memo2.Text,l +1,length(memo2.Text)-l) ; //这里出问题了
end;
end;
end.
我在memo2里存放了一些字符,想要实现当点击查找后依照edit里输入的在memo2里查找,如果找到一样的,就将';'后面到本行末的内容复制到memo1里并显示。
现在运行程序后没有查找我在edit里输入的内容,且它将memo2所有的内容全部复制到memo1里去了
请帮我看看是哪里出错了
不好意思,是我表达的不够清楚,我把目的继续说下:
因为memo2里的字母都是大写的,所以第 一段的edit1.Text:=UpperCase(edit1.text)是用来把字母转成大写的以便做查找。
我想做的是,在memo2里查找与edit的内容,然后把后面的内容到全行复制到memo1里显示。
比如memo2里有aaabcdeadfda,(下一行还有很多内容)我在edit里输入aaa以后,能够把aaa后的(bcdeadfda)复制到memo1里显示。
谢谢两位大鸟,我虽然接触delphi约有两个,但全都是自学的,工作和这个没有一点联系完全是个人爱好。
请求帮助,谢谢! 展开
4个回答
展开全部
var
StartPos,EndPos:Integer;
begin
Memo1.Clear; //清空Memo1文本
StartPos :=Pos(';',Memo2.Text); //获取;字符在Memo2的位置
EndPos :=Length(Memo2.Text) - StartPos; //得到复制字符串的长度
Memo1.Text :=Trim(Copy(Memo2.Text,StartPos + 1,EndPos));
end;
这样就可以实现将;字符后的文本复制到Memo1中.
感觉你上边的代码好多都用不到...不知道你到底想干什么!
比如这三行代码:
edit1.Text:=UpperCase(edit1.text);
memo1.Clear;
SearchText:=edit1.Text; //查找edit1中输入的文本
你可以写成:
Memo1.Clear;
SearchText:=UpperCase(Edit1.Text);
这样就可以的呀!
你只想得到;字符后的文本,为何还要弄个SearchText变量来获得Edit里的文本呢?不理解.
下边的复制什么的代码,根本用不到呀!增加代码量,没一点实用价值的!
StartPos,EndPos:Integer;
begin
Memo1.Clear; //清空Memo1文本
StartPos :=Pos(';',Memo2.Text); //获取;字符在Memo2的位置
EndPos :=Length(Memo2.Text) - StartPos; //得到复制字符串的长度
Memo1.Text :=Trim(Copy(Memo2.Text,StartPos + 1,EndPos));
end;
这样就可以实现将;字符后的文本复制到Memo1中.
感觉你上边的代码好多都用不到...不知道你到底想干什么!
比如这三行代码:
edit1.Text:=UpperCase(edit1.text);
memo1.Clear;
SearchText:=edit1.Text; //查找edit1中输入的文本
你可以写成:
Memo1.Clear;
SearchText:=UpperCase(Edit1.Text);
这样就可以的呀!
你只想得到;字符后的文本,为何还要弄个SearchText变量来获得Edit里的文本呢?不理解.
下边的复制什么的代码,根本用不到呀!增加代码量,没一点实用价值的!
展开全部
var
StartPos,EndPos:Integer;
begin
Memo1.Clear; //清空Memo1文本
StartPos :=Pos(';',Memo2.Text); //获取;字符在Memo2的位置
EndPos :=Length(Memo2.Text) - StartPos; //得到复制字符串的长度
Memo1.Text :=Trim(Copy(Memo2.Text,StartPos + 1,EndPos));
end;
这样就可以了。写的挺好的。
StartPos,EndPos:Integer;
begin
Memo1.Clear; //清空Memo1文本
StartPos :=Pos(';',Memo2.Text); //获取;字符在Memo2的位置
EndPos :=Length(Memo2.Text) - StartPos; //得到复制字符串的长度
Memo1.Text :=Trim(Copy(Memo2.Text,StartPos + 1,EndPos));
end;
这样就可以了。写的挺好的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
memo1.Text:='说明:'+copy(memo2.Text,l +LENGTH(edit1.Text)+2,length(memo2.Text)-l) ; //改为这样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我没有看到Memo2里的内容是什么,也不知道你要查找的内容是什么,最终的目的是要完成什么功能。我只能说,下列语句:
l:=pos(';',memo2.Text);
其中l的值,是memo2.Text中第一个分号的位置,而与K的值没有任何关系。不知道是不是这个影响了程序运行的结果。
l:=pos(';',memo2.Text);
其中l的值,是memo2.Text中第一个分号的位置,而与K的值没有任何关系。不知道是不是这个影响了程序运行的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询