在我的 Firemonkey 多平台应用程序中,我动态地创建了一些控件。使用它们后,我将它们销毁。
在 Windows 中,这个动态创建和销毁的进程没有问题。但是,似乎在 Android 中,下面的代码不会破坏控件,因为会弹出一个错误,说控件已经存在(当我尝试重新创建控件时,我确实看到旧控件仍然存在)。
我如何确保在 Android(和/或 iOS - 我认为它与 iOS 类似)中正确销毁控件?
for i := oParentRect.ControlsCount-1 downto 0 do
begin
oControl := oParentRect.Controls[i];
if (oControl is TText)
or (oControl is TEdit)
then
begin
FreeAndNil( oControl );
// I have also tried oControl.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我有德尔福10.4。
由于Mac硬件限制,我只能安装MacOS High Sierra。我需要安装什么 XCode 版本才能允许 Delphi 编译 iOS 应用程序?XCode 是一个多 GB 的下载,所以我希望我能得到一些关于版本的提示,而不必为不同的 XCode/SDK 版本而烦恼。
感谢您的任何提示。
我正在尝试查看如何创建指向简单记录的指针。
我在发布之前搜索过类似的主题,但它很混乱。
我创建了 A & B 其中是实际的记录。然后我有一个变量 C,我想它只是一个“指向这条记录的指针”。我不希望 C 存储它自己的值,而只是一个指向 A 或 B 的指针。
但是每当 C 被读取/写入时,它实际上是被写入 A 或 B,无论 C 指向哪个。
换句话说,它就像一个指向对象的指针,但在我的情况下我不需要对象。
使用 Delphi 10.3 和 10.4(如果有任何区别),请突出显示。
下面的代码在第一个 ShowMessage 上导致访问冲突。
procedure TForm1.Button2Click(Sender: TObject);
type
TMyRecord = record
Field1 : integer;
end;
var
A : TMyRecord;
B : TMyRecord;
C : ^TMyRecord; // how to declare this as a pointer?
begin
A.Field1 := 1;
B.Field1 := 2;
C^ := A; // psuedo code to point to A
A.Field1 := 3; …Run Code Online (Sandbox Code Playgroud)