现有一堆*.txt的文件,里面存放的是数据。
基本格式如:
2001年股票信息
     日期   最高     最低    收盘
20010206   14.800     12.900    14.700
20010207   14.450     13.850    14.060
20010208   14.310     13.900    14.140
.......
现在要把它们的:日期,最高,最低,收盘读出来,日期放在一个combobox,其它的放在edit框内。
‘2001年股票信息’放在memo中。(这个已经做到了,因为我只能读取第一行)
我用AssignFile(F,opendialog1.filename);
Readln(F, data); 来读,但是字串中间的空格(分别为3个,5个,4个)怎样来区分?还有怎么样才能把整个文件的每行数据都读出来?

解决方案 »

  1.   

    你用TSTRINGLIST的LOADFROMFILE将此TXT文件读入,
    然后判断取数,用POS、COPY
      

  2.   

    楼上的正解,不过你也可以这样
    我觉得你的txt的格式是永远固定的,不会变,所以你可以找到当中的共性
    20010206   14.800     12.900    14.700其中14.800中的1在行中的位置应该是"20010206"的长度+3(空格数)+ 1就ok了
    这样就能得到位置了,其他你想要的位置也可以通过以上方法得到
    然后用copy和pos函数就可以了
      

  3.   

    假如你的文本都是固定长度的话就好办,如日期+空格是11字节,
    var
     f:TextFile;
     SDate:String[13];
     SHige:String[11];
     SLower:STring[11];
    begin
     assignfile(F,'');
     reset(f);
     while not eof(F) do
     begin
      readln(F,SDate,SHige,SLoer)
     end;end;
    文件会自动读取每多少字节到相应的变量里去,你对变量操作就可以了
      

  4.   

    用copy和pos函数就可以了岂不是对不起DELPHI的文件操作函数了,呵呵
      

  5.   

    Var
      FList: TStringList;
      tmpStr,j,k: String;i:integer;
    Begin
      FList:= TStringList.Create;
      FList.LoadFromFile(TextFileName);
    for i:=0 to flist.count-1 do
    begin
    j:=copy(flist[I],1,3)...如格式固定,你可以试一下位置
    end
      

  6.   

    Var
      FList: TStringList;
      tmpStr,j,k: String;i:integer;
    Begin
      FList:= TStringList.Create;
      FList.LoadFromFile(TextFileName);
    for i:=0 to flist.count-1 do
    begin
    j:=copy(flist[I],1,3)...如格式固定,你可以试一下位置
    end
      

  7.   

    Var
      FList: TStringList;
      tmpStr,j,k: String;i:integer;
    Begin
      FList:= TStringList.Create;
      FList.LoadFromFile(TextFileName);
    for i:=0 to flist.count-1 do
    begin
    j:=copy(flist[I],1,3)...如格式固定,你可以试一下位置
    end
      

  8.   

    Var
      FList: TStringList;
      tmpStr,j,k: String;i:integer;
    Begin
      FList:= TStringList.Create;
      FList.LoadFromFile(TextFileName);
    for i:=0 to flist.count-1 do
    begin
    j:=copy(flist[I],1,3)...如格式固定,你可以试一下位置
    end
      

  9.   

    楼上的更猛access 不是自带了把固定格式的文本文件导入数据库的工具啊岂不是快多了