[Gelöst]: Versionsinformationen auslesen

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6785
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Versionsinformationen auslesen

Beitrag von af0815 »

Welchen FPC willst du verwenden bzw. hast du installiert ?

2.2.x oder 2.4.x ?

Der FPC schein 2.4.2 zu sein, die FPC-Config mit den Pfaden verwendet aber 2.2.4. So wie das Log aussieht hast du einen Mischmasch aus 2 Versionen. Suche mal nach der FPC.cfg und kontrolliere die Pfade, bzw. schau mal ob du nicht mehrer fpc.cfg jetzt hast.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
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: Versionsinformationen auslesen

Beitrag von Socke »

af0815 hat geschrieben:Der FPC schein 2.4.2 zu sein, die FPC-Config mit den Pfaden verwendet aber 2.2.4. So wie das Log aussieht hast du einen Mischmasch aus 2 Versionen. Suche mal nach der FPC.cfg und kontrolliere die Pfade, bzw. schau mal ob du nicht mehrer fpc.cfg jetzt hast.
Es ist kein Problem Free Pascal in verschiedenen Versionen zu installieren und auch zu verwenden, wenn die Konfigurationsdatei(en) richtigt konfiguriert sind. Das größte Problem ist da Lazarus, da Lazarus immer nur einen Compiler und ein Quelltextverzeichnis verwenden kann.

Der "Mischmasch" kommt wohl durch ein nicht ganz sauber gesetzte Umgebungsvariable PATH zusammen; diese bitte überprüfen. Konfigurationsdatei bitte ebenfalls überprüfen.
MAC hat geschrieben:Hast du danach Lazarus neu kompiliert ??
Das wäre völlig unnötig gewesen, da er keine neuen visuellen Komponenten installieren will. Zumal er Lazarus eh nicht mit dem 2.4er-Compiler übersetzen kann, bis dieser richtig konfiguriert ist. Nötig wäre allein:
  • Compiler installieren und konfigurieren
  • Lazarus die neue Compiler-Programmdatei mitteilen
  • Lazarus neues Quelltextverzeichnis mitteilen
  • Programm kompilieren
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1200
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Versionsinformationen auslesen

Beitrag von kralle »

N'abend,

ich habe jetzt Lazarus komplett neu installiert.
Im Verzeichnis "C:\lazarus\fpc\2.2.4" liegt die FPC-Version die mit Lazarus kommt.
Im Verzeichnis "C:\lazarus\fpc\2.4.2" liegt jetzt die aktuelle FPC Version.

Jetzt wollte ich unter "Einstellungen/Einstellungen .../Umgebung/Dateien" die Pfade umstellen auf die FPC 2.4.2.
Aber, es gibt kein "c:\lazarus\fpc\2.4.2\source\". Müsste ich nicht aber auch diesen Pfad umstellen?

In jedem FPC-Unterverzeichnis gibt es eine passende "FPC.cfg".

Also, was muß ich jetzt machen damit alles rund läuft?

Gruß Heiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1200
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Versionsinformationen auslesen

Beitrag von kralle »

Hallo,

nach dem man mir mitgeteilt hat, das es jetzt Lazarus 0.9.30 incl FPC 2.4.2 gibt, bin ich schon weiter gekommen als vorher.

Code: Alles auswählen

unit vinfo;
 
{$mode objfpc}
 
interface
 
uses
  Classes, SysUtils, resource, versiontypes, versionresource;
 
type
  { TVersionInfo }
 
  TVersionInfo = class
  private
    FVersResource: TVersionResource;
    function GetFixedInfo: TVersionFixedInfo;
    function GetStringFileInfo: TVersionStringFileInfo;
    function GetVarFileInfo: TVersionVarFileInfo;
  public
    constructor Create;
    destructor Destroy; override;
 
    procedure Load(Instance: THandle);
    property FixedInfo: TVersionFixedInfo read GetFixedInfo;
    property StringFileInfo: TVersionStringFileInfo read GetStringFileInfo;
    property VarFileInfo: TVersionVarFileInfo read GetVarFileInfo;
  end;
 
implementation
 
{ TVersionInfo }
 
function TVersionInfo.GetFixedInfo: TVersionFixedInfo;
begin
  Result := FVersResource.FixedInfo;
end;
 
function TVersionInfo.GetStringFileInfo: TVersionStringFileInfo;
begin
  Result := FVersResource.StringFileInfo;
end;
 
function TVersionInfo.GetVarFileInfo: TVersionVarFileInfo;
begin
  Result := FVersResource.VarFileInfo;
end;
 
constructor TVersionInfo.Create;
begin
  inherited Create;
  FVersResource := TVersionResource.Create;
end;
 
destructor TVersionInfo.Destroy;
begin
  FVersResource.Free;
  inherited Destroy;
end;
 
procedure TVersionInfo.Load(Instance: THandle);
var
  Stream: TResourceStream;
begin
  Stream := TResourceStream.CreateFromID(Instance, 1, PChar(RT_VERSION));
  try
    FVersResource.SetCustomRawDataStream(Stream);
    // access some property to load from the stream
    FVersResource.FixedInfo;
    // clear the stream
    FVersResource.SetCustomRawDataStream(nil);
  finally
    Stream.Free;
  end;
end;
 
end.
Code Code wird jetzt abgearbeitet bis

Code: Alles auswählen

Stream := TResourceStream.CreateFromID(Instance, 1, PChar(RT_VERSION));
dann kommt bei einem Start in der IDE die Fehlermeldung:
Projekt project1.exe hat Exception-Klasse >>External: SIGSEGV<< ausgelöst
Und wenn man die EXE direkt startet, kommt die Meldung :
Access violation
(auf deutsch: Zugriffsverletzung)
und dabei ist es egal wo die Exe beim Start liegt.

Könnt Ihr nochmal helfen?

Gruß HEiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1200
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: [Gelöst]: Versionsinformationen auslesen

Beitrag von kralle »

Hallo,

die Fehlermeldung : Projekt project1.exe hat Exception-Klasse >>External: SIGSEGV<< ausgelöst
kommt dann, wenn man das Programm ausführt, den Button anklickt UND DIE VERSIONSVERWALTUNG NICHT AKTIVIERT HAT :roll:

Gruß Heiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Antworten