3

我是 delphi 的初学者,我遇到了最终错误 e2155。我正在使用 RAD 10 并尝试在移动设备上运行我的程序。它在我的 Windows 机器上运行良好,但是当我更改为 Android 或 IOS 时,它给了我最终确定错误。

编码:

    type
    TRaumparameter = record
      ID : string;
      Länge: string;
      Breite: string;
      Höhe: string;
      Fläche: string;
      Raumvolumen: string;
      Wände: string;
      Decke: string;
      Boden: string;
      Baujahr: string;
      Heizlast: string;
  end;
  var Aufstellraum: Traumparameter;
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation
{$R *.fmx}
{$R *.iPad.fmx IOS}

procedure TForm1.speichernClick(Sender: TObject);
  var F: File of Traumparameter;
  begin
    Aufstellraum.Länge:=form2.Länge.Text;
    Aufstellraum.Breite:=form2.Breite.Text;
    Aufstellraum.Höhe:=form2.Höhe.Text;
    Aufstellraum.Fläche:=form2.Fläche.Text;
    Aufstellraum.Raumvolumen:=form2.ErgebnisRaumVol.Text;
    Aufstellraum.Wände:=form2.Wände.Text;
    Aufstellraum.Decke:=form2.Decke.Text;
    Aufstellraum.Baujahr:=form2.Baujahr.Selected.Text;
    Aufstellraum.Heizlast:=form2.Heizlast.Text;

    try
      AssignFile(F,'D:\test\1.txt');
      ReWrite(F);
      Write(F,Aufstellraum);
    finally
      CloseFile(F);
    end;
  end;

我已经尝试用 [] 限制字符串的长度,但它告诉我:';' 预期但找到了“[”。希望我能得到一些答案,因为我花了一段时间没有任何成功。提前致谢!!

4

2 回答 2

6

当您尝试编写包含String类型的记录文件时,编译器不允许这样做:

E2155 类型 '%s' 需要最终确定 - 文件类型中不允许 (Delphi)

String 是需要终结的数据类型之一,因此它们不能存储在 File 类型中

无论如何,使用二进制文件类型写入带有String字段的记录是没有意义的,因为您将写入地址而不是文本(字符串是引用类型)。


当您声明具有专用长度的字符串时,它们称为ShortString(值类型)。ShortString但是移动编译器不支持。

我建议您使用其他技术来存储文本。例如,查看如何将记录转换为文本json

于 2016-01-02T00:02:11.900 回答
0

去做就对了:

TRaumparameter = record
    ID : string[255];
    Länge: string[255];
    Breite: string[255];
    Höhe: string[255];
    Fläche: string[255];
    Raumvolumen: string[255];
    Wände: string[255];
    Decke: string[255];
    Boden: string[255];
    Baujahr: string[255];
    Heizlast: string[255];
 end;
于 2020-10-31T04:40:10.570 回答