控件在关闭时没有父窗口

问题描述

我最近更改了启动我的exe的参数,这导致了多个 关闭程序时将产生“控件没有父窗口”错误

我原本以为这是一个释放错误,但是经过进一步的研究,我将其范围缩小到该函数,该函数对传递给exe的参数进行解码。

如果运行以下功能,则程序关闭会抛出一个

  • Einvalidpointer
  • 然后继续引发“控件没有父窗口”错误

如果下面的代码没有运行,则程序将按预期运行,并且可以正常终止而没有任何错误

引发无父错误的组件是选项卡式笔记本。

完全错误

控件'nb1'没有父窗口。路径:〜form1〜nb1。

function TForm1.Unhide(Param: Integer): string;
 var
  I  : integer;
          HideMe : String;
        SeedInt : Integer;
        UnHideMeS : String;
        UnHideMe : Array of Char;
        Swaps : Array of integer;
        TempHolder : string;
        CleanString : string;
begin

RandSeed := StrToInt(ParamStr(1));


UnHideMeS :=  ParamStr(Param);

UnHideMeS := LowerCase(UnHideMeS);

SetLength(UnHideMe,UnHideMeS.Length);

 for I := 1 to UnHideMeS.Length  do
 begin
  UnHideMe[I-1] := UnHideMeS[i];
 end;



SetLength(Swaps,UnHideMeS.Length);


 for I := 0 to UnHideMeS.Length do
   begin
   Swaps[i] := Random(UnHideMeS.Length);

   end;


 for I := UnHideMeS.Length -1   downto 0 do
   begin
    TempHolder := UnHideMe[Swaps[i]];
    UnHideMe[Swaps[i]] := UnHideMe[i];
    UnhideMe[i] := TempHolder[1];
   end;


 for I := 0 to UnHideMeS.length - 1 do
     begin
     CleanString := CleanString + UnHideMe[i];
     end;

     Result := CleanString;

    CleanString := '';
    TempHolder := '';
    for I := 0 to length(UnHideMe) do
       begin
         UnHideMe[i] := 'a';
       end;
     SetLength(UnHideMe,0);
     UnHideMe := nil;

    for I := 0 to Length(Swaps) do
      begin
        Swaps[i] := 0;
      end;
    SetLength(Swaps,0);
    Swaps := nil;


end;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)