Delphi5 怎么读取txt

时间:2021-12-03 04:31:09
TXT文本 


SH 张三 23124
SH 李四 13000
SQ 王五 12312
SZ 小四 34256
HK 小五 12545
HK 七七 8954
SH 阿飞 15542




procedure TForm1.FormCreate(Sender: TObject);
var
  TextFileVar:TextFile;
  office,name,salary,temp:String;
begin
  AssignFile(TextFileVar,'test.txt');            //关联文件
  Reset(TextFileVar);                            //打开文件
  Edit1.Text:='';
  while not Eof(TextFileVar) do begin
    Read(TextFileVar,office,name,salary);                    //读取一行数据
    if((office='SZ')or( office='SH')or( office='HK')) then
    begin
      Edit1.Text:=Edit1.Text+(office+name+salary);
      break;
    end;
  end;
  CloseFile(TextFileVar);
  Edit1.Text:=Edit1.Text+(temp);
end;


理想状态是 读取SZ到office 张三到name这样 实际上是 SZ 张三 5717全部到了Office 

需求是 DBGrid 展示这些数据 初学不会做希望给个思路  没分数了 这是我账户最后三十分 希望大佬帮忙 

7 个解决方案

#1


或者说是 DBGrid可以直接绑定TXT文档数据 有什么方法可以达到这个功能 

#2


能把 SZ 张三 5717全部到了Office,那就可以直接把这个String拿来分解成 SZ 张三 5717 三个字符串,分别赋给三个字符串变量

至于要用DBGrid显示,就直接把这些字符串分别写到相应DBGrid的Cell里就是了

#3


引用 2 楼 hongss 的回复:
能把 SZ 张三 5717全部到了Office,那就可以直接把这个String拿来分解成 SZ 张三 5717 三个字符串,分别赋给三个字符串变量

至于要用DBGrid显示,就直接把这些字符串分别写到相应DBGrid的Cell里就是了
Delphi5 怎么读取txt经过尝试 Delphi5好像没有 Indexof这个 function不然我也不会发帖咯 赋值的话我确实不会

#4


要 IndexOf 干啥?

我没有D5,拿D7给你个DEMO吧,共同学习~~~~ Delphi5 怎么读取txt
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, DBClient, StdCtrls;

type
  TForm1 = class(TForm)
    DBG_1: TDBGrid;
    DS_1: TDataSource;
    ds1: TClientDataSet;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
    Str: String;
    f: TextFile;
    sL: TStringList;
    CDS: TClientDataSet;
begin
    AssignFile( f, 'TEST.txt' );
    Reset( f );
    sL:= TStringList.Create;
    sL.Delimiter:= ' ';
    CDS:= TClientDataSet.Create(Self);
    CDS.FieldDefs.Add('Addr', ftString, 8, True);
    CDS.FieldDefs.Add('Name', ftString, 8, True);
    CDS.FieldDefs.Add('Salary', ftString, 8, True);
    CDS.CreateDataSet;
    CDS.Open;
    while not EOF( f ) do
    begin
        Readln( f, Str );
        sL.DelimitedText:= Str;
        if( ( sL[0]='SZ' )or( sL[0]='SH' )or( sL[0]='HK' ) ) then
        begin
            mmo1.Lines.Add( sL[0]+'+'+sL[1]+'+'+sL[2] );
        end;
        CDS.Append;
        CDS.FieldByName('Addr').AsString := sL[0];
        CDS.FieldByName('Name').AsString := sL[1];
        CDS.FieldByName('Salary').AsString := sL[2];
        CDS.Post;
    end;
    DS_1.DataSet:= CDS;
    DBG_1.DataSource:= DS_1;
    sL.Free;
    CloseFile( f );
end;

end.


Delphi5 怎么读取txt

#5


...........
StringListRow,StringListCol:TStringList;
begin
  StringListRow:=TStringList.Create;
  StringListCol:=TStringList.Create;
  StringListRow.LoadFormFiel('你的TXT文件路径全称');
  for i:=Low(StringListRow) to High(StringListRow) do
  begin
     StringListCol:=StringListRow[i];
     .....
     
      StringListCol[0..2]就是你要的
    显示的话建议直接用StringGrid就可以了
    .......

#6


分给4楼吧,这代码没啥挑剔的。

#7


引用 4 楼 hongss 的回复:
要 IndexOf 干啥?

我没有D5,拿D7给你个DEMO吧,共同学习~~~~ Delphi5 怎么读取txt
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, DBClient, StdCtrls;

type
  TForm1 = class(TForm)
    DBG_1: TDBGrid;
    DS_1: TDataSource;
    ds1: TClientDataSet;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
    Str: String;
    f: TextFile;
    sL: TStringList;
    CDS: TClientDataSet;
begin
    AssignFile( f, 'TEST.txt' );
    Reset( f );
    sL:= TStringList.Create;
    sL.Delimiter:= ' ';
    CDS:= TClientDataSet.Create(Self);
    CDS.FieldDefs.Add('Addr', ftString, 8, True);
    CDS.FieldDefs.Add('Name', ftString, 8, True);
    CDS.FieldDefs.Add('Salary', ftString, 8, True);
    CDS.CreateDataSet;
    CDS.Open;
    while not EOF( f ) do
    begin
        Readln( f, Str );
        sL.DelimitedText:= Str;
        if( ( sL[0]='SZ' )or( sL[0]='SH' )or( sL[0]='HK' ) ) then
        begin
            mmo1.Lines.Add( sL[0]+'+'+sL[1]+'+'+sL[2] );
        end;
        CDS.Append;
        CDS.FieldByName('Addr').AsString := sL[0];
        CDS.FieldByName('Name').AsString := sL[1];
        CDS.FieldByName('Salary').AsString := sL[2];
        CDS.Post;
    end;
    DS_1.DataSet:= CDS;
    DBG_1.DataSource:= DS_1;
    sL.Free;
    CloseFile( f );
end;

end.


Delphi5 怎么读取txt


谢谢 已经给分 代码 看了 没什么问题 我是Java转的  很多地方不是很熟悉 已经自己弄出来了 和你这个有点不一样  待会看看 先给分了

#1


或者说是 DBGrid可以直接绑定TXT文档数据 有什么方法可以达到这个功能 

#2


能把 SZ 张三 5717全部到了Office,那就可以直接把这个String拿来分解成 SZ 张三 5717 三个字符串,分别赋给三个字符串变量

至于要用DBGrid显示,就直接把这些字符串分别写到相应DBGrid的Cell里就是了

#3


引用 2 楼 hongss 的回复:
能把 SZ 张三 5717全部到了Office,那就可以直接把这个String拿来分解成 SZ 张三 5717 三个字符串,分别赋给三个字符串变量

至于要用DBGrid显示,就直接把这些字符串分别写到相应DBGrid的Cell里就是了
Delphi5 怎么读取txt经过尝试 Delphi5好像没有 Indexof这个 function不然我也不会发帖咯 赋值的话我确实不会

#4


要 IndexOf 干啥?

我没有D5,拿D7给你个DEMO吧,共同学习~~~~ Delphi5 怎么读取txt
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, DBClient, StdCtrls;

type
  TForm1 = class(TForm)
    DBG_1: TDBGrid;
    DS_1: TDataSource;
    ds1: TClientDataSet;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
    Str: String;
    f: TextFile;
    sL: TStringList;
    CDS: TClientDataSet;
begin
    AssignFile( f, 'TEST.txt' );
    Reset( f );
    sL:= TStringList.Create;
    sL.Delimiter:= ' ';
    CDS:= TClientDataSet.Create(Self);
    CDS.FieldDefs.Add('Addr', ftString, 8, True);
    CDS.FieldDefs.Add('Name', ftString, 8, True);
    CDS.FieldDefs.Add('Salary', ftString, 8, True);
    CDS.CreateDataSet;
    CDS.Open;
    while not EOF( f ) do
    begin
        Readln( f, Str );
        sL.DelimitedText:= Str;
        if( ( sL[0]='SZ' )or( sL[0]='SH' )or( sL[0]='HK' ) ) then
        begin
            mmo1.Lines.Add( sL[0]+'+'+sL[1]+'+'+sL[2] );
        end;
        CDS.Append;
        CDS.FieldByName('Addr').AsString := sL[0];
        CDS.FieldByName('Name').AsString := sL[1];
        CDS.FieldByName('Salary').AsString := sL[2];
        CDS.Post;
    end;
    DS_1.DataSet:= CDS;
    DBG_1.DataSource:= DS_1;
    sL.Free;
    CloseFile( f );
end;

end.


Delphi5 怎么读取txt

#5


...........
StringListRow,StringListCol:TStringList;
begin
  StringListRow:=TStringList.Create;
  StringListCol:=TStringList.Create;
  StringListRow.LoadFormFiel('你的TXT文件路径全称');
  for i:=Low(StringListRow) to High(StringListRow) do
  begin
     StringListCol:=StringListRow[i];
     .....
     
      StringListCol[0..2]就是你要的
    显示的话建议直接用StringGrid就可以了
    .......

#6


分给4楼吧,这代码没啥挑剔的。

#7


引用 4 楼 hongss 的回复:
要 IndexOf 干啥?

我没有D5,拿D7给你个DEMO吧,共同学习~~~~ Delphi5 怎么读取txt
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, DBClient, StdCtrls;

type
  TForm1 = class(TForm)
    DBG_1: TDBGrid;
    DS_1: TDataSource;
    ds1: TClientDataSet;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
    Str: String;
    f: TextFile;
    sL: TStringList;
    CDS: TClientDataSet;
begin
    AssignFile( f, 'TEST.txt' );
    Reset( f );
    sL:= TStringList.Create;
    sL.Delimiter:= ' ';
    CDS:= TClientDataSet.Create(Self);
    CDS.FieldDefs.Add('Addr', ftString, 8, True);
    CDS.FieldDefs.Add('Name', ftString, 8, True);
    CDS.FieldDefs.Add('Salary', ftString, 8, True);
    CDS.CreateDataSet;
    CDS.Open;
    while not EOF( f ) do
    begin
        Readln( f, Str );
        sL.DelimitedText:= Str;
        if( ( sL[0]='SZ' )or( sL[0]='SH' )or( sL[0]='HK' ) ) then
        begin
            mmo1.Lines.Add( sL[0]+'+'+sL[1]+'+'+sL[2] );
        end;
        CDS.Append;
        CDS.FieldByName('Addr').AsString := sL[0];
        CDS.FieldByName('Name').AsString := sL[1];
        CDS.FieldByName('Salary').AsString := sL[2];
        CDS.Post;
    end;
    DS_1.DataSet:= CDS;
    DBG_1.DataSource:= DS_1;
    sL.Free;
    CloseFile( f );
end;

end.


Delphi5 怎么读取txt


谢谢 已经给分 代码 看了 没什么问题 我是Java转的  很多地方不是很熟悉 已经自己弄出来了 和你这个有点不一样  待会看看 先给分了