亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

動態賀卡EXE生成器---Delphi中流的應用(9)

2019-11-18 18:48:25
字體:
來源:轉載
供稿:網友

三、實際應用之二:利用流制作可執行電子賀卡

    我們經常看到一些電子賀卡之類的制作軟件,可以讓你自己選擇圖片,然后
它會生成一個EXE可執行文件給你。打開賀卡時就會一邊放音樂一邊顯示出圖片來。
現在學了流操作之后,我們也可以做一個了。  
   添加圖片過程我們可以直接用前面的Cjt_AddtoFile,而現在要做的是如何把
圖像讀出并顯示。我們用前面的Cjt_LoadFromFile先把圖片讀出來保存為文件再
調入也是可以的,但是還有更簡單的方法,就是直接把文件流讀出來顯示,有了
流這個利器,一切都變的簡單了。
    現在的圖片比較流行的是BMP格式和JPG格式。我們現在就針對這兩種圖片寫
出讀取并顯示函數。

Function Cjt_BmpLoad(ImgBmp:TImage;SourceFile:String):Boolean;
var
 Source:TFileStream;
 MyFileSize:integer;
begin
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareDenyNone);
try
try
Source.Seek(-sizeof(MyFileSize),soFromEnd);
Source.ReadBuffer(MyFileSize,sizeof(MyFileSize));//讀出資源
Source.Seek(-MyFileSize,soFromEnd);//定位到資源開始位置
ImgBmp.Picture.Bitmap.LoadFromStream(Source);
finally
Source.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;
  上面是讀出BMP圖片的,下面的是讀出JPG圖片的函數,因為要用到JPG單元,所
以要在程序中添加一句:uses jpeg。

Function Cjt_JpgLoad(JpgImg:Timage;SourceFile:String):Boolean;
var
 Source:TFileStream;
MyFileSize:integer;
 Myjpg: TJpegImage;
begin
try
Myjpg:= TJpegImage.Create;
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareDenyNone);
try
Source.Seek(-sizeof(MyFileSize),soFromEnd);
Source.ReadBuffer(MyFileSize,sizeof(MyFileSize));
Source.Seek(-MyFileSize,soFromEnd);
Myjpg.LoadFromStream(Source);
JpgImg.Picture.Bitmap.Assign(Myjpg);
finally
Source.Free;
Myjpg.free;
end;
except
Result:=false;
Exit;
end;
Result:=true;
end;
  有了這兩個函數,我們就可以制作讀出程序了。下面我們以BMP圖片為例:
  運行Delphi,新建一個工程,放上一個顯示圖像控件Image1。在窗口的Create
事件中寫上一句就可以了:
   Cjt_BmpLoad(Image1,application.ExeName);
  這個就是頭文件了,然后我們用前面的方法生成一個head.res資源文件。
下面就可以開始制作我們的添加程序了。全部代碼如下:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    PRocedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  Function ExtractRes(ResType, ResName, ResNewName : String):boolean;
  Function Cjt_AddtoFile(SourceFile,TargetFile:string):Boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
Function TForm1.ExtractRes(ResType, ResName, ResNewName : String):boolean;
var
Res : TResourceStream;
begin
try
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
Result:=true;
finally
Res.Free;
end;
except
Result:=false;
end;
end;
Function TForm1.Cjt_AddtoFile(SourceFile,TargetFile:string):Boolean;
var
Target,Source:TFileStream;
MyFileSize:integer;
begin
try
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareExclusive);
Target:=TFileStream.Create(TargetFile,fmOpenWrite or fmShareExclusive);
try
Target.Seek(0,soFromEnd);//往尾部添加資源
Target.CopyFrom(Source,0);
MyFileSize:=Source.Size+Sizeof(MyFileSize);//計算資源大小,并寫入輔程尾部
Target.WriteBuffer(MyFileSize,sizeof(MyFileSize));
finally
Target.Free;
Source.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:='Bmp2Exe演示程序.作者:陳經韜';
Edit1.Text:=';
OpenPictureDialog1.DefaultExt := GraphicExtension(TBitmap);
OpenPictureDialog1.Filter := GraphicFilter(TBitmap);

Button1.Caption:='選擇BMP圖片';
Button2.Caption:='生成EXE';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
   Edit1.Text:=OpenPictureDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 HeadTemp:String;
begin
if FileExists(Edit1.Text) then
   begin
    Application.MessageBox('BMP圖片文件不存在,請重新選擇!','信息',MB_ICONINFORMATION+MB_OK)
    Exit;
   end;
 HeadTemp:=ChangeFileExt(Edit1.Text,'.exe');
 if ExtractRes('exefile','head',HeadTemp) then
     if Cjt_AddtoFile(Edit1.Text,HeadTemp) then
         Application.MessageBox('EXE文件生成成功!','信息',MB_ICONINFORMATION+MB_OK)
 else
     begin
      if FileExists(HeadTemp) then DeleteFile(HeadTemp);
      Application.MessageBox('EXE文件生成失敗!','信息',MB_ICONINFORMATION+MB_OK)
     end;
end;
end.
   怎么樣?很神奇吧:)把程序界面弄的漂亮點,再添加一些功能,你會發現比
起那些要注冊的軟件來也不會遜多少吧。


上一篇:探究:如何判斷Delphi中的對象指針是否可用

下一篇:截獲Delphi中的異常

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成人这里只有精品| 亚洲国产成人在线视频| 97免费视频在线| 992tv在线成人免费观看| 国产综合在线视频| 国产精品白丝jk喷水视频一区| 国产精品免费观看在线| 97在线观看免费高清| 亚洲精品一区在线观看香蕉| 亚洲精品免费一区二区三区| 国产精品一区二区三区毛片淫片| 国产精品久久久久久超碰| 久久精品99无色码中文字幕| 日韩精品免费在线视频观看| 最近日韩中文字幕中文| 色噜噜亚洲精品中文字幕| 国产精品嫩草影院一区二区| 欧美高清视频免费观看| 精品一区二区三区电影| 久久久av电影| 久久伊人免费视频| 亚洲国产另类久久精品| 国产有码一区二区| 主播福利视频一区| 国产精品毛片a∨一区二区三区|国| 亚洲精品狠狠操| 亚洲精品99久久久久中文字幕| 久久久久女教师免费一区| 亚洲国产欧美久久| 国产免费久久av| 色视频www在线播放国产成人| 欧美在线观看一区二区三区| 亚洲无线码在线一区观看| 亚洲精品av在线| 蜜月aⅴ免费一区二区三区| 亚洲性69xxxbbb| 日韩av电影在线网| 久久久av网站| 国产有码在线一区二区视频| 欧美精品一区二区免费| 亚洲国产成人在线播放| 国产亚洲精品久久久优势| 日韩精品视频免费在线观看| 欧美性视频网站| 日本在线精品视频| 国产精品久久久久久久一区探花| 在线精品91av| 欧美一级高清免费播放| 日韩有码在线电影| 欧美成人免费大片| 欧美在线亚洲一区| 久久精品国产成人| 国产精品99久久久久久久久久久久| 亚洲综合色av| 日韩有码片在线观看| 青青草99啪国产免费| 日日噜噜噜夜夜爽亚洲精品| 久久国产精彩视频| 亚洲欧美综合精品久久成人| 日韩国产中文字幕| 亚洲国产精品国自产拍av秋霞| 国产成人亚洲综合91精品| 久久久综合免费视频| 亚洲午夜精品视频| 最新日韩中文字幕| 成人疯狂猛交xxx| 国内精品视频久久| 国产精品入口日韩视频大尺度| 亚洲第一精品久久忘忧草社区| 国产精品免费一区| 中文字幕亚洲国产| 最近2019年中文视频免费在线观看| 国产亚洲人成网站在线观看| 国产精品美女呻吟| 国产在线拍揄自揄视频不卡99| 国产一区私人高清影院| 中文字幕日韩av电影| 91免费观看网站| 91精品国产色综合久久不卡98口| 国产精品国产福利国产秒拍| 欧美超级乱淫片喷水| 欧美二区乱c黑人| 欧美成人黑人xx视频免费观看| 午夜精品视频网站| 亚洲新声在线观看| 精品久久久国产| xxav国产精品美女主播| 国产精品一区专区欧美日韩| 亚洲人成伊人成综合网久久久| 亚洲第一区第一页| 日韩中文字幕第一页| 亚洲人成自拍网站| 2025国产精品视频| 亚洲精品久久久久久久久久久久久| 久久久久久av| 精品国产福利视频| 色中色综合影院手机版在线观看| 视频在线观看一区二区| 亚洲一区美女视频在线观看免费| 91精品国产高清久久久久久久久| 国产精品国产亚洲伊人久久| 日韩欧美在线视频| 尤物精品国产第一福利三区| 亚洲欧美国产日韩中文字幕| 国产精品专区第二| 疯狂欧美牲乱大交777| 久久久久久久久久婷婷| www欧美日韩| 欧美亚洲国产视频小说| 欧美剧在线观看| 亚洲欧洲日本专区| 欧美高清视频在线| 久久色在线播放| 精品人伦一区二区三区蜜桃免费| 精品自在线视频| 国产丝袜一区视频在线观看| 国产日本欧美一区二区三区| 亚洲精品成人久久电影| 国产精品久久精品| 日韩中文娱乐网| 亚洲欧美色图片| 国产一区二区丝袜| 亚洲色图偷窥自拍| 久久青草精品视频免费观看| 日韩av中文字幕在线播放| 欧美国产日韩中文字幕在线| 综合国产在线视频| 日韩成人在线视频| 欧美日韩视频在线| 神马国产精品影院av| 91av在线不卡| 播播国产欧美激情| 精品国产乱码久久久久酒店| 亚洲欧美在线免费| 亚洲欧美另类人妖| 伊人伊成久久人综合网站| 九九久久综合网站| 日韩视频在线观看免费| 乱亲女秽乱长久久久| 91av免费观看91av精品在线| 久久精品91久久久久久再现| 久久精品91久久香蕉加勒比| 欧美日韩中文字幕| 欧美激情aaaa| www.久久色.com| 欧美日韩国产一区中文午夜| 久久精品在线播放| 91国产视频在线播放| 97**国产露脸精品国产| 国产精品女视频| 亚洲欧美日韩一区二区在线| 日韩欧美国产视频| 欧美高清视频在线| 亚洲bt欧美bt日本bt| 日韩中文在线中文网三级| 亚洲图中文字幕| 国产一区二区丝袜高跟鞋图片| xxxxx91麻豆| 亚洲天堂久久av| 国语自产精品视频在免费| 狠狠躁天天躁日日躁欧美| 国产精品成人品| 亚洲精品久久视频| 国产91av在线|