文本文件的操作(100分)

  • 主题发起人 主题发起人 zhugenan
  • 开始时间 开始时间
Z

zhugenan

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个文本文件F.TXT格式如下:
王三 65.2
小红 45.1
......
我用READLN(F,A,B)来操作,A:STRING;B:REAL;
结果是A=‘王三 65.2’,把B改成STRING也不行。我用
帮助明明这样写到:
procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);
为何用起来却不行呢?请问如何才能达到A=‘王三’B=65.2的结果?
 
苯方法
先读入一行, 然后把他分成两个子串 A, B, 然后
val:real
val = StrToFloat(B);
 
这个问题很好办.
1.用Writeln(f, Var1, var2)生成一个文本文件(用循环实现一组数据)
2.将王三 65.2
小红 45.1
的数据原封不动地照搬到那个数据文件上.

注意: 那个数据文件中数据间的空格不要任意改动.经过这样一处理保险没问题
 
注:我这个文本是要单独手工输入的(顶多生成个姓名),目的是姓名后面的数字,
得到数字后用UPDATE语句更换表数字。所以不需用writeln
 
xiao.lit说得对,手动实现要方便得多
直接用TStringlist.loadfromfile
然后再分析Stringlist
又直观又快速。
 
现在我用string做,字符串可以读出来,可是用
strtofloat(trim())转换得到的那个'65.1'的串却
总是不行,得到奇怪的值,用变量var i:real直接读却总是读到不对的值,
请问为何?
 
procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
s,a:String;
b:read;
begin
assignFile(f,'aa.TXT');
Reset(F);
readln(F,s);

while true do
begin
readln(F,s);
if s='' then Exit;
a:=copy(s,1,6);
b:=StrToFloat(copy(s,7,4));
end;
closefile(f);
end;
 
分成两步读取或许会好点...
 
多人接受答案了。
 
后退
顶部