今天无意搜索了到一篇文章,内如如下:
(文章已被多人转载,但没有人去考究对错质量,就如五柳先生一样,只求其量不求甚解!!)
-------------------------------------------------------------
unit Unit1;interfaceuses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;var
 Form1: TForm1;
 mylist:TStringlist;
 i,a:integer;{i用来统计mylist的count,判断是不是到了mylist的最后一行;a用来重复递加,以便读取下一行}
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
a:=0;{赋a值为0,以便按button1时读mylist的第一行}
if fileexists('E:\aa.txt') then
 begin
  mylist:=TStringlist.Create;
  mylist.LoadFromFile('E:\aa.txt');{读文件到mylist}
 end;
i:=mylist.Count;{获得mylist的count} 当运行代码出错停留在这里,请问高手什么原因??
button1.Caption:='开始';
edit1.text:='按[开始]键读第一行';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 if a<>i then{判断a是否为i,既不是mylist的未尾}
  begin
   button1.Caption:='下一行';
   edit1.Clear;{清除edit1的上一行内容}
   edit1.Text:=mylist.Strings[a];{添加一行}
   a:=a+1;{a值加1,既为下一行}
  end
 else{如果到mylist未尾,赋a值为0,从第一行重开始}
  begin
   a:=0;
   edit1.Clear;
   showmessage('此行为文件未行,点击从第一行开始');
   edit1.Text:='请点击[重新开始]';
   edit1.SetFocus;
   button1.Caption:='重新开始';
  end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mylist.Free;{释放mylist}
end;end. --------------------------《完》-----------------------------------

解决方案 »

  1.   

    下断点调试看是否执行到了mylist:=TStringlist.Create;
      

  2.   

    你把mylist.create放在那个if外面
      

  3.   

    代码没啥问题
    可能原因是if fileexists('E:\aa.txt') then判断不成功,即mylist未创建
    设断点运行看看
      

  4.   

    问题被发现,是因为[ mylist.LoadFromFile('E:\aa.txt');{读文件到mylist} ]这句问题,如果把载入文件"aa.txt"放到程序同一目录里运行是正常的,没有任何问题出现,但如果这文件跟程序不是同一目录就会产生错误。    为什么不能读取其他路径?是非要同一目录摆放文件不可吗??
        “aa.txt”文件如果比如在 D: 或者 E: 等其他盘符可以吗????
      

  5.   

    只要aa.txt的绝对路径下有文件就可以了