Delphi 如何分配给TextFile变量?

Delphi 如何分配给TextFile变量?,delphi,Delphi,以下代码尝试将一个TextFile变量分配给另一个,但不编译: [Error]运算符不适用于此操作数类型 program Project1; {$APPTYPE CONSOLE} uses SysUtils; var t1, t2: TextFile; begin t1 := t2; // <-- [Error] Operator not applicable to this operand type end. 程序项目1; {$APPTYPE控制台} 使用SysUtils; 变量t

以下代码尝试将一个TextFile变量分配给另一个,但不编译:

[Error]运算符不适用于此操作数类型

program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var t1, t2: TextFile;
begin
  t1 := t2; // <-- [Error] Operator not applicable to this operand type
end.
程序项目1;
{$APPTYPE控制台}
使用SysUtils;
变量t1,t2:文本文件;
开始

t1:=t2;// 对
TextFile
变量的赋值似乎不受支持,但您可以声明并使用指针类型:

type
  PTextFile = ^TextFile;

var
  F: PTextFile;
begin
  F := @Output;
  Writeln(F^, 'Hello');

  F := @ErrOutput;
  Writeln(F^, 'Hello');

  AssignFile(F^, 'test.txt');
  Rewrite(F^);
  Writeln(F^, 'Hello');
  CloseFile(F^);
end;

非常感谢你!你能帮我解释一下是否可以不用指针吗?(如果可能的话,代码将与Delphi for.Net兼容,这是一个加号)。我不知道.NET是否支持
TextFile
,但我对此表示怀疑-在古老的
TextFile
和相关函数中似乎有一些编译器魔法。如果你不喜欢指针,请使用其他形式的间接寻址。枚举上的case语句就可以了。指针似乎就是这样。不要使用不支持的遗留I/OUnicode@DavidHeffernan当然,可以在不使用旧I/O的情况下将
写入
系统.Output
系统.ErrOutput
。在没有遗留I/O的情况下,完全有可能输出到标准句柄。您认为遗留I/O LIB是如何做到这一点的?只是解释一下为什么不允许这样做。TextFile值包含状态信息。具体来说,它有一个缓冲区。见tTextRec。写入文本文件时,首先写入缓冲区。如果您向T1写入了一些内容,然后又向T2写入了其他内容,会发生什么情况?现在您有了两个具有不同文本的独立缓冲区。使用指针是解决您所阻止的问题的方法。或者,正如已经说过的,根本不要使用文本文件。