文本文件里的数据是 hello  00procedure TForm1.Button1Click(Sender: TObject);
var txt :textfile;
    s:string;
    i:integer;
begin
if opendialog1.Execute then
begin
  assignfile(txt,opendialog1.filename);
  reset(txt);
  readln(txt,s,i);
  edit1.Text :=s;
  edit2.Text :=inttostr(i);
  closefile(txt)
end;
end;
end.为什么执行代码之后,只有edit1显示hello  00,而edit2显示是空呢?

解决方案 »

  1.   

    各位帮帮小妹啊,我初学delphi!!分数可以再加!
      

  2.   

    readln的用法错误
    readln是逐行读取的,你的hello 00是在一行上,所以作为1字符串存入s中
    文本第二行为空,edit2为空
      

  3.   

    请看帮助
    Reads a line of text from a file.
    a line是什么意思呢?
    写成
    Hello
    00
    再试试吧此外你用的这种打开文件的方式太古老了,不知道你想作什么,如果就是一些配置信息的话,还是用IniFile吧。
      

  4.   

    readln(txt,s,i)第三个参数是一个常量。你最好看看帮助
      

  5.   

    看这样写行不行?
       readln(txt,s);
       edit2.text:=copy(s,length(s)-2,length);
       当然也可以象 ”asj(最烦活稀泥)“ 那样用INIFILE 用readstring();
        我也是新手,方法有限大家一起学习吧!
      

  6.   

    谢谢大家帮忙了!
    我的 信息存储肯定要是 这样的 
    hello  00
    yes    01
    no     02
    yes    09009
    hello  098
    不能分行放。而且我的数据是存在文本文件里的,(由数据采集软件得到),最好不要改格式。
    我想要把hello,yes,no放到一个数组中,00,01,02放到一个数组中,再去做相应的处理,能不能有一个函数来直接完成这个操作呢?
      

  7.   

    var
      aStrs: TStrings;
      i: Integer;
    begin
      aStrs := TStringList.Create;
      try
        aStr.LoadFromFile(FileName);
        for i := 0 to aStr.Count - 1 do
        begin
          p := Pos(' ', aStr[i]);
          array1[i] := Copy(aStr[i], 1, p);
          array2[i] := Trim(Copy(aStr[i], p, Length(aStr[i]) - p + 1));
        end;
      finally
        aStrs.Free;
      end;
    end;