【问题标题】:In Delphi how I can set a TPanel variable type to null?在 Delphi 中,如何将 TPanel 变量类型设置为 null?
【发布时间】:2014-06-06 21:45:19
【问题描述】:

Helo,我有以下内容:selectedPanel 应该获取点击的面板对象,如果点击了表单,selectedPanel 应该是“null”、nada、empty 等 :)

var
     selectedBlock: Tpanel; <== fixed typo

...

procedure TForm1.stubPanelMouseDown(Sender: TObject...
begin

    ...

    Panel:= Sender as TPanel;

    if (*selectedBlock is not null*) then
    begin
            // ie, store the current panel
            selectedBlock:= Panel;
    end
    else
    begin
            // empty the selection
            *selectedBlock:= null*;
    end;

所以问题是:我如何将该变量设置为“null”?执行 selectedBlock:= Unassigned 会引发错误。

谢谢

编辑:这仍然会引发错误:访问冲突

if (selectedBlock=nil) then <= fixed and works
  begin
    selectedBlock:= Panel;
  end
  else
  begin
     selectedBlock:= nil;
 end;

【问题讨论】:

  • 错误是“未定义的标识符'selectedBlock'”吗?那是因为您已将其声明为“selectedPanel”。
  • 否,使用Unassigned时报错:“不兼容的类型:'TPanel'和'Variant'
  • 那里有一些奇怪的 sn-ps。如果 selectedBlock = nil 然后 selectedBlock := nil
  • 天哪!我现在开始工作了!...咖啡太多了,我没看到那个。谢谢 Sertac!

标签: delphi tpanel


【解决方案1】:

使用 nil 常量将指针设置为“null”:

selectedBlock := nil;

Null 是一个特殊值,仅适用于 VariantOleVariant

【讨论】:

  • 当我按照添加到原始帖子中的编码执行操作时,它仍然会引发访问冲突错误...
  • 您似乎有两个变量:selectedBlockselectedPanel,当您指的是另一个时,您不小心使用了一个。
  • 嘘!抱歉,我在这里打错了代码……在项目中没问题,但仍然没有问题:(
  • 如果您没有显示您拥有的真实代码,则无法查看错误是由于拼写错误还是由于其他原因造成的。将selectedBlock 设置为nil 是正确的。如果您安装了 AV,那么您可能在将其设置为 nil 后访问了 selectedBlock。访问前先检查是否为Assigned(selectedBlock)
  • FWIW,我建议您在尝试使用该语言做任何重要的事情之前,先阅读 Delphi 语言指南(或 Object Pascal 语言指南,具体取决于您的 Delphi 版本)。该指南是提供的帮助文件的一部分(参见目录)。
猜你喜欢
  • 2014-10-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2022-06-14
  • 2016-11-21
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多