我现在用delphi6.0写程序,随便做一个表单几个按钮,代码也不多,但是生成的程序却有1M多。怎么样才能使自己的程序变小呢?(我也曾经看见别人的程序还小,但功能还多)

解决方案 »

  1.   

    编好后的EXE用Aspack压缩一下。
      

  2.   

    嘿嘿,把你的EXE文件用ASPACK这个软件压缩一下即可,很容易找到的软件
      

  3.   

    还有没有其它好方法,比如从delphi本身考虑。
    还有ASPACK是共享软件,用不长久。
      

  4.   

    采用动态连接库的编译,只是发布时要加上DELPHI的动态连接库,但你的程序本身小很多。
      

  5.   

    VCBoyGirl(明子) ,你能跟我讲详细一点吗?具体怎么操作?我的水平有限,请多指教。
      

  6.   

    我不知道什么是采用动态连接库的编译,也不知道什么叫发布还要加上DELPHI的动态连接库,我很菜,请高手们教教我吧。
      

  7.   

    可以这样的,把一些没有用到的PAS单元文件去掉EXE文件就可以压缩一些了
    就是uses 那些单元文件,不过有些是必须的,有些可能没有用到的哦
      

  8.   

    给你一个最小的应用程序例子,希望对你有所帮助
    ***************
    program project;uses
      windows,Messages;{$R *.RES}const
      appname='abc';var
      aMessage:tmsg;
      hwindow,button1,button2:hwnd;function WindowProc(window:hwnd;amessage,wparam,lparam:longint):longint;stdcall;export;
    begin
      windowproc:=0;
      case amessage of
        WM_DESTROY:
        begin
          destroywindow(button1);
          destroywindow(button2);
          PostQuitMessage(0);
          exit;
        end;
        wm_command:
        if lparam=button1 then
        begin
            MessageBox(hwindow,'fksd','kfdsl',MB_OK+MB_ICONINFORMATION);
        end;
      end;
      windowproc:=defwindowproc(window,aMessage,wParam,lParam);
    end;function WinRegister:boolean;
    var
      WindowClass:TWndClass;
    begin
      WindowClass.style:=cs_hredraw or cs_vredraw ;
      windowclass.lpfnWndProc:=@windowProc;
      windowClass.cbClsExtra:=0;
      windowClass.cbWndExtra:=0;
      windowclass.hInstance:=hinstance;
      windowclass.hIcon:=LoadIcon(0,IDI_APPLICATION);
      windowclass.hCursor:=LoadCursor(0,IDC_ARROW);
      windowclass.hbrBackground:=COLOR_BTNSHADOW;
      windowclass.lpszMenuName:=nil;
      windowclass.lpszClassName:=appname;
      result:=Registerclass(windowClass)<>0;
    end;function WinCreate:hwnd;
    var
      hWindow:hwnd;
      pchartemp:pchar;
      param:tagCREATESTRUCT;
    begin
      hwindow:=CreateWindowEx(WS_EX_RTLREADING or WS_EX_APPWINDOW,appname,'文件分解与合并演示程序',WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0,hinstance,nil);
      if hwindow<>0 then
      begin
        param.cx:=20;
        param.cy:=20;
        param.dwExStyle:=WS_CHILD+BS_PUSHBUTTON;
        param.hInstance:=hinstance;
        param.hMenu:=0;
        param.hwndParent:=hwindow;
        param.lpszClass:='button';
        param.x:=20;
        param.y:=20;
        pchartemp:='Kingron TEMP';
        button1:=createwindow('button','合并文件',param.dwExStyle,param.y,param.y,60,30,hwindow,0,hinstance,@param);
        param.x:=40;
        param.y:=60;
        button2:=createwindow('button','分解文件',param.dwExStyle,param.y,param.y,60,30,hwindow,0,hinstance,@param);
        showwindow(hwindow,cmdshow);
        showwindow(button2,cmdshow);
        showwindow(button1,cmdshow);
        updatewindow(hwindow);
      end;
      result:=hwindow;
    end;begin
      if not winregister then
      begin
        MessageBox(0,'窗口注册失败','错误',MB_OK+MB_ICONINFORMATION);
        exit;
      end;
      hwindow:=wincreate;
      while GetMessage(aMessage,0,0,0) do
      begin
        TranslateMessage(amessage);
        DispatchMessage(aMessage);
      end;
    halt(amessage.wParam);  
    end.
      

  9.   

    对用ASPACK软件压缩一下。。
    如果你没有找到这样的软件和我联系!
      

  10.   

    project->option:
    packages项
    选中builds with runtime packages
      

  11.   

    upxmend 压缩也可以,而且是免费的
      

  12.   

    多谢各位,使我受益匪浅。不过我觉得自己写界面和按钮太费力了,还是用一些现成的吧。
    有几点不明白:
    1、是不是使用动态连接库编译的程序,不能在没有装delphi的机子上运行?
    2、什么叫发布?
    3、用动态连接库编译的程序,发布时怎么加上DELPHI的动态连接库?
      

  13.   

    我自己试过了,使用动态连接库编译的程序,不能在没有装delphi的机子上运行。
    后面两个问题没人回答就算了。我还是给分吧。