相关疑难解决方法(0)

Delphi:Char和TCharArray数组"不兼容的类型"

我在下面的评论中遇到过几次"不兼容类型"错误,并且从未对Delphi 2007中没有直接支持的原因感到满意:

program Project1; {$APPTYPE CONSOLE}

type TCharArray = array of Char;

procedure DoArray(Chars: array of Char);
begin
end;

function ReturnTCharArray: TCharArray;
var CharArray: TCharArray;
begin
  Result := CharArray;
end;

begin
  DoArray(ReturnTCharArray); // [DCC Error] Project1.dpr(18): E2010 Incompatible types: 'Array' and 'TCharArray'
end.
Run Code Online (Sandbox Code Playgroud)

是不是可以将数组类型"别名"为另一个彼此兼容的数组类型?假设我无法更改DoArray的声明(它是第三方库的一部分),我如何编写一个返回与DoArray的param兼容的char数组的函数?直截了当的"函数ReturnAChar:Char数组;" 导致"标识符预期但发现'ARRAY'"错误.我甚至尝试将返回数组的函数更改为带有var"array of char"pram的过程,但是这也不允许在过程中设置"Char数组"参数的长度("Constant对象不能传递作为var参数").

arrays delphi types char

3
推荐指数
1
解决办法
4313
查看次数

Delphi XE上的ERangeError

我正在将软件从Delphi 5迁移到Delphi XE.我已经纠正了很多差异,现在我可以编译我的代码了.

发生的问题是有时(在代码的某些地方),我收到错误"范围检查错误".

例如,在此代码中:

function CopyChar(Ori : string; var Des : Array of char) : Boolean;
var Msg     : string;
    Counter : integer;
    SizeDes : integer;
begin
    SizeDes:= SizeOf(Des);
    for Counter:= 1 to SizeDes do begin
        Des[Counter-1]:= ' ';
    end;
    Ori:= Trim(Ori);
    Msg:= '';
    SizeDes:= Min(Length(Ori),SizeDes);
    for Counter:= 1 to SizeDes do begin
        Des[Counter-1]:= char(Ori[Counter]);
    end;
    CopyChar:= True;
end;
Run Code Online (Sandbox Code Playgroud)

经过Des [Counter-1]行时,我在运行时得到错误:=''; 错误发生在第一次通过循环时,但在很多次之后.

我试图禁用Rance Checking($ R),但它没有解决我的问题.我也尝试将"Counter"的类型更改为Cardinal和LongWord,但没有成功

我会很高兴任何有用的想法!

谢谢.

delphi types delphi-xe

1
推荐指数
1
解决办法
1299
查看次数

标签 统计

delphi ×2

types ×2

arrays ×1

char ×1

delphi-xe ×1