我可以在 Pascal 中定义自己的字符串类型吗?

Can i define my own string type in pascal?

我读过我不能在 Pascal 中真正动态地分配一个数组,但我也在考虑实现一个字符串结构。
在 C 中,我将通过创建一个 struct 来解决它,其中包含一个指向字符数组(包含字符)、一个长度整数和一个大小的指针。然后,当需要调整大小时,我会 malloc char *realloc 它。

typedef struct {
    size_t size;
    size_t length;
    char* contents;
} String;

这可以在 (ISO) pascal 中完成吗?如果是这样,一个人会怎么做呢?我不想使用内置的 pascal 动态数组,因为它有点违背了制作我自己的字符串类型的目的。

从评论来看,ISO pascal(标准版和扩展版)似乎不支持此类内容。那我怎么用 free pascal 做呢?

在 Free Pascal 中,它可以类似于提到的 C 方法实现:

type
TMyString = record
  size: SizeUInt;
  length: SizeUInt;
  contents: PAnsiChar;
end;

...

procedure AllocMyString(var S: TMyString; L: SizeUInt);
begin
  S.size := 0;
  S.length := L;
  GetMem(Pointer(S.contents), L);
end;

procedure ReallocMyString(var S: TMyString; L: SizeUInt);
begin
  S.size := 0;
  S.length := L;
  ReAllocMem(Pointer(S.contents), L);
end;