在Delphi 7或Delphi XE下编译时,下面的代码会抱怨
[DCC Error] Project1.dpr(25): E2010 Incompatible types: 'array of Char' and 'TAChar'
Run Code Online (Sandbox Code Playgroud)
根据Rudy的文章,应该允许将类型数组传递给open数组?
此外,为什么它不抱怨'布尔'数组和'TABoolean'?
非常感谢您的帮助!
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TAChar = array of Char;
TABoolean = array of Boolean;
procedure Test1(const CharArr: array of Char);
begin
end;
procedure Test2(const BoolArr: array of Boolean);
begin
end;
var
Arr1: TAChar;
Arr2: TABoolean;
begin
try
Test1(Arr1); // <------- Does not compile in Delphi 7 & XE
Test2(Arr2);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end; …Run Code Online (Sandbox Code Playgroud) 我正在使用Component Tag(NativeInt)值的赋值将其添加到字节集中.该程序在为WIN32编译时工作正常,但不为WINx64编译.(错误2001所需的序数类型)这是一个MCVE:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Classes;
var
S:set of byte;
C:TComponent;
begin
C:=TComponent.Create(nil);
C.Tag:=1;
s:=[C.Tag];
C.Free;
end.
Run Code Online (Sandbox Code Playgroud)
如何调整代码使其适合WINx64编译?
我写FMX柱和小区类别TGrid将包含TCalendarEdit并TTimeEdit在每个细胞中的情况.一切正常,除了正确处理这些子控件中所做的更改.
type
TFMTValue<T> = record
FieldValue: T;
Modified: boolean;
Appended: boolean;
Deleted: boolean;
end;
TDateTimeCell = class(TStyledControl)
private
FDate_Time: TFMTValue<TDateTime>;
procedure SetDateTime(const Value: TFMTValue<TDateTime>);
function GetDateTime: TFMTValue<TDateTime>;
protected
procedure SetData(const Value: TValue); override;
public
property Date_Time: TFMTValue<TDateTime> read GetDateTime write SetDateTime;
...
end;
...
function TDateTimeCell.GetDateTime: TFMTValue<TDateTime>;
begin
FDate_Time.Modified := (FDate_Time.Modified) or
(FDate_Time.FieldValue <> FCalendarEdit.Date +
+ FTimeEdit.Time);
FDate_Time.FieldValue := FCalendarEdit.Date + FTimeEdit.Time;
Result := FDate_Time;
end;
procedure TDateTimeCell.SetData(const Value: TValue);
begin
Date_Time := …Run Code Online (Sandbox Code Playgroud) 我有一个基本数据框,显示每组的 RMSE。
data <- data.frame(
RMSE = c(9.77, 9.6, 9.42, 7.98, 7.78, 7.63, 7.66, 7.65, 7.61, 6.63, 6.58, 6.43),
Model = c("LR - LHS", "LR - LHS", "LR - LHS", "XGB - Reg", "XGB - Reg", "XGB - Reg",
"RF - LHS", "RF - LHS", "RF - LHS", "XGB - LHS", "XGB - LHS", "XGB - LHS")
)
Run Code Online (Sandbox Code Playgroud)
我想创建 RMSE 线图,但在 x 轴上需要模型 1、2 和 3 以及其下方的组。像这样的东西:
我得到的是 4 x 值,3 个点,一个在下一个,而不是彼此相邻(有 12 个值)。我尝试的另一个图给出了很好的结果,但它是 4 条不同的断开线。
我对如何在动态创建中存储唯一标识符有一些学术兴趣TThread.
我创建这样的东西:
procedure TForm1.Button1Click(Sender: TObject);
var thrn:word;
begin
for thrn := 0 to 5 do//<--- this is a loop variable that should give the unique numbers
TThread.CreateAnonymousThread(
procedure()
var
i: longint;
r: double;
thrns:string;
begin
thrns:=inttostr(thrn);//in this thread? variable I try to store the ID as string
repeat
for i := 0 to 100000000 do
begin
r := random(high(i));//this loop gives some dummy job
r := sqr(r); //to the thread to slow it down
end;
TThread.Synchronize(nil,
procedure()
begin …Run Code Online (Sandbox Code Playgroud) 我正在尝试组织保存和加载大小不一的数据.因此,保存文件需要存储多个(未知且每次不同数量)的动态数组.
这个MCVE中出现错误:
procedure TAnnMainF.Button6Click(Sender: TObject);
var
f: file;
ari, aro: array of double;
i, Count: word;
begin
SetLength(aro, random(5) + 1);
for i := 0 to High(aro) do
aro[i] := random(2001) / 2000 - 1;
AssignFile(f, 'c:\delme\1.txt');
ReWrite(f);
Count := Length(aro);
BlockWrite(f, Count, SizeOf(word));
BlockWrite(f, aro[0], SizeOf(double) * Count);
CloseFile(f);
Reset(f);
BlockRead(f, Count, SizeOf(word));
BlockRead(f, ari[0], SizeOf(double) * Count);
CloseFile(f);
end;
Run Code Online (Sandbox Code Playgroud)
此代码导致I/O错误998.我试图声明类型 TDoubleArray = array of Double;并ari在BlockRead中作为参数传递.SetLength(ari, Count)在我调用BlockRead之前我也尝试过没有任何成功.