2016-01-01 5 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; 

Я уже пытался ограничить длину строки с [], но тогда он говорит мне: «;» ожидаемый, но '[' found. Надеюсь, я получу ответы, потому что я провел некоторое время без каких-либо успехов. Заранее спасибо!!

+1

Нельзя использовать входы/выходы Legacy Pascal. Храните как JSON. –

+0

Ваш код, показанный здесь, не будет работать даже в окнах, если вы не используете 'ShortString' вместо' String'. Автобус, как сказал LU RD в своем ответе «ShortStrings», не поддерживается на мобильных платформах. – SilverWarior

ответ

5

Когда вы пытаетесь записать файл записи, содержащий String типов, не допускается компилятором:

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

Строка один из тех типов данных, которые нуждаются в доработке, а также например, они не могут быть сохранены в файл типа

это не имеет смысла писать записи с String поле, используя двоичный файл типа в любом случае, так как вы будете писать ю e вместо текста (строка является ссылочным типом).


Когда вы объявляете строки с выделенной длиной, они называются ShortString (тип значения). ShortString не поддерживается мобильными компиляторами.

Предлагаю вам использовать другие методы для хранения текста. См., Например, как преобразовать запись в текст с помощью json.

Смежные вопросы