delphi7分段读取文本

求大侠帮助给个D7能通过的代码:要求多个memo控件分别读取N段文本,识别“#”,举例:memo1读取开头至第一个#,memo2读取第一个与第二个#之间的内容,memo3... 求大侠帮助给个D7能通过的代码:
要求多个memo控件分别读取N段文本,识别“#”,
举例:
memo1读取开头至第一个#,memo2读取第一个与第二个#之间的内容,memo3以此类推,
文本内容:
asdgasd dasg
dsagasdggg d
#
dasggggggggggggd
#
gggggggggggggsad ewag
不要D7能通过,谢谢!不会的请不要来回答,线上等
要D7能通过的代码,写1至2段代码包括注释,谢谢
展开
 我来答
qiao_liu
2011-05-30 · TA获得超过422个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:244万
展开全部
var strList:TStrings;
ReadString:String;
begin
strList:=TStringList.Create;
strList.LoadFromFile('文件路径'); //捞文件内容,即将文件内容赋值给strList
Memo1.Text:=Copy(strList.Text,1,Pos('#',strList.Text)-1); // Pos('#',strList.Text)表示#在strList内容中第一次出现的位置;Copy(strList.Text,1,Pos('#',strList.Text)-1)表示截取strList中第一个字符位置到第一次出现'#'的位置(前一个字符位置)之间的内容。
ReadString:=Copy(strList.Text,Pos('#',strList.Text)+1,Length(strList.Text)-Pos('#',strList.Text));
// 截取strList(文件)内容中第一次出现#後的内容,并将其值赋给ReadString;
Memo2.Text:=Copy(ReadString,1,Pos('#',ReadString)); //原理同上,截取ReadString中第一个字符位置到第一次出现#位置之间的内容,并将值赋给Memo2。
.......
end;

若还有疑问,请Hi我。
追问
举一反三,我反不过去,没办法太菜,前2个memo通过了。
第二次出现#不能表示,所以就写不了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HJ_3000
2011-05-31 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:54.3万
展开全部
Procedure TForm1.Button1Click(Sender: TObject);
Var
S: String;
alist, blist: TStringList;
Begin
alist := TStringList.Create;
blist := TStringList.Create;
Try
alist.LoadFromFile('c:\ss.txt'); //加载以“#”分段的文本。

While alist.Count <> 0 Do //遍历文本内容
Begin
S := alist[0];
alist.Delete(0);

If Sametext(S, '#') Then //分段标识
Begin
Application.MessageBox(PChar(blist.Text), '', 64);
blist.Clear;
End
Else
Begin
blist.Add(S);
End;
End;

Application.MessageBox(PChar(blist.Text), '', 64);
Finally
alist.Clear;
alist.Free;

blist.Clear;
blist.Free;
End;
End;

--记得给分哦!
追问
是要分段显示到N个memo上,不是弹出消息。
追答
Unit Unit1;

Interface

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

Type
TForm1 = Class(TForm)
BitBtn2: TBitBtn;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Procedure BitBtn2Click(Sender: TObject);
Private
Procedure ShowMsg(S: String); //1
Public
End;

Var
Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.ShowMsg(S: String); //1
Begin
If Memo1.Lines.Count = 0 Then
Begin
memo1.Text := s;
End
Else If Memo2.Lines.Count = 0 Then
Begin
memo2.Text := s;
End
Else If Memo3.Lines.Count = 0 Then
Begin
memo3.Text := s;
End;
End;

Procedure TForm1.BitBtn2Click(Sender: TObject);
Var
S: String;
alist, blist: TStringList;
Begin

memo1.Clear;
memo2.Clear;
memo3.Clear;

alist := TStringList.Create;
blist := TStringList.Create;
Try
alist.LoadFromFile('c:\ss.txt'); //加载以“#”分段的文本。

While alist.Count 0 Do //遍历文本内容
Begin
S := alist[0];
alist.Delete(0);

If Sametext(S, '#') Then //分段标识
Begin
//Application.MessageBox(PChar(blist.Text), '', 64);
ShowMsg(blist.Text);
blist.Clear;
End
Else
Begin
blist.Add(S);
End;
End;

//Application.MessageBox(PChar(blist.Text), '', 64);
ShowMsg(blist.Text);
Finally
alist.Clear;
alist.Free;

blist.Clear;
blist.Free;
End;
End;

End.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邦浅魔千
2011-05-31 · TA获得超过220个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:354万
展开全部
procedure TForm1.Button16Click(Sender: TObject);
var
strList: TStringList;
i, k, Pos1, Pos2: Integer;
Finish: Boolean;
tmpStr, tmpText: string;
begin
strList := TStringList.Create;
try
strList.LoadFromFile('c:\test.txt'); //导入
tmpText := strList.Text;
k := 1;
Pos1 := 1;
Pos2 := 0;
Finish := False;
if tmpText = '' then
Exit;
while True do //循环判断,并赋值,当没有#或者到3个的时候退出
begin
Pos2 := PosEx('#', tmpText, Pos1);
if Pos2 <= 0 then
begin
Pos2 := Length(tmpText) + 1;
Finish := True;
end;
if k = 1 then
Memo1.Text := Trim(Copy(tmpText, Pos1, Pos2 - Pos1));
if k = 2 then
Memo2.Text := Trim(Copy(tmpText, Pos1, Pos2 - Pos1));
if k = 3 then
begin
Memo3.Text := Trim(Copy(tmpText, Pos1, Pos2 - Pos1));
Finish := True;
end;
k := k + 1;
Pos1 := Pos2 + 1;
if Finish then
Break;
end;
finally
strList.Free;
end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mit1208
2011-05-30 · TA获得超过2347个赞
知道大有可为答主
回答量:2743
采纳率:0%
帮助的人:1854万
展开全部
使用copy函数截取吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式