Es kompiliert nicht alles ( inline )

Für Fragen rund um die Ide und zum Debugger
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Es kompiliert nicht alles

Beitrag von Mathias »

Ich habe das Ganze jetzt mit SuSE-Linux in der VirtualBox getestet, das gleiche Problem.

Scheinbar wird Unit2 trotz Änderung nicht neu kompiliert.

Wen ich die Ausgabe vom Compiler leses, da wird unit2.pas compiliert.
Mit Shift-F9 wird der Fehler dann korrigiert

Wen ich das mache compiliert er bei mir auch richtig.

Ich habe verschiedene Lazarus-Versionen probiert, immer das gleiche.
Sogar LazAndroid4, auf dem FreePascal 2.7.1 installiert ist.

Code: Alles auswählen

[TMainIDE.DoRunProject] A
TMainIDE.DoInitProjectRun A True 0
TMainIDE.DoInitProjectRun B
TMainIDE.CheckIfProjectNeedsCompilation  Src has changed Project /home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/unit2.pas
TCompiler.Compile WorkingDir="/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/" CompilerFilename="/usr/bin/fpc" CompilerParams=" -MObjFPC -Scghi -Os3 -Xs -vewnhi -Fi/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/lib/i386-linux -Fl/opt/gnome/lib -Fu/usr/lib/lazarus/lcl/units/i386-linux/gtk2 -Fu/usr/lib/lazarus/lcl/units/i386-linux -Fu/usr/lib/lazarus/components/lazutils/lib/i386-linux -Fu/usr/lib/lazarus/packager/units/i386-linux -Fu/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/ -FU/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/lib/i386-linux/ -l -dLCL -dLCLgtk2 project1.lpr"
[TCompiler.Compile] CmdLine="/usr/bin/fpc  -MObjFPC -Scghi -Os3 -Xs -vewnhi -Fi/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/lib/i386-linux -Fl/opt/gnome/lib -Fu/usr/lib/lazarus/lcl/units/i386-linux/gtk2 -Fu/usr/lib/lazarus/lcl/units/i386-linux -Fu/usr/lib/lazarus/components/lazutils/lib/i386-linux -Fu/usr/lib/lazarus/packager/units/i386-linux -Fu/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/ -FU/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/lib/i386-linux/ -l -dLCL -dLCLgtk2 project1.lpr"
Hint: Start of reading config file /etc/fpc.cfg
Hint: End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 2.6.2 [2013/03/17] for i386
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling project1.lpr
Compiling unit2.pas
Compiling resource /home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/lib/i386-linux/project1.or
Linking project1
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
42 lines compiled, 7.6 sec
2 hint(s) issued
[TCompiler.Compile] end
TMainIDE.DoInitProjectRun ProgramFilename=/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/project1
[TDebugger.SetFileName] "/home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/project1"
[TMainIDE.DoRunProject] B
[TMainIDE.DoRunProject] END
PR: /home/tux/Public/DATEN/Programmierung/Lazarus/FehlerTest/project1
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Es kompiliert nicht alles

Beitrag von wp_xyz »

Komischerweise, wie Du schon schriebst, nur mit inline!

Und auch nur, wenn man etwas an der inline-Routine ändert - Änderungen außerhalb führen zur Neuübersetzung.

Ich denke, das wäre schon einen Bugreport wert. Aber dann mit komplettem Projekt inkl. lfm, lpi und lpr (als zip), man sollte niemandem zumuten, sich das Test-Projekt mit Copy & Paste zusammenklicken zu müssen.

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

Re: Es kompiliert nicht alles

Beitrag von Mathias »

Ich denke, das wäre schon einen Bugreport wert. Aber dann mit komplettem Projekt inkl. lfm, lpi und lpr (als zip), man sollte niemandem zumuten, sich das Test-Projekt mit Copy & Paste zusammenklicken zu müssen.

So wie es aussieht, hat Michel die Arbeit mit dem Zip schon abgenommen. :)

Was ich noch festgestellt habe, es ist Egal ob ich inline im interface oder/und im implementation Teil schreibe.

Ich wollte das Ganze unter Delphi Testen, aber mein altes Delphi 6 kennt kein inline.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Es kompiliert nicht alles

Beitrag von Michl »

Willst Du den Eintrag machen, soll ich?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Es kompiliert nicht alles

Beitrag von wp_xyz »

Ging das an mich? Wenn ja: mach du - danke!

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Es kompiliert nicht alles

Beitrag von Michl »

wp_xyz hat geschrieben:Ging das an mich? Wenn ja: mach du - danke!
Hatte zwar Finder Mathias gemeint, trotzdem danke der Nachfrage - red ja auch gern mit Dir :)

Habs jetzt trotzdem gemeldet: http://bugs.freepascal.org/view.php?id=25797

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

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

Re: Es kompiliert nicht alles

Beitrag von Mathias »

Habs jetzt trotzdem gemeldet:

Danke, da ich kein englisch kann währe es sowieso schwierig gewesen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Es kompiliert nicht alles

Beitrag von Mathias »

Noch ein kleine Nachtrag:

Wen ich diese Kompilerschalter stelle, dann kompiliert er ohne Fehler {$inline off} , nur macht dann inline keinen Sinn mehr, wen es ausgeschaltet ist.

PS: Hat es schon ein Echo vom FPC-Team gegeben ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Es kompiliert nicht alles

Beitrag von Michl »

Eine rege Diskussion gibt es schon - ist auch nicht der erste Bugeintrag dazu - ein performanten Lösungsansatz leider noch nicht. Siehe Bugeintrag...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Es kompiliert nicht alles

Beitrag von wp_xyz »

Hat es schon ein Echo vom FPC-Team gegeben

Kannste selbst prüfen, indem du oben auf den Link in Michls Posting vom 28.2. klickst.

Ich weiß, du hast geschrieben, dass du nicht gut Englisch kannst, aber vielleicht wäre das eine gute Gelegenheit, zumindest die Grundkenntnisse wieder aufzufrischen. Ich meine jetzt nicht "pauken", sondern einfach "nachdenken", man muss ja nicht jedes Wort verstehen: in dem Feld "Status" steht "confirmed" - selbst nur mit "Lazarus"-Englisch solltest du verstehen können, was das heißt...
Zuletzt geändert von wp_xyz am Do 20. Mär 2014, 23:20, insgesamt 3-mal geändert.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Es kompiliert nicht alles

Beitrag von Michl »

...fast ne Punktlandung :D ...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Es kompiliert nicht alles

Beitrag von wp_xyz »

Du hattest mal wieder die Nase vorn...

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

Re: Es kompiliert nicht alles

Beitrag von Mathias »

So wie es aussieht, ist das Problem gelöst, mit dem neusten Lazarus 1.3 tritt der Fehler nicht mehr auf.

Obwohl hier bei Resulotion open steht.

http://bugs.freepascal.org/view.php?id=25797
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Es kompiliert nicht alles

Beitrag von Mathias »

Habe ich da wieder ein Bug mit inline gefunden

Dieser Code:

Code: Alles auswählen

procedure TBackGround.Draw; inline;
begin
  inherited Draw(Matrix);
end;

macht nicht das gleiche wie dieser:

Code: Alles auswählen

procedure TBackGround.Draw;
begin
  inherited Draw(Matrix);
end;


Ohne Inline funktioniert mein Programm.


Der Auschnitt ist aus einem Code mit mehreren Nachkommen eine Classe.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Es kompiliert nicht alles

Beitrag von Christian »

Danke für die Info, die gehört aber in nen Bugreport. Wenn die hier jemand wahrnimmt ists Zufall.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten