如何编写没有gui的应用程序,但我仍然想使用这些组件?
我的任务是通过一个SQL数据库,然后执行操作并写入事件日志。
溴 Valnurat
答案 0 :(得分:1)
您应该使用TDataModule
。您可以在设计时将非可视组件放在其上,根据需要分配其属性和事件处理程序等。
您可以创建一个VCL Forms项目,删除默认的MainForm
,然后在代码中实例化DM或将DM设置为自动创建,这两种方法都可以。
答案 1 :(得分:1)
@ Remy的回答可能是最简单的,但作为替代方案,您也可以将控制台应用程序中的APPTYPE
指令从CONSOLE
更改为GUI
,然后创建代码中运行时的组件。
(请注意,尽管如此,该指令中的GUI
并不意味着"显示图形用户界面&#34 ;;它意味着"不输出到控制台"。)
这是一个将测试文件复制到另一个扩展名为.bak
的文件中的示例,根本没有用户界面。如果你从IDE运行它,它只会暂停一下然后返回;检查目标文件夹将显示两个文件都存在,这意味着它有效。当然,请确保首先将文件名更改为系统中实际存在的文件名。 : - )
注意:为清楚起见,故意遗漏所有异常处理。当然,实际代码中应该有try..except
个块;这里不需要try..finally
资源保护因为应用程序立即退出。 它是一个演示应用,而不是生产级代码。
program Project1;
{$APPTYPE GUI}
uses
System.SysUtils, Classes;
var
InStream, OutStream: TFileStream;
const
InFile = 'E:\TempFiles\TestFile.txt';
var
OutFile: string;
begin
OutFile := ChangeFileExt(InFile, '.bak');
InStream := TFileStream.Create(InFile, fmOpenRead);
OutStream := TFileStream.Create(OutFile, fmCreate);
OutStream.CopyFrom(InStream, InStream.Size);
OutStream.Free;
InStream.Free;
end.