MGH*_*MGH 3 arrays delphi delphi-2007
我想创建一个以shorttring数组作为参数的过程
procedure f(const a, b: Array of shortstring);
Run Code Online (Sandbox Code Playgroud)
我想用已知长度和已知长度的短串的数组来称呼它,例如
var
A, B: array[1..2] of string[5];
C, D: array[1..40] of string[12];
begin
f(A,B);
f(C,D);
end;
Run Code Online (Sandbox Code Playgroud)
这导致编译器错误E2008不兼容的类型.这是为什么?我可以编写一个可以获取shorttring数组的过程(任何长度的数组/字符串)吗?
为什么要使用短裤?
缺点是现有记录中的字段.这些记录有很多短线串.为了将数据从turbo power B-Tree Filer迁移到SQL数据库,一步是将记录转换为数据集,然后返回记录,以确认所有字段都在两个方向上正确转换.我一直在使用CompareMem记录来检查这一点,但它没有提供关于转换错误所在的字段的足够信息.因此创建了一个小程序,从记录定义中可以生成代码来比较两个记录.对于这个代码生成器,我需要一个函数来比较shorttrings.它最终CompareMem用于短线.
ShortString长度为0到255个字符.ShortString的长度可以动态改变,但是内存是静态分配的256个字节,第一个字节存储字符串的长度,剩下的255个字节可用于字符,以这种方式声明的whilist字符串[5]仅分配为类型要求的内存很多(长度为5字节+ 1字节).你可以使用类型
type
MyString = string[5];
...
procedure f(const a, b: Array of MyString);
...
var
A, B: array[1..2] of MyString;
begin
f(A,B);
end;
Run Code Online (Sandbox Code Playgroud)