30分:如何取得指定的字符串? ( 积分: 30 )

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
已知Memo1中有若干行字符串,其中有些是以“一”字开头的。
如何取得这些以“一”开头的字符串,并加载显示在Memo2中。
 
随手写的,未经测试。
var
i:integer;
begin
for i:= 0 to memo1.lines.count-1 do
if pos('一',memo1.lines.string)= 1 then
memo2.lines.add(memo1.lines.string);
end;
 
uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for I := 0 to Memo1.Lines.Count - 1 do
begin
if StartsText('一', memo1.Lines) then
begin
Memo2.Lines.Add(memo1.Lines);
end;
end;
end;
 
二楼三楼的都可以吧
 
楼上的都可以吧
 
for i := 0 to mmo1.lines.count - 1 do
if mmo1.lines[1] = '一' then
mmo2.line.add(mmo1.lines);
 
这虽然是很简单的问题,但 Mclkings 的代码肯定是错误的
汉字是双字节,按下标取得的是值是一个字节。等式不成立。
不要和我说Unicode如何如何,至少到delphi2007,vcl组件还不完全支持Unicode
 
谢谢,再问一个问题:
在数万行的文本中,用什么控件或算法才能实现快速加载显示和检索。
用Memo好像慢,还是算法有问题呢。总觉得加载几万行的文本文件,
Memo实在是太慢了。期待解答。
 
用SynEdit控件,装入20M的文本数据仅需2秒左右。
 
谢谢各位。
 
用POS函数可以,
ufo!的方法应该可以!
 
对于ufo的方法我这里调试通不过.string 不认识 作如下修改调试通过并且运行正确
var
i:integer;
begin
for i:= 0 to memo1.lines.count-1 do
if pos('一',memo1.lines)= 1 then
memo2.lines.add(memo1.lines);
end;
 
后退
顶部