delphi7分段读取文本
求大侠帮助给个D7能通过的代码:要求多个memo控件分别读取N段文本,识别“#”,举例:memo1读取开头至第一个#,memo2读取第一个与第二个#之间的内容,memo3...
求大侠帮助给个D7能通过的代码:
要求多个memo控件分别读取N段文本,识别“#”,
举例:
memo1读取开头至第一个#,memo2读取第一个与第二个#之间的内容,memo3以此类推,
文本内容:
asdgasd dasg
dsagasdggg d
#
dasggggggggggggd
#
gggggggggggggsad ewag
不要D7能通过,谢谢!不会的请不要来回答,线上等
要D7能通过的代码,写1至2段代码包括注释,谢谢 展开
要求多个memo控件分别读取N段文本,识别“#”,
举例:
memo1读取开头至第一个#,memo2读取第一个与第二个#之间的内容,memo3以此类推,
文本内容:
asdgasd dasg
dsagasdggg d
#
dasggggggggggggd
#
gggggggggggggsad ewag
不要D7能通过,谢谢!不会的请不要来回答,线上等
要D7能通过的代码,写1至2段代码包括注释,谢谢 展开
展开全部
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我。
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通过了。
第二次出现#不能表示,所以就写不了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
--记得给分哦!
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.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用copy函数截取吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询