我想终止一个Delphi应用程序而不执行任何其他代码行,我想知道哪个是正确的方法来执行此操作.此外,我想知道我现在正在做的事情是否有问题.基本上,我的代码看起来像这样:
//Freeing all objects (Obj1.Free, etc..)
Application.Terminate;
Halt;
Run Code Online (Sandbox Code Playgroud)
这是停止Delphi应用程序的正确方法还是以其他方式完成?
我需要执行另一个应用程序,我想知道我是否应该使用WinExec而不是ShellExecute反之亦然.
两种方法有哪些区别?是否应该首选?
如何将字符串数组转换为字符串(使用分隔符char)?我的意思是,是否有一些系统功能我可以使用而不是编写自己的功能?
我想编写一个接受类名并产生相应结果的函数TClass.我注意到,System.Classes.GetClass如果没有注册classname ,函数不起作用.
例:
if(GetClass('TButton') = nil)
then ShowMessage('TButton not found!')
else ShowMessage('TButton found!');
Run Code Online (Sandbox Code Playgroud)
以前的代码总是显示:
没找到TButton!
有什么遗失的吗?
我必须在旧的Delphi 2007上将一个字节数组编码为base64字符串(并解码此字符串).我该怎么办?
更多信息:
我已经尝试过synapse(正如这里建议Binary到Base64(Delphi)).
我正在禁用并启用表单的关闭按钮,如下面的代码所示:
uses WinApi.Windows;
...
//disabling
EnableMenuItem(GetSystemMenu(MyForm.Handle, False), SC_CLOSE, MF_BYCOMMAND OR MF_DISABLED);
//enabling
EnableMenuItem(GetSystemMenu(MyForm.Handle, False), SC_CLOSE, MF_BYCOMMAND OR MF_ENABLED);
Run Code Online (Sandbox Code Playgroud)
我正在尝试检查关闭按钮当前是启用还是禁用.检查这个MSDN页面后,我写了这段代码:
var
ItemInfo : TMenuItemInfo;
MyForm : TForm;
begin
MyForm := GetAFormInSomeWay();
ItemInfo.fMask := MIIM_STATE;
GetMenuItemInfo(GetSystemMenu(MyForm.Handle, False), SC_CLOSE, False, ItemInfo);
if(ItemInfo.fState = MFS_ENABLED)
then ShowMessage('Enabled')
else ShowMessage('Disabled');
Run Code Online (Sandbox Code Playgroud)
它始终显示"已禁用"(ItemInfo.fState始终为5395358).我究竟做错了什么?
更新:
现在它可以了,感谢您的建议.
uses
WinApi.Windows, Vcl.Forms, System, System.SysUtils;
...
var
ItemInfo : TMenuItemInfo;
MyForm : TForm;
SystemMenu : HMENU;
begin
MyForm := GetAFormInSomeWay();
ItemInfo.fMask := MIIM_STATE;
ItemInfo.cbSize := SizeOf(MENUITEMINFO);
SystemMenu := GetSystemMenu(MyForm.Handle, False); …Run Code Online (Sandbox Code Playgroud) 我将对象和整数值分配给整数变量:
MyIntegerValue := Integer(MyObject);
MyIntegerValue := 2;
MyIntegerValue := 500;
...
Run Code Online (Sandbox Code Playgroud)
如何检查是否已为MyIntegerValue分配了有效对象?