Pascal:写一个没有引用计数类型的很长的字符串(例如:ansistring)

Pascal : write a very long string without reference-counted types (ex:ansistring)

我现在正在用 Pascal 制作一个单元库。我想知道我是否可以在不使用 Ansistring 或 {$H+} 的情况下分配一个很长的字符串,因为我无法分配具有引用计数类型的类型化文件。先谢谢了。
编辑:添加代码

type
dataFilm = record
    title : array [1..255] of char;
    genre : array [1..255] of char;
    viewerRating : array [1..255] of char;
    duration : integer;
    synopsis : array [1..2000] of char;
    priceWeekdays : longint;
    priceWeekend : longint;
end;  
theatreUDT = record
    mainDataFilm : array [0..100] of dataFilm;
    end;  
ftheatreUDT = record
    fmainDataFilm : file of dataFilm; //It fails here when i use   ansistring
end;  
procedure loadMain(var main : theatreUDT; var fmain:ftheatreUDT);
begin
    assign(fmain.fmainDataFilm,'Data/dataFilm.dat');
    reset(fmain.fmainDataFilm);
end;

这个程序完全没有问题,只是,它不能容纳很长的字符串作为概要。

您可以使用 array of char 来获得更长的字符串。

dataFilm = record
    title : string;
    genre : string;
    viewerRating : string;
    duration : integer;
    synopsis : array[0..1999] of char; 
    priceWeekdays : longint;
    priceWeekend : longint;
end;

但是请注意,这不是一个很好的解决方案,因为

a) 这意味着您必须为字符串选择一个最大长度。如果您选择的长度太小,有些文字将放不下。如果你选择的长度太大,你会浪费很多磁盘 space 因为 space 根据记录的定义,文件中的记录总是相同的。

b) 您不能轻易修改数据的结构。例如,如果要在有关电影的信息中添加一个 "director" 字段,则必须编写代码将旧文件格式转换为新文件格式。一旦使用此代码创建文件,基本上就无法更改 dataFilm 类型的定义。

c) 您无法通过任何其他方式轻松查看这些文件。如果您使用 JSON 或 XML 之类的标准甚至数据库,您可以使用其他工具轻松查看内容。

d) 您无法使用其他编程环境轻松访问这些文件。将来您可能希望从 Pascal 迁移到其他环境或允许其他工具访问这些文件。使用一些标准格式或数据库比使用 pascal 方式更容易。