本人一直理解system为一个是可有可无的标识符,用它的时候只是令函数避免使用,
如:a:=system.sin(pi),令sin只能为pi;
但今天看到一定要system的例子,不明为什么一定要用system限定符?
var
 atextfile:system.text;          //这里为什么一定要用system
 textline:string;
begin
 if opendialog.execute then
  begin
   listbox1.clear;
   caption:='文件浏览器'+opendialog1.filename;
   assignfile(atextfile,opendialog.filename);
   reset(atextfile);
   while not eof(atextfile) do
    begin
     readln(atextfile,textline);
     listbox1.items.add(textline);
   end;
 closefile(atextfile);
end;
end;

解决方案 »

  1.   

    这与在C++中使用::SetWindowLog是一个原理!!!
    因为同一个名称的类型或变量可能在不同的地方进行了不同的定义,所以为了防止错误的引用不许指明引用的出处!!!这有点像NameSpace!!!
      

  2.   

    C中叫名字空间,pascal叫单元,java中叫包...反正都差不多是同一种东西.概括的讲吧,不同单元中可能有同名的函数啦,变量啦什么的,就靠这个区别.我自己写一个单元叫Jorge,里面也有个函数叫Sin,用的时候就要写啦: System.Sin , Jorge.Sin...只写Sin就混淆了.这个机制是为了管理日益庞大的函数库,类型库什么的.你想吧,成千上万的第三方库资源...需要一种类似目录结构的方式来管理,才可以解决标识符名字冲突,混淆的问题.
    不写System.时,前面一定有:uses System,否则编译器怎知道你用的函数在哪个库里呀!