[gelöst] Versionsinsformationen ausgeben
[gelöst] Versionsinsformationen ausgeben
Hallo,
ich bin Anfänger und habe eine Frage zu der Versionsinfo meiner Anwendung.
Ich benutze Lazarus 1.2.2 unter Windows 7.
In den Projekteinstellungen habe ich Versionsinformationen eingeschaltet und die Versionsinformationen eingegeben.
Wie kann ich diese Vesions-Informationen meiner Anwendung auslesen?
Danke für Eure Hilfe!
Gruß
OLLI
ich bin Anfänger und habe eine Frage zu der Versionsinfo meiner Anwendung.
Ich benutze Lazarus 1.2.2 unter Windows 7.
In den Projekteinstellungen habe ich Versionsinformationen eingeschaltet und die Versionsinformationen eingegeben.
Wie kann ich diese Vesions-Informationen meiner Anwendung auslesen?
Danke für Eure Hilfe!
Gruß
OLLI
Zuletzt geändert von OLLI_S am Mo 6. Okt 2014, 22:52, insgesamt 1-mal geändert.
Re: Versionsinsformationen ausgeben
Hallo,
danke für Deine Hilfe!
Bevor ich meine Frage gepostet habe, habe ich in diesem Forum natürlich nach einer Lösung gesucht (geht ja schneller, als zu fragen und auf die Antwort zu warten) und bin auf folgenden Artikel gestoßen:
http://wiki.lazarus.freepascal.org/GetCurrentVersion/de
Ich habe den Code bei einem Button (OnClick) eingefügt, beim Kompilieren wird der Typ "PVSFixedFileInfo" (bei VAR) nicht erkannt.
Wenn ich dann die Unit "Windows" mit einfüge (in USES) dann werden an anderen Stellen, die vorher ohne Probleme funktioniert haben, Fehler ausgegeben.
Beispielsweise hier:
Fehler:
Daher habe ich diesen Beitrag geschrieben.
Selbstverständlich habe ich die Datei "vinfo.pas" angelegt, sie ist in dem uses Block in meinem Projekt automatisch hinugefügt worden und in meine "Hauptformular" Pascal-Datei ist sie mit Uses auch eingebunden.
Kann mir jemand weiterhelfen?
Gruß
OLLI
danke für Deine Hilfe!
Bevor ich meine Frage gepostet habe, habe ich in diesem Forum natürlich nach einer Lösung gesucht (geht ja schneller, als zu fragen und auf die Antwort zu warten) und bin auf folgenden Artikel gestoßen:
http://wiki.lazarus.freepascal.org/GetCurrentVersion/de
Ich habe den Code bei einem Button (OnClick) eingefügt, beim Kompilieren wird der Typ "PVSFixedFileInfo" (bei VAR) nicht erkannt.
Wenn ich dann die Unit "Windows" mit einfüge (in USES) dann werden an anderen Stellen, die vorher ohne Probleme funktioniert haben, Fehler ausgegeben.
Beispielsweise hier:
Code: Alles auswählen
if DeleteFile((fLogFileName)) = False then
Code: Alles auswählen
fMainForm.pas(182,33) Error: Incompatible type for arg no. 1: Got "AnsiString", expected "PChar"
Wenn ich den Code aus Deinem Link verwende erhalte ich bei den Variablen-Deklarationen auch Fehlermeldungen:Scotty hat geschrieben:LMGTFY: http://wiki.lazarus.freepascal.org/Show ... nd_Company
Code: Alles auswählen
fMainForm.pas(1575,23) Error: Identifier not found "TVersionResource"
fMainForm.pas(1575,23) Error: Error in type definition
fMainForm.pas(1576,24) Error: Identifier not found "TVersionFixedInfo"
fMainForm.pas(1576,24) Error: Error in type definition
Kann mir jemand weiterhelfen?
Gruß
OLLI
Re: Versionsinsformationen ausgeben
Ganz allgemeiner Tipp:
Klicke mit Rechts auf den Fehler im Meldungsfenster.
Klicke im Kontextmenu auf "Suche Bezeichner" und schon siehst du Package, Unit und Deklaration.
Klicke mit Rechts auf den Fehler im Meldungsfenster.
Klicke im Kontextmenu auf "Suche Bezeichner" und schon siehst du Package, Unit und Deklaration.
Re: Versionsinsformationen ausgeben
Hallo,
Ich musste nur einige Unites noch in Uses mit aufnehmen:
Ich verwende die Sourcen von http://wiki.lazarus.freepascal.org/Show ... nd_Company die unter "Implementations using FPC 2.6.x " stehen:
Das Ganze funktioniert, ich habe aber noch folgende Fragen:
OLLI
Das hat geholfen, danke!theo hat geschrieben:Ganz allgemeiner Tipp:
Klicke mit Rechts auf den Fehler im Meldungsfenster.
Klicke im Kontextmenu auf "Suche Bezeichner" und schon siehst du Package, Unit und Deklaration.
Ich musste nur einige Unites noch in Uses mit aufnehmen:
Code: Alles auswählen
uses
...
versionresource, versiontypes, resource,
...
Code: Alles auswählen
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 } ;
- Lazarus kann mit dem "eol" nichts anfangen, dazu finde ich auch keine Deklaration (daher habe ich es weg gelassen).
Ist das nur ein "End Of Line" oder was anderes?
- Auf der Seite steht unter dem Quelltext "Using vinfo: http://forum.lazarus.freepascal.org/ind ... ic=12435.0".
In diesem Link wird gesagt, dass ich die Unit vinfo.pas benötige, aber es funktioniert auch ohne diese Unit.
- Müssen nach den ganzen ENDs bei den TRY Blöcken keine Strichpunkte sein?
- Ist das Auslesen der Versionsinformationen wirklich so kompliziert?
Gibt es nicht einen einfacheren Weg, wie Application.VersionMajor? (also dass man nur die Eigenschaften eines Objektes aufrufen muss)?
OLLI
Re: Versionsinsformationen ausgeben
1. "LineEnding" geht auch.
2/4. Dinge ändern sich, Dokumentationen nicht immer. Für FPC 2.7.1/trunk ist es wieder anders / einfacher. http://wiki.lazarus.freepascal.org/Show ... .1.2Ftrunk
3. Bei "end" nicht unbedingt. http://wiki.freepascal.org/End
2/4. Dinge ändern sich, Dokumentationen nicht immer. Für FPC 2.7.1/trunk ist es wieder anders / einfacher. http://wiki.lazarus.freepascal.org/Show ... .1.2Ftrunk
3. Bei "end" nicht unbedingt. http://wiki.freepascal.org/End
Re: Versionsinsformationen ausgeben
Hallo,
wann kommt denn FPC 2.7.1?
Gruß
OLLI
wann kommt denn FPC 2.7.1?
Gruß
OLLI
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Versionsinsformationen ausgeben
Alle Versionen mit einer ungeraden Zahl an zweiter Stelle sind Entwicklungsversionen. Das heißt: aktuell wird an 2.7.x gearbeitet, welche - sobald es fertig ist - als 2.8.x veröffentlicht wird.OLLI_S hat geschrieben:wann kommt denn FPC 2.7.1?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Versionsinsformationen ausgeben
Kannst du haben. Muss man halt von SVN ziehen und selber bauen.OLLI_S hat geschrieben: wann kommt denn FPC 2.7.1?
http://svn.freepascal.org/cgi-bin/viewv ... /?root=fpc
Re: Versionsinsformationen ausgeben
Danke für die Info, aber ich warte lieber bis die Version offiziell released wird.theo hat geschrieben:Kannst du haben. Muss man halt von SVN ziehen und selber bauen.
http://svn.freepascal.org/cgi-bin/viewv ... /?root=fpc
Gruß
OLLI