15 November 2007

access application version information programmatically

!************************************** !
Name: access application version information programmatically. ! Description:This function will read the file version information from your application's executable file. It does this through the Win32 API functions GetFileVersionInfoSize(), GetFileVersionInfo(), and VerQueryValue(). This can be very useful if you have your IDE set to increment build numbers each time you compile your project, as it can be used to return the current version number. Since I use the version number in a lot of my applications, it's really a pain to have to update a global constant each time the version number changes. This makes it much easier. Please note: I found a version of this code in the Borland Delphi 6 help files, and modified it so it would be a function, and return only the file version information. Additionally, there were very few comments, so I commented much of the code as well. You can view the original code if you do a search in the help files for "Reading version information". ! By: filter ! ! ! Inputs:None ! ! Returns:A string containing the current file version of your application's executable file. ! !Assumes:None ! !Side Effects:None !This code is copyrighted and has limited warranties. !Please see http://www.Planet-Source-Code.com/xq/ASP/txtCodeId.542/lngWId.7/qx/vb/scripts/ShowCode.htm !for details.
!**************************************

function Application_Version: String; const InfoNum = 10; InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments'); var S: string; n, Len, i: DWORD; Buf: PChar; Value: PChar; begin S := Application.ExeName; //this application's EXE filename n := GetFileVersionInfoSize(PChar(S), n); // the return value is the size in bytes of the file's version information. Result := ''; (* this sets a default result in case a file version isn't found. I add this to functions because the compiler will bug you that the result may not be defined otherwise. you could change this, or remove it alltogether, although it's probably best to leave it. *) if n > 0 then begin Buf := AllocMem(n); // allocate the needed amount of memory into the buffer GetFileVersionInfo(PChar(S), 0, n, Buf); // store the file version information in the memory buffer. it stores all of the values listed in the InfoStr array. for i := 1 to InfoNum do if VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr[i]), Pointer(Value), Len) then if trim(lowerCase(InfoStr[i])) = 'fileversion' then Result := Value;// loop through each value until we find the "FileVersion" information. FreeMem(Buf, n); // free the memory we stored in the buffer.
end;
end;

Penganiayaan di CITOS

Sekilas infoooooooooo................

Hari Minggu kemarin ( 11 November 2007 ) sekitar pukul
14.00 WIB salah seorang saudara saya, sebut saja
namanya N, (wanita dengan 2 anak 5th dan 2 thn)
berniat untuk menghabiskan waktu di CITOS. Suami N
menurunkan istri dan kedua anaknya di depan lobby
sementara belaiu mencari parkir yang waktu itu memang
agak susah. Ketika N sedang berjalan jalan sambil
menggendong anak, tiba tiba seorang anak kecil yang
kelihatannya baru bisa jalan, sekitar umur 1 1/5 tahun
menabrak kakinya. N terkejut sedikit sambil secara
otomatis mendekap anaknya lebih erat, dan si anak yang
menabrak agak oleng namun tidak jatuh dan juga tidak
menangis. Tak berapa lama seorang wanita datang dan
tanpa basa basi langsung memaki maki : "gimana sih,
jalan gak lihat-lihat !", spontan N menjawab "maaf bu,
saya juga tidak melihat anak Ibu...". Eh, tidak berapa
lama seorang pria datang ( perawakan sedang, kulit
agak gelap ) dan tanpa ba bi bu langsung menampari (
bukan menampar, yang berarti sekali )wajah N. Bukan
itu saja, tanpa belas kasihan lelaki biadab itu, yang
mungkin suami atau bapak si anak kecil yang menabrak
N, menambah penderitaan N dengan meninju wajah kiri N
dengan tanpa perasaan ! Bayangkan ! Seorang Ibu yang
sedang menggendong anak berumur dua tahun dan sedang
membimbing puterinya yang berumur 5 tahun ditampar dan
ditinju oleh seorang lelaki ! Yang bisa dilakukan N
hanya berteriak-teriak sambil minta tolong. sayangnya
di sekitar tempat kejadian hanya ada
perempuan-perempuan dan tidak ada security. Yang
menjijikkan adalah ketika si pria selesai menampar dan
meninju N, dia, istrinya dan anaknya kemudian berlari
terbirit-birit meninggalkan 'korbannya'. Dasar pria
biadab, pengecut dan tidak bertanggung jawab ! N
sempat mengejar sambil minta tolong sama orang-orang
namun 'keluarga biadab" tersebut menghilang
dikeramaian.
Peristiwa ini sudah dilaporkan ke Security CITOS saat
itu juga tanpa ada janji bahwa hal ini akan
ditindaklanjuti. Keluarga sedang berembug untuk
menindaklanjuti hal ini ke koridor hukum paling tidak
mencari 'oknum' tersebut melalui CCTV Citos dan
melaporkannya ke Polisi.
Kepada para pihak yang membaca berita ini dan
kemungkinan berada ditempat kejadian ( sekitar counter
J'CO) mohon informasinya apabila anda mengetahui
identatitas 'oknum penganiaya' tersebut dan
melaporkannya ke kantor Polisi terdekat.
Orang tidak tersebut tidak layak dibiarkan
berkeliaran, jangan sampai dia melakukan hal yang sama
untuk kedua kalinya.