用delphi产生一个最小的可执行程序

用delphi产生一个最小的可执行程序

ID:37188342

大小:25.51 KB

页数:3页

时间:2019-05-21

用delphi产生一个最小的可执行程序_第1页
用delphi产生一个最小的可执行程序_第2页
用delphi产生一个最小的可执行程序_第3页
资源描述:

《用delphi产生一个最小的可执行程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用Delphi产生一个最小的可执行程序    曾经在网上看到有人说Delphi能够产生大小只有16k的Win32应用程序,而我自己曾经编写过的这种可执行文件大小则是在17k左右,因而我一度猜想Delphi恐怕也只能将代码优化到这种程度了。最近由于测试的目的重新把这个程序写了一遍,才发现利用一些技巧,还能够将文件的大小进一步缩减到8.5k。这个程序也能够显示Delphi作为类似于Visual C++的、非RAD工具的另一个侧面。如果你对此感兴趣的话,请看我是如何做到这一点的。    用Delphi生成一个默认的项目,然后用工具栏上的Remove file from

2、 Project按钮,将唯一的窗体(Form1)从项目中删除。然后选择View->Project Source命令,打开项目文件,并编辑代码如下所示:program MiniApp;uses  Windows, Messages;// {$R *.res}const  szAppName : PChar = 'MiniApp';function WndProc(AWnd:HWND; message:UINT; wp:WPARAM; lp:LPARAM):LRESULT;stdcall;begin  Result := 0;  case message of   

3、 WM_DESTROY:       PostQuitMessage(0);    else       Result := DefWindowProc(AWnd, message, wp, lp);  end;end; var  wc : WNDCLASS;  HMainWnd : HWND;  AMsg : MSG;begin  with wc do begin    style := CS_VREDRAW or CS_HREDRAW;    lpfnWndProc := @WndProc;    cbClsExtra := 0;    cbWndExtra

4、 := 0;    hIcon := LoadIcon(0, IDI_APPLICATION);    hCursor := LoadCursor(0, IDC_ARROW);    hbrBackground := GetSysColorBrush(COLOR_WINDOW);    hInstance := HInstance;    lpszMenuName := nil;    lpszClassName := szAppName;  end;  RegisterClass(wc);   HMainWnd := CreateWindow(szAppNam

5、e,                           szAppName,                           WS_OVERLAPPEDWINDOW,                           Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),                           Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),                           HWND_DESKTOP, 0,       

6、                    HInstance, nil);  ShowWindow(HMainWnd, CmdShow);  UpdateWindow(HMainWnd);   while GetMessage(AMsg, 0, 0, 0) do begin    TranslateMessage(AMsg);    DispatchMessage(AMsg);  end;end.    其实这些代码根本就是Win32 SDK中C语言例子程序的翻版,我想没有必要再对它们作什么解释了。需要提醒你注意的是:1.Delphi程序没有像C程序那样的WinM

7、ain入口,程序的运行就从.DPR文件的begin开始,到与之匹配的end结束。而C程序中传递给WinMain的四个参数,在Delphi中则以全局变量的形式定义在System以及SysInit单元中,它们分别是HInstance、HPrevInst、CmdLine和CmdShow(HPrevInst已经没有意义)。2.注意我把常量szAppName定义为PChar,而不是常用的String,因为在这么一个简单的程序中没有必要使用String的高级功能,这样可以节省不少空间(大约3-4k)。3.我把{$R *.res}一句也注释起来了,这样可以从文件中剔除冗余的资

8、源,从而节省大约1k左右

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。