unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button2: TButton;
    Edit5: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button3: TButton;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  iLine:integer;implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
begin
  iLine:=1;
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
  Edit4.Text:='';
  Memo1.Text:='';
  Memo1.Lines.add('12|25|56|88|22|50|56|77|12|25|56|86|12|');
  Memo1.Lines.add('22|50|56|77|12|25|56|88|22|50|56|77|34|');
  Memo1.Lines.add('12|25|56|86|12|25|56|88|22|50|56|77|14|');
  Memo1.Lines.add('32|45|56|88|22|50|56|77|12|25|56|86|12|');
  Memo1.Lines.add('25|56|56|73|32|25|56|88|22|50|56|77|34|');
  Memo1.Lines.add('52|25|66|84|15|24|56|88|22|50|56|77|14|');
  Memo1.Lines.add('17|24|56|85|27|56|56|77|12|25|56|86|12|');
  Memo1.Lines.add('25|56|76|72|18|25|56|88|22|50|56|77|34|');
  Memo1.Lines.add('14|25|58|84|32|75|56|88|22|50|56|77|14|');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  iLine:=Strtoint(Edit5.Text);
end;procedure TForm1.Button2Click(Sender: TObject);
var MyList:TStringList;
    S:string;
    i:integer;
begin
  MyList:=TStringList.Create;
  MyList.Text:=Trim(Memo1.Text);
  if iLine>Memo1.Lines.Count then exit;
  for i := 0 to Memo1.Lines.Count do
    if i=(iLine-1) then S:=MyList.Strings[i];
  Edit1.Text:=Copy(S,1,2);
  Edit2.Text:=Copy(S,5,2);
  Edit3.Text:=Copy(S,9,2);
  Edit4.Text:=Copy(S,13,2);
  iLine:= iLine+1;
  MyList.Free;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
  close;
end;end.

解决方案 »

  1.   

    点击“逐行读数”,可以逐行分别读取下一行的四个数据。上述代码,自己修改使用吧。关键要定义一个全局变量 iLine,用于记录当前应该读取的行数。这样,达到你所要求的功能了。建议你使用TRichEdit,它可以设置光标位置。通过光标的位置,读取数据。
      

  2.   

    var
    aFile:TEXTFILE;
    curLine:String;
    aStringList:TStringList;
    i:Integer;
    begin
    ASSIGNFILE(aFile,'C:\aTextFile.TXT');
    RESET(aFile);
    aStringList:=TStringList.Create;
    aStringList.Delimiter:='|';
    while not EOF(aFile) do
    begin
      READLN(aFile,curLine);
      //对curLine字符串进行处理
      //由于楼主的分隔符是全角的|,所以不能使用下面的代码
      //我将全角的换成半角的|,就可以简单用TStringList来演示
      aStringList.DelimitedText:=curLine;
      for i:=Low(aStringList) to High(aStringList) do
          //保存你的列数据
    end;
    end;
      

  3.   

    Memo逐行读取数据Dome,源代码下载地址:http://download.csdn.net/detail/lyhoo163/8449105