⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 Delphi7编程80例(完全版)
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Bevel1: TBevel;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.Title := '选择SWF文件';
  OpenDialog1.Filter := 'SWF文件|*.swf';
  if OpenDialog1.Execute then
    Edit1.Text :=  OpenDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  PlayerFile, swfFile: TMemoryStream;
  ExeFile: TFileStream;
  AppPath: String;
  ExeFileName: String;
  nInt, nFileSize: Integer;
  FVersion: Array [0..2] of byte;
begin
  // 获取该转换程序所在路径
  AppPath := ExtractFilePath(ParamStr(0));
  if AppPath[Length(AppPath)] <> '\' then AppPath := AppPath + '\';
  
  // 首先,将Flash Player文件读入内存
  PlayerFile := TMemoryStream.Create; // 创建PlayerFile对象
  PlayerFile.LoadFromFile(AppPath + 'Player.exe'); // 读入内存

  // 然后新建一个空的EXE文件,保存在同SWF文件想同的路径中
  ExeFileName := ChangeFileExt(Edit1.Text, '.exe'); // 将扩展名改为EXE即获得EXE文件路径

  ExeFile := TFileStream.Create(ExeFileName + '.exe', fmCreate or fmOpenWrite);
  // 此时将要转换的SWF文件读入内存
  swfFile := TMemoryStream.Create; // 创建swfFile对象
  swfFile.LoadFromFile(Edit1.Text); // 读入内存

  // 准备工作已经完成,现在将Player文件内容先写入EXE文件中
  ExeFile.CopyFrom(PlayerFile, 0);
  // 然后再将SWF文件内容追加到EXE文件中去
  ExeFile.CopyFrom(swfFile, 0);
  // 大部分工作已经完成,现在剩下将文件大小及相关标志写入到文件尾中
  // 设置版本号
  FVersion[0] := $56;
  FVersion[1] := $34;
  FVersion[2] := $12;

  ExeFile.Write(FVersion, sizeof(FVersion)); //将版本号写入EXE文件中

  nInt:=$FA; // 设置标志
  ExeFile.Write(nInt, 1); // 将标志写入EXE文件中
  nFileSize := swfFile.Size; // SWF文件大小
  ExeFile.Write(nFileSize, 4); // 将SWF文件大小写入EXE文件中

  // 释放资源,完成转换工作
  ExeFile.Free;
  swfFile.Free;
  PlayerFile.Free;

  ShowMessage('文件已经转换完毕!');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -