2016-01-01 47 views
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; 

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

+1

不应使用传统Pascal I/O。以JSON形式存储。 –

+0

这里显示的代码在windows上不起作用,除非你使用'ShortString'而不是'String'。在移动平台上不支持在他的回答'ShortStrings'中由LU RD表示的总线。 – SilverWarior

回答

5

当你试图写含String类型记录的文件,它不是由编译器允许:

E2155 Type '%s' needs finalization - not allowed in file type (Delphi)

字符串是需要最终确定这些数据类型之一,并作为这样,它们不能被储存在一个文件类型

这是毫无意义的使用二进制文件类型反正写记录与String场,因为你会写个e地址而不是文本(字符串是引用类型)。


当你宣布一个专门的长字符串,它们被称为ShortString(价值型)。但移动编译器不支持ShortString

我建议你使用其他技术来存储文本。例如,请参阅如何将记录转换为文本,例如json

相关问题