Eigene Meldungen beim Compilieren ausgeben

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Eigene Meldungen beim Compilieren ausgeben

Beitrag von Mathias »

Ich habe gerade folgendes entdeckt, dies könnte dem einten oder anderen nützlich sein.

Code: Alles auswählen

procedure Foo;
begin
  {$message 'Muss noch angepasst werden !'}
  {$fatal 'Fataler Fehler !'}
end;     
"faltal" ist gar brutal, es ist kein kompilieren mehr möglich.
Aber "message" könnte echt praktisch sein. Man entwickelt eine package und merkt man will noch etwas ändern, aber man kommt noch nicht dazu. Dann ist "$message" eine gute Gedankenstütze.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
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: Eigene Meldungen beim Compilieren ausgeben

Beitrag von af0815 »

Ich verwende das seit ewigen Zeiten, alleine um mir zu sagen, in welchen Modus ich gerade kompiliere.

Es gibt viele so kleine versteckte Helfer, die einem das Leben leichter machen. so ein Klassiker ist

Code: Alles auswählen

{$IfDef Debug1} DebugLn({$I %FILE%} + '->' +{$I %CURRENTROUTINE%}); {$EndIf} 
Damit weis man, wo man gerade im Quelltext ist auf der Debugkonsole.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von MmVisual »

Hallo,

Gibt es ein Define für die LCL Version?

Ich würde gerne mein Programm schon mal für Lazarus V3 vorbereiten. Es gibt in V3 depreached Code, den man gegenüber V2.2.6 umschreiben sollte. Das hatte ich gerne per Define schon mal umgeschrieben und da ich mehrere OS benutze und nicht alle jetzt schon hochziehen will wäre es gut wenn es so etwas gäbe um umschalten zu können.

VG Markus

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von Mathias »

MmVisual hat geschrieben:
Mi 13. Dez 2023, 18:57
Hallo,

Gibt es ein Define für die LCL Version?

Ich würde gerne mein Programm schon mal für Lazarus V3 vorbereiten. Es gibt in V3 depreached Code, den man gegenüber V2.2.6 umschreiben sollte. Das hatte ich gerne per Define schon mal umgeschrieben und da ich mehrere OS benutze und nicht alle jetzt schon hochziehen will wäre es gut wenn es so etwas gäbe um umschalten zu können.

VG Markus
Für FPC habe ich etwas gefunden:

Code: Alles auswählen

  {$IF FPC_FULLVERSION>=030001}
  TPointF = Types.TPointF;
  TRectF = Types.TRectF;
  {$ELSE}  
Dazu habe ich noch etwas interessantes gefunden, nur Lazarus findet man nicht,
https://www.freepascal.org/docs-html/prog/progap7.html

Da habe ich etwas gefunden, aber es geht leider nicht. https://wiki.freepascal.org/LCL_Defines, es wird ein String verlangt.
Da habe ich folgendes probiert, aber egal was für eine Zahl ich reinschreibe, es geht alles durch.

Code: Alles auswählen

  {$if (lcl_fullversion >= '4000600')}
  DoSomething(); // only do this for Lazarus 2.0.6 or later
  {$endif}   
Edit:
Lösung gefunden: https://forum.lazarus.freepascal.org/in ... ic=45144.0

Code: Alles auswählen

uses ..., LCLVersion
...
  {$if lcl_fullversion > 2000000}
  WriteLn('Grösser 2');
  {$endif}
  {$if lcl_fullversion > 3000000}
  WriteLn('Grösser 3');
  {$endif}
  {$if lcl_fullversion > 4000000}
  WriteLn('Grösser 4');
  {$endif}
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von MmVisual »

Ich nutze gerade Lazarus V3.0 RC2.

Code: Alles auswählen

  {$if (lcl_fullversion >= 3000000)}
  aSize:= ThemeServices.GetDetailSizeForPPI(aDetails, ScreenInfo.PixelsPerInchX);
  {$else}
  aSize:= ThemeServices.GetDetailSize(aDetails);
  {$endif} 
Es sollte das erste aktiv sein, es ist jedoch das zweite aktiv. Es funktioniert nicht, kann ich bestätigen.

Edit:
Die USES habe ich mit eingebunden, es geht dennoch nicht. Zumindest zeicgt es mir der Lazarus Editor falsch an.
Der Compiler macht es jedoch richtig.
Zuletzt geändert von MmVisual am Mi 13. Dez 2023, 19:57, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von Mathias »

Es sollte das erste aktiv sein, es ist jedoch das zweite aktiv. Es funktioniert nicht, kann ich bestätigen.
Was spuckt folgendes aus ?

Code: Alles auswählen

Writeln(lcl_fullversion);
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von MmVisual »

Ich nutze nicht das WrLn, sondern die in Lazarus V3 neue Funktion.

Wenn die alte Funktion aktiv ist, dann zeigt mir das Nachrichtenfenster "depreached" an, beim verwenden der neuen Funktion nicht.
Der Compiler macht das richtig, nur der Lazarus Editor zeigt die Logik verkehrt herum an.
Anbei 2 Screenshots:
Bild1.png
Bild1.png (31.52 KiB) 4420 mal betrachtet
Bild2.png
Bild2.png (23.46 KiB) 4420 mal betrachtet
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von Mathias »

Der Compiler macht das richtig, nur der Lazarus Editor zeigt die Logik verkehrt herum an.
Evt.l ein Bug.
Ich nutze nicht das WrLn, sondern die in Lazarus V3 neue Funktion.

Code: Alles auswählen

Showmessage(lcl_fullversion.tostring);
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von MmVisual »

Bugreport erstellt:

https://gitlab.com/freepascal.org/lazar ... sues/40645

Ich hoffe es ist so verständlich.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Warf
Beiträge: 1913
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Eigene Meldungen beim Compilieren ausgeben

Beitrag von Warf »

Ich nutze {$FATAL Message} und {$ERROR Message} sehr gerne, z.b. wenn ich eine unit schreibe die nur auf einem Betriebsystem oder nur auf einer Architektur funktioniert, aber sonst keinen compiler Error auslösen würde (z.b. weil einfach nur Dateien nicht existieren würden die der Code braucht)

Oder um Warnings auszugeben falls was noch nicht vollständig oder korrekt implementiert wurde.

Ist halt eine sehr gute Möglichkeit um anderen Nutzern des Codes (z.b. als Teil einer Bibliothek oder eines größeren Projekt Teams) mitzuteilen wo die Limitierungen liegen

Antworten