Bir kod verdim bir bakabilirmisiniz

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kilitli
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Bir kod verdim bir bakabilirmisiniz

Mesaj gönderen serbek_tr »

Daha önce version bilgilerine nasıl ulaşılabileceğine dair bir arama yaptırmıştım aramalar sonucunda işime yarayacak bir link buldum
ama burda bir terslik var terslik şu açıkçası kod açıklamalarında bir şey anlamadım sayfanın tamamı ingilizce idi.
iyi güzel çalışıyor sadece ben ufak bir değişiklik yaptım
ne yaptığımı kodların yanına yazdım
ama bu functionun bulunduğu çalışan exe kapanıncaya kadar funtionla çağrılan dosya kullanımda kalıyor bunu nasıl free edebilirim;

Kod: Tümünü seç

function getVersion(Filename:string) : string;
// yukarıdaki satırın aslı şöyle --- function getVersion : string;
// function u çağıdıgımda dosya adı ile çağırayım diye ekledim

{ ---------------------------------------------------------
   Extracts the FileVersion element of the VERSIONINFO
   structure that Delphi maintains as part of a project's
   options.

   Results are returned as a standard string.  Failure
   is reported as "".

   Note that this implementation was derived from similar
   code used by Delphi to validate ComCtl32.dll.  For
   details, see COMCTRLS.PAS, line 3541.
  -------------------------------------------------------- }
const
   NOVIDATA = '';

var
  dwInfoSize,           // Size of VERSIONINFO structure
  dwVerSize,            // Size of Version Info Data
  dwWnd: DWORD;         // Handle for the size call.
  FI: PVSFixedFileInfo; // Delphi structure; see WINDOWS.PAS
  ptrVerBuf: Pointer;   // pointer to a version buffer
  strFileName,          // Name of the file to check
  strVersion : string;  // Holds parsed version number
begin

   strFileName := FileName;
//bunuda orjinali böyledi galiba ---- strFileName := (0);


   dwInfoSize :=
      getFileVersionInfoSize( pChar( strFileName ), dwWnd);

   if ( dwInfoSize = 0 ) then
      result := NOVIDATA
   else
   begin

      getMem( ptrVerBuf, dwInfoSize );
      try

         if getFileVersionInfo( pChar( strFileName ),
            dwWnd, dwInfoSize, ptrVerBuf ) then

            if verQueryValue( ptrVerBuf, '\',
                              pointer(FI), dwVerSize ) then

            strVersion :=
               format( '%d.%d.%d.%d',
                       [ hiWord( FI.dwFileVersionMS ),
                         loWord( FI.dwFileVersionMS ),
                         hiWord( FI.dwFileVersionLS ),
                         loWord( FI.dwFileVersionLS ) ] );

      finally
        freeMem( ptrVerBuf );
      end;
    end;
  Result := strVersion;

end;
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

baslıklar konuyu ozetler nitlikte olmalı.
ÜŞENME,ERTELEME,VAZGEÇME
Kilitli