Make(delphi) ver(4.04 build 185) Add(MainForm,2953706,126,112) { Width=433 Height=430 Caption="Пример получения версии файла." BorderStyle=1 Position=1 link(onCreate,6502358:doEvent1,[]) } Add(InlineCode,9603827,21,35) { WorkPoints=#5:doGet| EventPoints=#5:onGet| DataPoints=#8:FileName| Code=#15:unit HiAsmUnit;|12:// Autor Tad|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|29: onGet, FileName:THI_Event;|48: procedure doGet(var _Data:TData; Index:Word);|5: end;|5:type |27: TVerInfo = packed record |44: vMajor, vMinor, vRelease, vBuild: word; |7: end; |2: |14:implementation|0:|62:function GetFileVerNumbers(const FileName: string): TVerInfo; |4:var |24: len, dummy: cardinal; |20: verdata: pointer; |22: verstruct: pointer; |6:const |77: InvalidVersion: TVerInfo = (vMajor: 0; vMinor: 0; vRelease: 0; vBuild: 0); |6:begin |57: len := GetFileVersionInfoSize(PChar(FileName), dummy); |43: if len = 0 then Exit{(InvalidVersion)}; |24: GetMem(verdata, len); |6: try |58: GetFileVersionInfo(PChar(FileName), 0, len, verdata); |51: VerQueryValue(verdata, '\', verstruct, dummy); |75: result.vMajor := HiWord(TVSFixedFileInfo(verstruct^).dwFileVersionMS); |75: result.vMinor := LoWord(TVSFixedFileInfo(verstruct^).dwFileVersionMS); |77: result.vRelease := HiWord(TVSFixedFileInfo(verstruct^).dwFileVersionLS); |75: result.vBuild := LoWord(TVSFixedFileInfo(verstruct^).dwFileVersionLS); |10: finally |22: FreeMem(verdata); |7: end; |4:end;|0:|53:function GetFileVer(const FileName: string): string; |6:begin |38: with GetFileVerNumbers(FileName) do |62: result := Int2Str(vMajor) + '.' + Int2Str(vMinor) + '.' + |47: Int2Str(vRelease) + '.' + Int2Str(vBuild); |6:end; |0:|28:procedure THiAsmClass.doGet;|3:var|13: fn:string;|17: FPart: string;|5:begin|31:fn:=ReadString(_Data,FileName);|26:Fpart:=ExtractFileExt(fn);|75:If (Fpart='.exe') OR (Fpart='.dll') then _hi_onEvent(onGet,GetFileVer(fn));|0:|4:end;|0:|4:end.| } Add(FileVer,12978480,336,140) { link(onGet,13257580:doStrCatDlm,[]) } Add(FileSearch,3969049,252,133) { link(onSearch,11330125:doEvent1,[]) } Add(Browse,8382429,196,133) { link(onBrowse,3969049:doSearch,[]) link(onCancel,2953706:doClose,[(239,146)(239,170)(114,170)(114,139)]) } Add(Hub,11330125,301,133) { link(onEvent1,13668651:doValue,[(327,139)(327,97)]) link(onEvent2,12978480:doGet,[]) } Add(StrCatDelim,13257580,392,140) { Delimiter=";" link(onStrCatDlm,4363927:doAdd,[]) link(Str1,13668651:Value,[]) } Add(Memory,13668651,392,91) { } Add(StringTable,4363927,455,140) { Left=10 Top=10 Width=390 Height=370 Columns=#32: Полный путь к файлу=300|9:Версия=60| Grid=0 } Add(Hub,6502358,168,126) { link(onEvent1,4363927:doClear,[(449,132)(449,153)]) link(onEvent2,8382429:doBrowse,[]) }