Iščitavanje informacija o programu, Delphi
17.06.2010, 15:31
U svaki Delphi projekat/aplikaciju možete smestiti i osnovne informacije o programa, što će biti korisno i korisnicima aplikacija ali i programerima koji vrše eventualni reinženjering.
Delphi svojim korisnicima - programerima, omogućava da uz svaki projekat (aplikaciju) smeste i osnovne informacije o programu, kao što su:
• Naziv programa
• Verzija programa
• Opis projekta
• Podaci o pravima korišćenja programa
• Komentari, itd.
Sve ove informacije možete uneti pri kreiranju aplikacija, preko menija Project > Options i kartice “Version Info”. Ovde unete informacije koriste i samim programerima, ali i budućim korisnicima. Programerima, ponajviše zbog beleženja izmena, revizija, i prepravki u kodu, tj. radi boljeg snalaženja unutar jednog projekta. Korisnicima ova opcija može biti važna, kako zbog praćenja verzije programa kojeg koriste (u sklopu održavanja softverskog proizvoda), tako i zbog prava i obaveza preuzetih kupovinom nekog programa (sekcije “LegalCopyright” i “LegalTrademarks”).
Za iščitavanje “VersionInfo” informacija služi procedura “GetFileVersionInfo”. U sledećim redovima videćemo primer procedure koja će da iščita sve dostupne VersionInfo informacije i da ih smesti u jedan listbox. Na praznu formu postavi te jedno dugme i jednu listu (listbox). Klikom na dugme pozivaćemo funkciju koja će sve odraditi:
procedure TForm1.Button1Click(Sender: TObject);
begin
InformacijeOVerziji(ListBox1);
end;
Preostali deo koda smestite u isti Unit:
Function StringPad(
InputStr,
FillChar: String;
StrLen: Integer;
StrJustify: Boolean): String;
Var
TempFill: String;
Counter : Integer;
Begin
If Not (Length(InputStr) = StrLen) Then
Begin
If Length(InputStr) > StrLen Then
Begin
InputStr := Copy(InputStr,1,StrLen);
End
Else
Begin
TempFill := ”;
For Counter := 1 To StrLen-Length(InputStr) Do
Begin
TempFill := TempFill + FillChar;
End;
If StrJustify Then
Begin
{Left Justified}
InputStr := InputStr + TempFill;
End
Else
Begin
{Right Justified}
InputStr := TempFill + InputStr ;
End;
End;
End;
Result := InputStr;
End;
Function InformacijeOVerziji(
ListBox : TListBox): Boolean;
const
InfoNum = 11;
InfoStr : array [1..InfoNum] of String =
(’CompanyName’, ‘FileDescription’, ‘FileVersion’,
‘InternalName’, ‘LegalCopyright’, ‘LegalTradeMarks’,
‘OriginalFilename’, ‘ProductName’, ‘ProductVersion’,
‘Comments’, ‘Author’);
LabelStr : array [1..InfoNum] of String =
(’Company Name’, ‘Description’, ‘File Version’,
‘Internal Name’, ‘Copyright’, ‘TradeMarks’,
‘Original File Name’, ‘Product Name’,
‘Product Version’, ‘Comments’, ‘Author’);
var
S: String;
n, Len, i : Integer;
Buf : PChar;
Value : PChar;
begin
Try
S := Application.ExeName;
ListBox.Items.Clear;
ListBox.Sorted := True;
ListBox.Font.Name := ‘Courier New’;
n := GetFileVersionInfoSize(PChar(S),n);
If n > 0 Then Begin
Buf := AllocMem(n);
ListBox.Items.Add
(StringPad(’Size’,’ ‘,20,True)+’ = ‘+IntToStr(n));
GetFileVersionInfo(PChar(S),0,n,Buf);
For i:=1 To InfoNum Do Begin
If VerQueryValue(Buf,PChar(’StringFileInfo\040904E4\’+
InfoStr[i]),Pointer(Value),Len) Then
Begin
Value := PChar(Trim(Value));
If Length(Value) > 0 Then
Begin
ListBox.Items.Add
(StringPad(labelStr[i],’ ‘,20,True)+’ = ‘+Value);
End;
End;
End;
FreeMem(Buf,n);
End
Else Begin
ListBox.Items.Add
(’Nema FileVersionInfo podataka’);
End;
Result := True;
Except
Result := False;
End;
End;
Postavio clan: Uputstvo_84
Komentari
Trenutno nema komentara, komentarisite clanak pomocu forme koja se nalazi ispod
Obavestenje: Komentari nisu zvanicni stavovi ovog sajta već subjektivna mišljenja. Sajt Uputstva.rs nije odgovoran za stavove koji su iznešeni u komentarima i oni su vlasništvo njihovih autora.