21-12-2022, Saat: 15:14
Merhabalar, Hazırladığım projenin versiyon bilgisini otomatik olarak forma yazdırmak istiyorum naıl bir yol izlemeliyim.....
Proje Versiyon Bilgisi
|
21-12-2022, Saat: 15:14
Merhabalar, Hazırladığım projenin versiyon bilgisini otomatik olarak forma yazdırmak istiyorum naıl bir yol izlemeliyim.....
21-12-2022, Saat: 16:24
unit AppVersion; {$IFDEF MACOS} {$DEFINE APPLE} {$ENDIF} {$IFDEF IOS} {$DEFINE APPLE} {$ENDIF} interface function GetApplicationVersion: string; implementation {$IFDEF ANDROID} uses FMX.Helpers.Android, FMX.Platform.Android, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,System.SysUtils; {$ENDIF} {$IFDEF APPLE} uses {$IFDEF IOS} iOSapi.Foundation, {$ELSE} Macapi.Foundation, {$ENDIF} Macapi.Helpers, Macapi.ObjectiveC,System.SysUtils; {$ENDIF} {$IFDEF MSWINDOWS} uses System.Types, System.SysUtils, Windows; {$ENDIF} function GetApplicationVersion: string; {$IFDEF ANDROID} var PackageManager: JPackageManager; PackageInfo: JPackageInfo; begin Result := '?'; try PackageManager := TAndroidHelper.Context.getPackageManager; //SharedActivityContext.getPackageManager; PackageInfo := PackageManager.getPackageInfo(TAndroidHelper.Context.getPackageName, 0); //SharedActivityContext.getPackageName, 0); Result := JStringToString(PackageInfo.versionName)+'.'+inttostr(PackageInfo.versionCode); except end; end; {$ENDIF} {$IFDEF IOS} var AppKey: Pointer; AppBundle: NSBundle; BuildStr : NSString; begin Result := '?'; try AppKey := (StrToNSStr('CFBundleVersion') as ILocalObject).GetObjectID; AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle); BuildStr := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppKey)); Result := UTF8ToString(BuildStr.UTF8String); except end; end; {$ENDIF} {$IFDEF MSWINDOWS} var sExe: string; Size, Handle: DWORD; Buffer: TBytes; FixedPtr: PVSFixedFileInfo; begin Result := '?'; try sExe := ParamStr(0); Size := GetFileVersionInfoSize(PChar(sExe), Handle); if (Size = 0) then exit; // RaiseLastOSError; SetLength(Buffer, Size); if not GetFileVersionInfo(PChar(sExe), Handle, Size, Buffer) then exit; // RaiseLastOSError; if not VerQueryValue(Buffer, '\', Pointer(FixedPtr), Size) then exit; // RaiseLastOSError; Result := Format('%d.%d.%d.%d', [LongRec(FixedPtr.dwFileVersionMS).Hi, //major LongRec(FixedPtr.dwFileVersionMS).Lo, //minor LongRec(FixedPtr.dwFileVersionLS).Hi, //release LongRec(FixedPtr.dwFileVersionLS).Lo]) //build except end; end; {$ENDIF} {$IFDEF OSX} var AppKey: Pointer; AppBundle: NSBundle; BuildStr : NSString; begin Result := '?'; try AppKey := (StrToNSStr('CFBundleVersion') as ILocalObject).GetObjectID; AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle); BuildStr := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppKey)); Result := UTF8ToString(BuildStr.UTF8String); except end; end; {$ENDIF} end. Kullanım label1.Caption:='Versiyon : '+ AppVersion.GetApplicationVersion;
21-12-2022, Saat: 21:54
Uses Winapi.Windows; function GetFileVersion1(exeName : string): string; const c_StringInfo = 'StringFileInfo\040904E4\FileVersion'; var n, Len : cardinal; Buf, Value : PChar; begin Result := ''; n := GetFileVersionInfoSize(PChar(exeName),n); if n > 0 then begin Buf := AllocMem(n); try GetFileVersionInfo(PChar(exeName),0,n,Buf); if VerQueryValue(Buf,PChar(c_StringInfo),Pointer(Value),Len) then begin Result := Trim(Value); end; finally FreeMem(Buf,n); end; end; end; Kullanım; Caption:=GetFileVersion1(ParamStr(0));
23-12-2022, Saat: 08:53
cevaplarınız için teşekkürler ancak her iki kodu kullandığımda değer boş geliyor, delphi 10.1 sürümünü kullanıyorum. herhangi bir ayar yapmak gerekiyormu tekrardan sistem üzerinden
Hayırlı sabahlar
Project / Options / Versiyon info dan versiyon bilgisini girdiğini varsayarak Ben bir procedure tanımladım. procedure prgversiyon(const AppName: string; var V1, V2, V3, V4: Word); var VerInfoSize, VerValueSize, Dummy: DWORD; VerInfo: Pointer; VerValue: PVSFixedFileInfo; begin VerInfoSize := GetFileVersionInfoSize(PChar(AppName), Dummy); GetMem(VerInfo, VerInfoSize); GetFileVersionInfo(PChar(AppName), 0, VerInfoSize, VerInfo); VerQueryValue(VerInfo, '', Pointer(VerValue), VerValueSize); with VerValue^ do begin V1 := dwFileVersionMS shr 16; V2 := dwFileVersionMS and $FFFF; V3 := dwFileVersionLS shr 16; V4 := dwFileVersionLS and $FFFF; end; FreeMem(VerInfo, VerInfoSize); end; Kullanımı procedure Tgiris_frm.FormCreate(Sender: TObject); var V1, V2, V3, V4: word; Begin prgversiyon (Application.ExeName, V1, V2, V3,V4); edt_Versiyon.Text:= Format('%d.%d.%d.%d', [V1, V2, V3,V4]); Test edilmiştir.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
23-12-2022, Saat: 13:28
(23-12-2022, Saat: 09:08)cinarbil Adlı Kullanıcıdan Alıntı: Hayırlı sabahlar Bu hatayı veriyor
23-12-2022, Saat: 13:51
(23-12-2022, Saat: 13:28)cvheneburi Adlı Kullanıcıdan Alıntı:(23-12-2022, Saat: 09:08)cinarbil Adlı Kullanıcıdan Alıntı: Hayırlı sabahlar verdiğim procedure ve komutlardan bu hatayı vermez. boş bir proje açın ve orada deneyin lütfen
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
25-12-2022, Saat: 00:09
(23-12-2022, Saat: 13:51)cinarbil Adlı Kullanıcıdan Alıntı:(23-12-2022, Saat: 13:28)cvheneburi Adlı Kullanıcıdan Alıntı: Bu hatayı veriyor evet haklısınız boş projede çalışıyor. peki benim mevcut projemde neden çalışmaz hata neden kaynaklanır.
25-12-2022, Saat: 11:35
(Son Düzenleme: 25-12-2022, Saat: 11:36, Düzenleyen: cinarbil.
Sebep: yazım hatası
)
(25-12-2022, Saat: 00:09)cvheneburi Adlı Kullanıcıdan Alıntı:(23-12-2022, Saat: 13:51)cinarbil Adlı Kullanıcıdan Alıntı: verdiğim procedure ve komutlardan bu hatayı vermez. boş bir proje açın ve orada deneyin lütfen iyi günler derleme seçenekleri çok iyi ama öğrenmek zaman alabilir. Debug modunda derleyerek programı adım adım izleyeyebilirsiniz sizi için daha kolayı programda otomatik üretilen formdan başlayarak adım adım showmessage ('burası aaa'); kullanarak hatanın yerini yakalamalısınız. Not : project / options / forms larda solda bulunan formu program içinde bir yerde oluşturuyorsanız kontrol edin.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
25-12-2022, Saat: 16:38
Eğer sadece major ve minor versiyon yeterli olacaksa şu şekilde kullanabilirsiniz.
function PrgVersionStr: string; var Rec: LongRec; begin Rec := LongRec(GetFileVersion(ParamStr(0))); Result := Format('%d.%d', [Rec.Hi, Rec.Lo]) end; Kullanımı Label1.Caption := PrgVersionStr; |
« Önceki Konu | Sonraki Konu »
|
Konu ile Alakalı Benzer Konular | |||||
Konular | Yazar | Yorumlar | Okunma | Son Yorum | |
Donanım bilgilerini almak için geliştirilmiş güzel bir proje | burakb44 | 2 | 299 |
02-04-2024, Saat: 16:06 Son Yorum: burakb44 |
|
Aktif olan tarayıcıdan URL bilgisi almak | eraendless | 7 | 897 |
15-09-2023, Saat: 08:36 Son Yorum: eraendless |
|
Stringgrid Hücre Bilgisi Alma | oguzk06 | 5 | 919 |
03-05-2023, Saat: 19:39 Son Yorum: oguzk06 |
|
Bakanlıktan Bitki Koruma Ürünleri Stok Bilgisi Alınması | bünyamin68 | 39 | 10.156 |
26-03-2023, Saat: 12:21 Son Yorum: varyemez |
|
Delphi Proje Açarken Problem | w0fly | 3 | 1.208 |
03-08-2022, Saat: 17:42 Son Yorum: mcuyan |