Delphi 2010에서 Delphi XE7로 프로그램을 업데이트하고 있습니다. 유니 코드 용으로 적응하고 GetFileVersionInfoSize 대신 GetFileVersionInfoW를 사용해야 할 필요가 있다고 생각하여 아래에 표시된 코드가 작동을 멈췄습니다.Delphi XE2 및 그 이후 버전의 파일 가져 오기
누가 아래에 표시된 기능의 최신 버전을 개발 한 사람이 있습니까? 지금까지 웹에서 예제를 찾을 수 없었습니다. 저의 저수준 Windows 프로그래밍이 저를 넘어서는 것이 아닌가 걱정됩니다.
도움 주셔서 감사합니다. 나중에 델파이 XE2와에 더 이상 작동 아래
기존 코드 : 그냥 델파이의 모든 버전에서 컴파일 할 때 1.0.0.0
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
{From Steve Schafer }
var
VerInfoSize: DWORD;
VerInfo: pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;
앱이 맞나요? 1.0.0.0 버전이 아닙니까? Btw. 확실히 오류 검사를 추가해야합니다. – TLama
게시 한 코드가 XE6의 새로운 VCL 앱에서 완벽하게 작동합니다. 양식에 레이블을 드롭하고 프로젝트 옵션으로 이동하여 빌드의 버전 정보를 설정하고 FormShow에 대한 처리기를이 두 줄 (및 적절한 변수 선언)과 함께 추가합니다. GetBuildInfo (Major, Minor, Rev, Build); Label1.Caption : = 형식 ('% d. % d. % d. % d', [Major, Minor, Rev, Build]); 프로젝트 -> 빌드 (추가 된 버전 정보를 얻고 응용 프로그램을 실행하십시오. 내 경우 버전을 4.3.2.1로 설정하고 레이블은 '4.3.2.1'을 표시합니다. –
코드는 모든 버전에서 똑같이 작동합니다 –