ich hatte frueher als ich noch foxpro gemacht habe immer in der titelzeile die versionsnummer anzeigen lassen und versuche das nun in lazarus auch hin zu bekommen
var
FileVerInfo: TFileVersionInfo;
begin
if Paramcount=0 then
begin
showmessage('Missing executable filename parameters. Aborting.');
halt(1);
end;
FileVerInfo:=TFileVersionInfo.Create(nil);
try
FileVerInfo.FileName:=paramstr(1);
showmessage(FileVerInfo.getVersionSetting('FileVersion'));
...
aber es wird einfach nichts angezeigt, ich hab in anderen foren irgendwas mit READfileversion gelesen, muss ich noch was anstossen dass es eingelesen wird ? hat jemand ne idee ?
gruss und dank vorab
w
Zuletzt geändert von wbeppler am Fr 17. Apr 2015, 09:29, insgesamt 2-mal geändert.
unit1.pas(544,17) Error: identifier idents no member "ReadFileInfo"
wenn ich
FileVerInfo.
schreibe, so kommt nach eingabe des PUNKT auch das Read.... nicht zur auswahl
ich hab den code aus der anleitung kopiert, sollte also gehen aber wie kommen die in der anleitung auf eine procedure die gar nicht drin ist ? oder bin ich blind ?
Dann hast du wahrscheinlich keinen aktuellen FPC (trunk) oder benutzt eine stabile Version (2.6.x). Mein nicht ganz taufrischer r48511 kennt die Funktion.
Wie es mit den stabilen Versionen geht steht auch im Link.
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]) + LineEnding;
vr.SetCustomRawDataStream(nil)
FINALLY
vr.Free
END
FINALLY
Stream.Free
END
EXCEPT
END
END { resourceVersionInfo } ;
...
Das ist die Funktion aus dem Link, ich habe nur ein "eol" durch "LineEnding" ersetzt und die benötigten uses dazu geschrieben.
procedure TForm1.Button1Click(Sender: TObject);
var
FileVerInfo: TFIleVersionInfo;
begin
FileVerInfo := TFIleVersionInfo.Create(nil);
try
FileVerInfo.FileName := ParamStr(0); // wichtig die 0 (statt 1) - ParamStr(0) ist der Name der Programm-Exe
Caption := FileVerInfo.getVersionSetting('FileVersion');
// oder: ShowMessage(FileVerInfo.GetVersionSetting('FileVersion'));
finally
FileVerInfo.Free;
end;
end;
Im Projekt müssen natürlich Versionsinformationen definiert sein! (Hatte ich bei meinem Test-Projekt zunächst vergessen, und dann kam nichts. wbeppler, vielleicht auch du?)
frage 2 : was ist mit "user changes trunk" gemeint ? was die einzelnen worte uebersetzt bedeuten ist klar (sogar mir) aber sind das die staendigen aenderungen ? denn genau was da steht haette ich gesucht... na mal gut dass ich das hier erfahre, DANKE drum.