求用Delphi生成EXE的代码,谢谢!(19分)

G

gdcqs

Unregistered / Unconfirmed
GUEST, unregistred user!
请发gdcqs14@21cn.com
 
什么意思
 
就是用Delphi写一个程序,程序输出的文为EXE呀.
比如,我选择几个图片文件,然后打包,输出为EXE,EXE执行就是文件浏览呀,
大家帮忙帮忙!
 
靠. 他要干嘛??
 
搞什么,是调查我用的是正版还是盗版嘛?不用麻烦了。我用的是盗版。
 
大家没有明白他的意思!他是要把一个Txt-->Exe,BMP-->Exe等等。
有一个SWF-->Exe的要不要?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=824779
 
g好,看看去!
 
搞个编译器
 
想搞个编译器吗?
 
easy的很,
以做txt to exe为例
1、建立project1
2、写一个读取自身资源(自定义,比如pchar格式的)比如名字为content的部分
3、将读取后的内容写到tmemo里面。
4、建立project2
5、读取文本文件到一个pchar
6、将project1.exe复制到目标文件
7、将目标文件中的content部分修改为文本文件内容
就完成了。
很多时候,写程序不要往复杂了想,toexe的程序是不
需要会编译器原理的,根本就是事先写好显示程序,然
后把数据写入到程序中,然后复制出去就可以了。呵呵
 
我告诉你可以采用的思路:
从程序中生成exe文件
(加入日期:2002-1-17 点击数:53)
这篇文章要讨论的是在一个VB程序中如何产生出另一个Exe文件。要实现这个目的,必须符合以下几个条件:
    第一、编写这样的程序时,具备欲生成的Exe文件
    第二、事先知道欲生成的Exe文件大小
  其实这两个条件可以说不是条件,但确实很重要。为了叙说方便,将发行的程序称作APP-1.Exe,要生成的文件叫APP-2.Exe,以下是具体步骤:
    第一步,准备好APP-2.Exe,这里我使用VB写了一个什么都不做程序,编译成APP-2.Exe。
    第二步,右键单击单击APP-2.Exe,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少k。
    这样就具备了前边说的两个条件。
    第三步,新建工程APP1,新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。
    第四步,为APP-1.Exe编写代码,使其读取资源文件的数据,生成APP-1.Exe。
  代码如下:
  Private Const FILESIZEOFAPP2 = 20480 '我生成的APP-2.Exe大小是20480Byte
  Private Sub cmdOK_Click() '单击按钮cmdOK运行代码
    Dim APP2() As Byte 'APP2是个Btye类型和数组
    Dim Counter As Long
    APP2 = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组
    '注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
    If Dir(App.Path &
"APP-2.Exe") <> "" then
'第一次按cmdOK有效
      MsgBox App.Path &
"APP-2.Exe 已经存在!"
      Exit Sub
    End If
    Open App.Path &
"APP-2.exe" For Binary As #1 '以二进制方式写(生成)APP-2.Exe到APP-1.Exe所在的目录
      For Counter = 0 To FILESIZEOFAPP2 - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终
        Put #1, , APP2(Counter)
      Next Counter
    Close #1
    Shell App.Path &
"APP-2.Exe", vbNormalFocus 注释:运行刚生成的APP-2.Exe
    Unload Me
  End Sub

 
在另外一个贴子里,给你发了!
 
接受答案了.
 
顶部