从官网论坛看到的(https://wiki.freepascal.org/Show_Application_Title,_Version,_and_Company#FPC_3.0.2B)。
下面的方法适用FPC3.0以上版本:
下面的方法适用FPC3.0以上版本:
program printfileinfo; { Displays file version info for - Windows PE executables - Linux ELF executables (compiled by Lazarus) - macOS MACH-O executables (compiled by Lazarus) Runs on Windows, Linux, macOS } {$mode objfpc}{$H+} {$ifdef mswindows}{$apptype console}{$endif} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes,sysutils // FPC 3.0 fileinfo reads exe resources as long as you register the appropriate units , fileinfo , winpeimagereader {need this for reading exe info} , elfreader {needed for reading ELF executables} , machoreader {needed for reading MACH-O executables} ; var FileVerInfo: TFileVersionInfo; {$R *.res} begin FileVerInfo:=TFileVersionInfo.Create(nil); try FileVerInfo.ReadFileInfo; writeln('Company: ',FileVerInfo.VersionStrings.Values['CompanyName']); writeln('File description: ',FileVerInfo.VersionStrings.Values['FileDescription']); writeln('File version: ',FileVerInfo.VersionStrings.Values['FileVersion']); writeln('Internal name: ',FileVerInfo.VersionStrings.Values['InternalName']); writeln('Legal copyright: ',FileVerInfo.VersionStrings.Values['LegalCopyright']); writeln('Original filename: ',FileVerInfo.VersionStrings.Values['OriginalFilename']); writeln('Product name: ',FileVerInfo.VersionStrings.Values['ProductName']); writeln('Product version: ',FileVerInfo.VersionStrings.Values['ProductVersion']); finally FileVerInfo.Free; end; end.
FPC3.0之前版本使用下面的方法读取版本信息
uses resource, versiontypes, versionresource; FUNCTION resourceVersionInfo: STRING; (* Unlike most of AboutText (below), this takes significant activity at run- *) (* time to extract version/release/build numbers from resource information *) (* appended to the binary. *) VAR Stream: TResourceStream; vr: TVersionResource; fi: TVersionFixedInfo; BEGIN RESULT:= ''; TRY (* This raises an exception if version info has not been incorporated into the *) (* binary (Lazarus Project -> Project Options -> Version Info -> Version *) (* numbering). *) Stream:= TResourceStream.CreateFromID(HINSTANCE, 1, PChar(RT_VERSION)); TRY vr:= TVersionResource.Create; TRY vr.SetCustomRawDataStream(Stream); fi:= vr.FixedInfo; RESULT := 'Version ' + IntToStr(fi.FileVersion[0]) + '.' + IntToStr(fi.FileVersion[1]) + ' release ' + IntToStr(fi.FileVersion[2]) + ' build ' + IntToStr(fi.FileVersion[3]) + eol; vr.SetCustomRawDataStream(nil) FINALLY vr.Free END FINALLY Stream.Free END EXCEPT END END { resourceVersionInfo } ;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2014-05-29 [转]xe6 android 使用距离传感器(Proximiry)