線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2750
推到 Plurk!
推到 Facebook!

為什麼取個程式版本號這麼累?

答題得分者是:max5020
TyroneYeh
一般會員


發表:5
回覆:12
積分:3
註冊:2006-09-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-24 18:09:06 IP:118.169.xxx.xxx 訂閱
http://www.esanu.name/delphi/Win API/Version Info in Delphi.html

找到一篇可以取檔案版本的程式碼? 在想說為什麼不能 Application.ProductVerion 就好,
一定要讀自己程式的資訊再呈現呢!!
這樣怎麼感覺好累!!
還是有別的方法可以讀到本身程式定義在 Options 中的版本號呢?

謝謝

------
線上發票登錄自動對獎管理 http://siryeh.com
--
Best Respects,
TyroneYeh
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-24 18:47:23 IP:59.120.xxx.xxx 訂閱
不累, 不累, 給你一個Function就不累啦!!

[code delphi]
// Get Version Number
function GetVersion: string;
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
Result := IntToStr(dwFileVersionMS shr 16);
Result := Result '.' IntToStr(dwFileVersionMS and $FFFF);
Result := Result '.' IntToStr(dwFileVersionLS shr 16);
Result := Result '.' IntToStr(dwFileVersionLS and $FFFF);
end;
FreeMem(VerInfo, VerInfoSize);
end;
[/code]
TyroneYeh
一般會員


發表:5
回覆:12
積分:3
註冊:2006-09-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-25 00:07:29 IP:118.169.xxx.xxx 訂閱
錯在這行耶 ~~ 這 Function 可以用在 Delphi 2009 嗎?

[code delphi]
VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
[/code]

First chance exception at $77C842EB. Exception class EAccessViolation with message 'Access violation at address 756F178F in module 'version.dll'. Read of address 00000004'
------
線上發票登錄自動對獎管理 http://siryeh.com
--
Best Respects,
TyroneYeh
編輯記錄
TyroneYeh 重新編輯於 2009-06-25 00:08:05, 註解 無‧
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-25 08:57:48 IP:59.120.xxx.xxx 訂閱
我是用Delphi-2007, 
要 Uses Windows;
TyroneYeh
一般會員


發表:5
回覆:12
積分:3
註冊:2006-09-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-06-25 09:46:42 IP:118.169.xxx.xxx 訂閱
有 uses Windows
但怪的是我找了一下資料用
http://www.techtricks.com/delphi/getversion.php
用這個就可以正常取得

看起來好像差不多!!
不過 Delphi 2009 中有一個 Cardinal GetVersion() 的 function 但不知怎麼用耶!! 未自定 GetVersion 時就內建的!!

謝謝
--
但這樣也是有點累!哩!!
------
線上發票登錄自動對獎管理 http://siryeh.com
--
Best Respects,
TyroneYeh
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-06-25 09:52:14 IP:59.120.xxx.xxx 訂閱
我沒有Delphi-2009, 幫不上忙囉!!
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-06-26 14:39:38 IP:61.218.xxx.xxx 訂閱
Delphi 7.0
compile成功,執行時有如下之錯誤訊息
Access violation at address 777E1725 in module \version.dll'. Read of adress 00000004
和delphi 2009有點類似,
但Delphi 7.0 project新增時就已uses Windows了
有用Delphi 7.0測試成功的嗎??
thanks

改用TyroneYeh兄提供的網頁裡的程式就可以了說
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
編輯記錄
jackiemi2_seed 重新編輯於 2009-06-26 14:47:14, 註解 無‧
系統時間:2024-05-14 21:06:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!