Hej PL,
"PL" <jessie-peter@get2net.dk> wrote in message
news:a0ccao$g7$1@sunsite.dk...
> Jeg håber I alle er kommer godt over det meste af Julen uden de store
> vægtmæssige tiltag.
Tak... I lige måde...
>
> Jeg har en fast procedure mht. at læse programmets egen versionsnummer.
> Problemet er bare, at Win95 ikke kan læse versionsnr. af min exefile, men
> alle andre Win-versioner kan.
Først og fremmest vil jeg sige, at din funktion er lidt uoverskuelig, og
meget ekstensiv... jeg kan desværre ikke fortælle dig, hvorfor det IKKE
virker på en Win 95, men jeg kan fortælle, at jeg anvender nedenstående
funktion, jeg selv har skrevet, og endnu ikke har haft problemer med den.
Hvis du prøver den, og det enten virker eller ej, må du gerne lige skrive
tilbage (til gruppen, naturligvis)... jeg er da interesseret i at høre, om
der er et problem med Win 95 jeg ikke er opmærksom på.
Om funktionen:
Parametren AFileName indeholder filnavnet på din applikation (f.eks.
Application.ExeName), og AMajor, AMinor, ARelease, og ABuild returnerer
værdierne for de forskellige dele af versions-nummeret. Funktionen
returnerer 'true' hvis den kunne trække versionen ud, eller returneres
'false'. Funktionen virker desuden kun for 32-bit programmer.
Håber ikke du har problemer med de engelske kommentarer.. jeg koder altid
"på engelsk"
function GetFileVersion(const AFileName: string;
var AMajor, AMinor, ARelease, ABuild: Word): Boolean;
// Retrieves file version information
// Returns true if file info was found, false otherwise
var
Handle : DWORD;
FixedFileInfo : Pointer;
FixedFileInfoSize : UINT;
VerInfoSize : Integer;
VerInfo : Pointer;
begin
// Get size of and allocate memory for version information structure
VerInfoSize := GetFileVersionInfoSizeA(@AFileName[1], Handle);
GetMem(VerInfo, VerInfoSize);
try
// Get version information structure and get fixed file information
if not GetFileVersionInfoA(@AFileName[1], Handle, VerInfoSize, VerInfo) or
not VerQueryValueA(VerInfo, PChar('\\'), FixedFileInfo,
FixedFileInfoSize) then
// Failed
Result := False
else
// Return appropriate information
with PVSFixedFileInfo(FixedFileInfo)^ do begin
AMajor := HiWord(dwFileVersionMS);
AMinor := LoWord(dwFileVersionMS);
ARelease := HiWord(dwFileVersionLS);
ABuild := LoWord(dwFileVersionLS);
// Success!
Result := True;
end; // with
finally
FreeMem(VerInfo);
end; // try-finally
end; // GetFileVersion
Cheers,
Thomas