PDA

View Full Version : طریقه استفاده از Module Version Number



Mahdi_S_T
جمعه 09 آذر 1386, 19:25 عصر
دوستان چطوری میتوان از Module Version Number دلفی استفاده کرد منظورم از طریق کد نویسی است در VB یه همچنین کدی داره :App.Minor , ...

vcldeveloper
شنبه 10 آذر 1386, 02:14 صبح
function GetFileVersion(const FileName: TFileName): string;
var
lpdwHandle,
puLen,
VersionInfoSize : Cardinal;
lpData,
lplpBuffer : pointer;
begin
Result := '';
if not FileExists(FileName) then
raise Exception.Create('File not found');
//Get version information size
VersionInfoSize := GetFileVersionInfoSize(PAnsiChar(FileName),lpdwHan dle);
if VersionInfoSize <= 0 then
raise Exception.Create('Could not retreive file version info');
//Get memory for the version information
GetMem(lpData,VersionInfoSize);
try
//Retrieve version information
if GetFileVersionInfo(PAnsiChar(FileName),0,VersionIn foSize,lpData) = False then
RaiseLastOSError;
//Extract file version from the buffer
if VerQueryValue(lpData,'\\StringFileInfo\\040904E4\\ FileVersion',lplpBuffer,puLen) = False then
RaiseLastOSError;
finally
FreeMem(lpData);
end;
//If any file version info is retrieved then return it as the function result.
if puLen > 0 then
Result := Trim(PAnsiChar(lplpBuffer));
end;

Mahdi_S_T
شنبه 10 آذر 1386, 19:00 عصر
استاد کشاورز ممنون از جوابتون ولی من برای خود فایل اجرایی پروژه که تست کردم خطا داد و یه فایل دیگه هم که بهش دادم بازم خطا داد به نظر شما اشکال از کجاست

vesal
شنبه 10 آذر 1386, 20:36 عصر
function TForm1.GetVersion(sFileName:string): string;
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(sFileName), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(sFileName), 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;

Mahdi_S_T
یک شنبه 11 آذر 1386, 19:19 عصر
آقای وصال برنامه شما برای یک فایل دیگه که بهش بدیم جواب داد ولی اگه ما بخواهیم ورژن فایل اجرایی خود پروژه مان رو بدست بیاریم خطا میده . راه حل چیه ؟

vesal
یک شنبه 11 آذر 1386, 22:43 عصر
آقای وصال برنامه شما برای یک فایل دیگه که بهش بدیم جواب داد ولی اگه ما بخواهیم ورژن فایل اجرایی خود پروژه مان رو بدست بیاریم خطا میده . راه حل چیه ؟

راستش من اینجوری استفاده کردم جواب داد!!! حالا شما چه جور استفاده کردی که جواب نداد؟



GetVersion(Application.ExeName)


امکانش هست نمونه کدی که استفاده کردی اینجا بزاری یا واسم Mail کنی؟

Mahdi_S_T
دوشنبه 12 آذر 1386, 13:12 عصر
منم از همین کد استفاده میکنم ولی خطای زیر را میده :


Access violation at address 77C0155D in module 'version.dll'

vesal
دوشنبه 12 آذر 1386, 14:01 عصر
منم از همین کد استفاده میکنم ولی خطای زیر را میده :

پسر جان گل کاشتی که!!! تو منو Project-> project Option -> version Info لطف کن تیک Include Version Information In Project رو بزن تا مشخصاتVersion توی فایل EXE ایجاد بشه، بعد بتونی با این کد مقدار رو بخونی

Mahdi_S_T
سه شنبه 13 آذر 1386, 10:56 صبح
آره وصال جان ، تیکشو نزدم . دیگه سن که بالا میره حواس نمیمونه. به هر صورت ممنونم