Re: [Lazarus] Verdict of Lazarus 0.9.29
Op 2010-10-21 19:34, Martin het geskryf: Well I didn't invent it, so I don't know it's original intend. But tabs (or rather the tab key, producing a sequence of spaces) are not only used for indent (as in indent at the start of line) This brings me to my next question (see the fpc-devel mailing list too). If my source code only contains tab( #09) characters, and not spaces, it results in a much smaller file size. Does that also translate to FPC being able to parse that source code faster (less characters to parse), and does that also translate to the SynEdit component working faster (again, less characters to process)? Some form of speed test to compare the difference should be interesting. :-) Regards, - Graeme - -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://opensoft.homeip.net:8080/fpgui/ -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/21/2010 11:03 PM, ABorka wrote: It works here. I am also using session cookies from fpweb and they are working here (windows and ubuntu in VMWare). Even have some working projects on go daddy hosting where I even changed the session dir to be under the cgi program so I can check/delete the session cookie files. Which hosting plan are you using? PS: Just a thought... you are allowing cookies in your browser from that site you are testing with right? Cookies are allowed of cours -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/21/2010 11:04 PM, ABorka wrote: What is your FPC and Lazarus version btw? I use FPC 2.4.0, Lazarus SVN r27800 I tried to use 2.5.1 but hit several snags, so I am not sure whether the test utilized 2.5.1 or not. I will create a separate thread for this issue. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/21/2010 11:03 PM, ABorka wrote: It works here. I am also using session cookies from fpweb and they are working here (windows and ubuntu in VMWare). Even have some working projects on go daddy hosting where I even changed the session dir to be under the cgi program so I can check/delete the session cookie files. Which hosting plan are you using? PS: Just a thought... you are allowing cookies in your browser from that site you are testing with right? Cookies are allowed of course -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/21/2010 11:04 PM, ABorka wrote: What is your FPC and Lazarus version btw? I use FPC 2.4.0, Lazarus SVN r27800 I tried to use 2.5.1 but hit several snags, so I am not sure whether the test utilized 2.5.1 or not. I will create a separate thread for this issue. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On Fri, 22 Oct 2010, patspiper wrote: On 10/21/2010 11:04 PM, ABorka wrote: What is your FPC and Lazarus version btw? I use FPC 2.4.0, Lazarus SVN r27800 I tried to use 2.5.1 but hit several snags, so I am not sure whether the test utilized 2.5.1 or not. I will create a separate thread for this issue. Can you try 2.4.2 RC1 ? Michael. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/21/2010 08:50 PM, Michael Van Canneyt wrote: Well. Normally, /tmp should be writable by all. It is indeed I use session cookies extensively (also ubuntu 10.04) and all works well. I will test the session support demo and report. Michael. Maybe due to using FPC 2.4.0? -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
Forget my last message I upgraded FPC 2.4.1 to 2.5.1 and now this works like it should! -Oorspronkelijk bericht- Van: Birger Jansen bir...@cnoc.nl Verzonden: vr 22-10-2010 11:38 Aan: Lazarus@lists.lazarus.freepascal.org; Onderwerp: [Lazarus] object type: strange behaviour Hi all, I'm converting a project from Delphi to FreePascal. It is a mathematical application that uses records with methods. Since this is not possible in FPC I am trying to convert this base type from record to object: TPoint = object public X,Y,Z: Double; class function Create(const Ax, Ay, Az: Double): TPoint;static; class function Distance(const P1, P2: TPoint): Double;static; end; class function TPoint.Create(const Ax, Ay, Az: Double): TPoint;static; begin Result.X := Ax; Result.Y := Ay; Result.Z := Az; end; class function TPoint.Distance(const P1, P2: TPoint): Double;static; var aX: Double; begin aX := Sqr(P1.X - P2.X) + Sqr(P1.Y - P2.Y) + Sqr(P1.Z - P2.Z); Result := Sqrt(aX); end; So far so good, this works (compiles and produces the desired result): var P1, P2: TPoint; d: Double; begin P1 := TPoint.Create(0,1,1); P2 := TPoint.Create(1,0,0); d := TPoint.Distance(P1, P2); WriteLn(d); ReadLn; end. Now there is a class type that has a TPoint field: TNode = class(TObject) public FCoord: TPoint; { coords } constructor Create(const X, Y, Z: Double); end; And a constructor that sets this point: constructor TNode.Create(const X, Y, Z: Double); begin FCoord.X := X; FCoord.Y := Y; FCoord.Z := Z; end; This works, however this doesn't: constructor TNode.Create(const X, Y, Z: Double); begin FCoord := TPoint.Create(X,Y,Z); end; It fails with an error: Class isn't a parent class of the current class. If I set TNode.FCoord outside the constructor there is no problem at all. Also, when I try to access other methods of TPoint this fails (see UpdateCoord in the full source below). Any idea what causes this behaviour? I included the complete code below for your reference. Kind regards, Birger Jansen program TestProject; {$mode delphi}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes; type { TPoint } TPoint = object public X,Y,Z: Double; class function Create(const Ax, Ay, Az: Double): TPoint; class function Distance(const P1, P2: TPoint): Double; end; { TNode } TNode = class(TObject) public FCoord: TPoint; { coords } constructor Create(const X, Y, Z: Double); procedure UpdateCoord(const Value: TPoint); end; { TPoint } class function TPoint.Create(const Ax, Ay, Az: Double): TPoint; begin Result.X := Ax; Result.Y := Ay; Result.Z := Az; end; class function TPoint.Distance(const P1, P2: TPoint): Double; var aX: Double; begin aX := Sqr(P1.X - P2.X) + Sqr(P1.Y - P2.Y) + Sqr(P1.Z - P2.Z); Result := Sqrt(aX); end; constructor TNode.Create(const X, Y, Z: Double); begin FCoord.X := X; FCoord.Y := Y; FCoord.Z := Z; // this does not work: FCoord := TPoint.Create(X,Y,Z); end; procedure TNode.UpdateCoord(const Value: TPoint); begin // this does not work: if TPoint.Distance(FCoord, Value) 1E-10 then FCoord := Value; end; end; var P1, P2: TPoint; N: TNode; d: Double; begin N := TNode.Create(1,2,3); // this works: N.FCoord := TPoint.Create(1,2,3); P1 := TPoint.Create(0,1,1); P2 := TPoint.Create(1,0,0); d := TPoint.Distance(P1, P2); WriteLn(d); ReadLn; end. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
On Fri, 22 Oct 2010, Birger Jansen wrote: Hi all, I'm converting a project from Delphi to FreePascal. It is a mathematical application that uses records with methods. Since this is not possible in FPC I am trying to convert this base type from record to object: [snip] It fails with an error: Class isn't a parent class of the current class. If I set TNode.FCoord outside the constructor there is no problem at all. Also, when I try to access other methods of TPoint this fails (see UpdateCoord in the full source below). Any idea what causes this behaviour? I included the complete code below for your reference. Sounds like a bug in the compiler. Probably it sees the TPoint.Create as a reference to an 'inherited constructor'. I think you should create a bug report for this. Michael. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
Op 2010-10-22 10:19, Birger Jansen het geskryf: I'm converting a project from Delphi to FreePascal. It is a mathematical application that uses records with methods. Side Note: I still don't get why Borland/Embarcadero did that... records with methods. MvC hinted that it is because .Net has records with methods. But delphi Objects do exactly that, and existed since Turbo Pascal days. In terms of Delphi, what exactly is the difference between a record with methods and a Object? Regards, - Graeme - -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://opensoft.homeip.net:8080/fpgui/ -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] LazBuild does not create the target output directory
Hi, If you build a project which uses an outputdirectory for its executable, e.g. lazarus\examples\bidi\project1.lpi, Lazarus (the IDE) creates the lib\i386-win32 directory, if you build the project for windows. LazBuild doesn't create the output directory. I think it should create it, just like the IDE does, don't you think? Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
TP Objects were implemented as Records with methods years ago - but it wasn't really true OO. There was no concept of a class - and objects were literally nothing BUT a record with methods, only the barest concepts of virtual, private and public methods were present, inherittence was... shoddy at best... It was a poor man's OO before OP gave us proper class-based objects. The whole records-with-methods thing to me sounds like a cheap way of using code that was lying around to add an entry to a featurelist that was technically already there ages ago - and useless. On Fri, Oct 22, 2010 at 1:14 PM, Graeme Geldenhuys graemeg.li...@gmail.com wrote: Op 2010-10-22 10:19, Birger Jansen het geskryf: I'm converting a project from Delphi to FreePascal. It is a mathematical application that uses records with methods. Side Note: I still don't get why Borland/Embarcadero did that... records with methods. MvC hinted that it is because .Net has records with methods. But delphi Objects do exactly that, and existed since Turbo Pascal days. In terms of Delphi, what exactly is the difference between a record with methods and a Object? Regards, - Graeme - -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://opensoft.homeip.net:8080/fpgui/ -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus -- A.J. Venter Founder and lead developer, Kongoni GNU/Linux www.kongoni.co.za www.silentcoder.co.za - Blog -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
Op 2010-10-22 13:22, A.J. Venter het geskryf: TP Objects were implemented as Records with methods years ago I know that, and that is what puzzles me. Borland/Embarcadero introduced in again a little while ago (while TP Objects still exits in the Delphi language), and actually called it a new feature. Puzzling? Regards, - Graeme - -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://opensoft.homeip.net:8080/fpgui/ -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Dual installation of FPC
I have FPC-2.4.0 (fpc.cfg is in /etc) installed on my Ubuntu 10.04 system, and use exclusively Lazarus SVN which I continuously update and build from within the IDE without any issue. I tried to install FPC SVN: I checked out the FPC trunk to ~/Programs/fpc/fpc-svn mkdir ~/Programs/fpc/fpc-2.5.1 cd ~/Programs/fpc/fpc-svn make clean all install INSTALL_PREFIX=~/Programs/fpc/fpc-2.5.1 It created in ~/Programs/fpc/fpc-2.5.1 the following directories: bin: fpc and fpcmkcfg executables are here lib/fpc/2.5.1 (contains ide, msg, and units directories as well as ppc386 executable) share (contains doc directory) cd ~/Programs/fpc/fpc-2.5.1/bin fpcmkcfg fpc.cfg I added to the new fpc.cfg: -Fu~/Programs/fpc/fpc-2.5.1/lib/fpc/$fpcversion/units/$fpctarget -Fu~/Programs/fpc/fpc-2.5.1/lib/fpc/$fpcversion/units/$fpctarget/* -Fu~/Programs/fpc/fpc-2.5.1/lib/fpc/$fpcversion/units/$fpctarget/rtl At this stage, I did not use the new fpc.cfg, but edited instead the old fpc.cfg commenting out the old 3 -Fu lines and adding the new ones. In terminal: export PATH=~/Programs/fpc/fpc-2.5.1/lib/fpc/2.5.1:$PATH export PATH=~/Programs/fpc/fpc-2.5.1/bin:$PATH At this stage, fpc -v shows 2.5.1 I launched Lazarus from the terminal (so that the exported paths persist): Lazarus env options: Compiler path: ~/Programs/fpc/fpc-2.5.1/bin/fpc FPC source directory: ~/Programs/fpc/fpc-svn/ I rebuilt the IDE which complained about lnet package not compiling and asking if I should remove it and showed 2 buttons: Remove and Yes!! (this is a bug). I removed the package manually, and the IDE was built successfully showing 2.5.1 in the About box. The question remains how to handle the paths and fpc.cfg so that Lazarus can use both FPC versions on demand (by changing the compiler path and FPC source directory entries). Stephano -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] fpweb - SessionDir bug?
On 10/22/2010 12:26 PM, Michael Van Canneyt wrote: Can you try 2.4.2 RC1 ? Michael. I finally managed to install 2.5.1 sacrificing 2.4.0 in the process (woes posted in a separate thread), and the sessiondir works like a charm. Apologies for the false alarm -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] LazBuild does not create the target output directory
On Fri, 22 Oct 2010, Vincent Snijders wrote: Hi, If you build a project which uses an outputdirectory for its executable, e.g. lazarus\examples\bidi\project1.lpi, Lazarus (the IDE) creates the lib\i386-win32 directory, if you build the project for windows. LazBuild doesn't create the output directory. I think it should create it, just like the IDE does, don't you think? Definitely, I've bumped into this more than once. Same goes for packages, if memory serves well. Michael. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Codetools fail: unit source directory seem to be missing
Hi, From time to time the find declaration doesn't work in my Lazarus. If I go the Unit info - Source paths, I see this list: C:\lazarus\source\lazarus\components\fpcunit C:\lazarus\source\lazarus\components\synedit\units\i386-win32 C:\lazarus\source\lazarus\ideintf\units\i386-win32 C:\lazarus\source\lazarus\lcl\units\i386-win32 C:\lazarus\source\lazarus\lcl\units\i386-win32\win32 C:\lazarus\source\lazarus\packager\units\i386-win32 Note that for the used packages, e.g. LCL, there are no source directories. In the console window I see: TMainIDE.DoJumpToCodeToolBossError No errormessage TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= TCodeToolManager.DirectoryCachePoolGetUnitFromSet invalid UnitSet= ### TCodeToolManager.HandleException: unit not found: Translations at Line=34 Col=75 in C:\lazarus\source\lazarus\components\fpcunit\guitestrunner.pas How can I have functional code tools again? Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Making tabs smart
On Wednesday 20 October 2010 15:52:22 Martin wrote: if Accept then begin 1 234 5 1 begin of line 2 first word begin 3 end of line 4 next word, but 2 lines above (first line long enough) 5 end of line but 2 lines above I get the feeling of stupid tabs, too, sometimes. The most obvious location is missing. That is between 2 and 3, the indented code after begin. Usually the codetools-based autoindent takes care of it when you press Enter, but not always. To make the tab smarted it could ask for info from codetools about good indentation spots. Another improvement would be to inspect the surrounding code instead of just preceding code. For example if I want to align comments: s1 := MyFunc1(); // Comment at the column I want it to be. s2 := MyFunc2();| -- cursor Now the tab is smart, good. But if I have: s1 := MyFunc1();| -- cursor s2 := MyFunc2(); // Comment at the column I want it to be. The tab became stupid again. This smart tab feature could be integrated with codetools indentation feature somehow. There is an issue of the GUI settings being on different pages. Maybe it indicates that the design is not perfect either. Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] operator overloading
Hi, In Delphi you can overload the Explicit operator. This makes is possible to have a type TTypeX and TTypeY and cast one into the other. To do that, implement an operator overloader: operator Explicit(const AValue: TTypeX): TTypeY. // implement converstio from TTypeX to TTypeY. Then you can do stuff like var tx: TTypeX; ty: TTypeY; begin tx := TTypeX.Create; ty := TTypeY(tx); end; Is something like this possible in FPC? Kind regards, Birger -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] operator overloading
2010/10/22 Birger Jansen bir...@cnoc.nl: Hi, In Delphi you can overload the Explicit operator. This makes is possible to have a type TTypeX and TTypeY and cast one into the other. To do that, implement an operator overloader: operator Explicit(const AValue: TTypeX): TTypeY. // implement converstio from TTypeX to TTypeY. Then you can do stuff like var tx: TTypeX; ty: TTypeY; begin tx := TTypeX.Create; ty := TTypeY(tx); end; Is something like this possible in FPC? I don't know. If you don't get an answer, it may be useful to ask on the fpc-pascal mailing list, that is a better place for such questions: http://lists.freepascal.org/mailman/listinfo/fpc-pascal/ Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] operator overloading
overload the := operator instead. Search for the free pascal docs on operator overloading. -- Felipe Monteiro de Carvalho -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Release schedule and policy
Hi I would like to suggest again a new release policy. It would have timely releases, meaning a new release after a fixed time period, at a predefined date. Some projects have a 3 months cycle but a 6 months would be enough for Lazarus because of more limited resources. Every release would be basically cut out from trunk. It would be verified to compile and to work with some big test projects. Nothing else. Then it could be called release x rc1. After one week testing and maybe applying fixes from trunk, it would become the release x (without rc1). After that there would be maintenance releases in a timely fashion (or when needed). The important point is that emphasis would move from the release itself to its maintenance. The challenge is to find all needed fixes for the maintenance and to apply them. Basically all commits in trunk could be classified as feature or bug-fix. Bug-fixes should be applied also to maintenance branches. The division is not always clear. Who classifies them, the author of the commit or the branch maintainer? To support this process, any new big feature should stay in its own branch first and be merged to trunk some time after a release (not just before a release). I could help somehow in this process. I believe that lack of resources is a problem when implementing such a model. The current situation is frustrating to everybody. Lazarus is evolving and most users must use the development version because it is better than the release version. Some people explain bugs in release version which are fixed over half a year ago. It is frustrating also to Lazarus developers because the release can happen only when all bugs are fixed. That is not realistic as we all know. Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
2010/10/22 Juha Manninen juha.mannine...@gmail.com: Hi I would like to suggest again a new release policy. It would have timely releases, meaning a new release after a fixed time period, at a predefined date. Some projects have a 3 months cycle but a 6 months would be enough for Lazarus because of more limited resources. Every release would be basically cut out from trunk. It would be verified to compile and to work with some big test projects. Nothing else. Then it could be called release x rc1. After one week testing and maybe applying fixes from trunk, it would become the release x (without rc1). After that there would be maintenance releases in a timely fashion (or when needed). The important point is that emphasis would move from the release itself to its maintenance. The challenge is to find all needed fixes for the maintenance and to apply them. Basically all commits in trunk could be classified as feature or bug-fix. Bug-fixes should be applied also to maintenance branches. The division is not always clear. Who classifies them, the author of the commit or the branch maintainer? To support this process, any new big feature should stay in its own branch first and be merged to trunk some time after a release (not just before a release). I could help somehow in this process. I believe that lack of resources is a problem when implementing such a model. The current situation is frustrating to everybody. Lazarus is evolving and most users must use the development version because it is better than the release version. Some people explain bugs in release version which are fixed over half a year ago. It is frustrating also to Lazarus developers because the release can happen only when all bugs are fixed. That is not realistic as we all know. What stops you doing this? Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Lazarus IDE and fpc.cfg location
The FPC user manual states the compiler will look for a configuration file fpc.cfg in the following places: • Under UNIX (such as LINUX) 1. The current directory. 2. Your home directory, it looks for .fpc.cfg. 3. The directory specified in the environment variable PPC_CONFIG_PATH, and if it is not set, it will look in the etc directory above the compiler directory. (For instance, if the compiler is in /usr/local/bin, it will look in /usr/local/etc) 4. The directory /etc. • Under all other OSes: 1. The current directory. 2. If it is set, the directory specified in the environment variable PPC_CONFIG_PATH. 3. The directory where the compiler is. whereas the IDE looks in the following places: 1. $HOME/.fpc.cfg 2. compiler path + fpc.cfg 3. working directory + fpc.cfg 4. /etc/fpc.cfg (on Unix only) 1. Shouldn't the IDE follow what the FPC user manual states? In particular, compilerpath/../etc vs compilerpath 2. I tried to put fpc.cfg in the fpc binary directory, but the IDE did not detect it. Is that a bug? -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] JEDI Code Format
Hi Is the JEDI Code Formatter in Lazarus Tools menu already supposed to format code, or is it still under construction? I only get a parse tree and no option to modify the code. http://koti.phnet.fi/juhamann/Lazarus/JCF_Parse_Tree.jpg Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Dual installation of FPC
On 10/22/2010 02:48 PM, patspiper wrote: In terminal: export PATH=~/Programs/fpc/fpc-2.5.1/lib/fpc/2.5.1:$PATH export PATH=~/Programs/fpc/fpc-2.5.1/bin:$PATH It seems the 2nd export is not necessary -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
I took the liberty to reorder your statements On 22/10/2010 18:35, Juha Manninen wrote: I would like to suggest again a new release policy. It would have timely releases, meaning a new release after a fixed time period, at a predefined date. Some projects have a 3 months cycle but a 6 months would be enough for Lazarus because of more limited resources. I could help somehow in this process. I believe that lack of resources is a problem when implementing such a model. I guess: yes, you hit the nail on the head. To support this process, any new big feature should stay in its own branch first and be merged to trunk some time after a release (not just before a release). I am not sure this is a goof idea. 1) Who defines what is a major feature? 2) we do not want 20 or 30 different branches? 3) New features would take longer, since they were no longer tested. Of course, the end-user a forced tester would anyway no longer be there (since they could stick to releases), but at least other developers would still use all new features. Personally, I don't mind the occasionally issue with the IDE caused by somone elses new work. I do the same sometimes, and I am always glad to get feedback as soon as possible, as it makes it much easier to fix the issue. I believe, trunk should stay open for all work (extremely experimental work can and should go into branches, as has in the past). Then you would have one or 2 maintained branches: a) the fixes branch as currently b) the next release branch, which is based on fixes, but also gets features merged as soon as they are deemed stable. Some end-users may even want to stick with this. And those 2 branches, are what will take a lot of work. If someone is willing to do that work, then I guess that's all it takes. Every release would be basically cut out from trunk. It would be verified to compile and to work with some big test projects. Nothing else. Then it could be called release x rc1. After one week testing and maybe applying fixes from trunk, it would become the release x (without rc1). After that there would be maintenance releases in a timely fashion (or when needed). See above. There are also some existing test cases. They could even be used on the b branch from above, on every merge..., but again: maintenance resources. The important point is that emphasis would move from the release itself to its maintenance. The challenge is to find all needed fixes for the maintenance and to apply them. Basically all commits in trunk could be classified as feature or bug-fix. Bug-fixes should be applied also to maintenance branches. The division is not always clear. Who classifies them, the author of the commit or the branch maintainer? Well I think, the commiter can flag them with some sort of hint, the maintainer decides. Depending on how much work the maintainer wants to spent, I would suggest, that each fix, should stay one or two weeks in trunk, before being merged anywhere else. That way, if it breaks something else we may spot it before merging it. Or it first merges into b-next-release, and if no complaints are received, then into fixes my 2.5 cents Martin -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
On Friday 22 October 2010 20:51:54 Vincent Snijders wrote: What stops you doing this? It would be a competing release system if I start to do it by myself. Besides it is a big job and needs support from the whole development chain. Namely I am thinking the use of branches for new features, and deciding which trunk commits should be applied to maintenance releases. Maybe I should ask from other projects how they coordinate things. Or maybe somebody here knows. Also, there should be a recommended release for users and for Linux distro maintainers. The very latest release would not be the recommended one in that model. Vincent Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
On Fri, 22 Oct 2010, Juha Manninen wrote: On Friday 22 October 2010 20:51:54 Vincent Snijders wrote: What stops you doing this? It would be a competing release system if I start to do it by myself. Besides it is a big job and needs support from the whole development chain. Namely I am thinking the use of branches for new features, and deciding which trunk commits should be applied to maintenance releases. Trunk should be used for this, otherwise it will not be tested thoroughly. I don't want to start searching for branches that contain new things, and what if 2 features I want to test are in different branches ? I am not a chimpansee, jumping from branch to branch, after all... :) Michael. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Dual installation of FPC
Le 22/10/2010 13:48, patspiper a écrit : The question remains how to handle the paths and fpc.cfg so that Lazarus can use both FPC versions on demand (by changing the compiler path and FPC source directory entries). The best is to put all you fpcs under a root directory. Then in you ~/.fpc.cfg, just use $FPCVERSION so that it matches all versions. For example : # searchpath for units and other system dependent things -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET/* -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET/rtl Thierry B. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
[Lazarus] Logging class or some kind of writeln for Lazarus
Are there some FPC/Lazarus class for logging events? -- Frank Church === http://devblog.brahmancreations.com -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
Graeme Geldenhuys schrieb: I still don't get why Borland/Embarcadero did that... records with methods. MvC hinted that it is because .Net has records with methods. But delphi Objects do exactly that, and existed since Turbo Pascal days. In terms of Delphi, what exactly is the difference between a record with methods and a Object? Delphi Objects should only be used with TP7 member types. The initialization and finalization, required for managed types (AnsiString...), is broken in derived Objects, since the introduction of these types. Because it were easy to fix that bug (like with nested records), it seems to be a purely political decision, to deprecate the Object type for a real reason. Note that Object types with no ancestors are properly initialized and finalized... DoDi -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Logging class or some kind of writeln for Lazarus
On Fri, 22 Oct 2010, Frank Church wrote: Are there some FPC/Lazarus class for logging events? Several: - TEventLog writes to the system log or file. Installed by default on tab System. - I think there is also multilog in Lazarus CCR ? - tiOPF contains tiLog. It writes to file, but is extensible. Michael.-- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
On Friday 22 October 2010 21:08:27 Martin wrote: To support this process, any new big feature should stay in its own branch first and be merged to trunk some time after a release (not just before a release). I am not sure this is a goof idea. 1) Who defines what is a major feature? 2) we do not want 20 or 30 different branches? No, my idea was that only a new feature which is guaranteed to be broken at the time of next release date, is kept in a branch until the release. Then it can be merged and tested by all trunk users. It will make it into the next release. For example if you start a new Enhanced Smart Tabs feature a month before a release, and it will surely mess everybody's code at that moment, then it should go to a branch. There would not be very many such branches. It would just be a compromise between the current situation when everybody must use the development version and suffer from its broken stuff, and the goal to make a perfect release when all bugs are fixed. [...] Then you would have one or 2 maintained branches: a) the fixes branch as currently b) the next release branch, which is based on fixes, but also gets features merged as soon as they are deemed stable. Some end-users may even want to stick with this. And those 2 branches, are what will take a lot of work. If someone is willing to do that work, then I guess that's all it takes. I had a different idea here (if I understood your text right). The next release would be based on trunk only. It means it would not be stable and well tested. Later it would have maintenance-patches and -releases and would become more stable. Having a certainly broken feature in a branch and excluding it from release tries to make the initial release more stable than the trunk currently is. The release maintenance branches would get only bug fixes, no new features. This is all about finding a good compromise. The current situation is not good. Well I think, the commiter can flag them with some sort of hint, the maintainer decides. That would be good. Depending on how much work the maintainer wants to spent, I would suggest, that each fix, should stay one or two weeks in trunk, before being merged anywhere else. That way, if it breaks something else we may spot it before merging it. Makes sense. Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Dual installation of FPC
On 10/22/2010 09:39 PM, Thierry B. wrote: The best is to put all you fpcs under a root directory. Then in you ~/.fpc.cfg, just use $FPCVERSION so that it matches all versions. For example : # searchpath for units and other system dependent things -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET/* -Fu/home/thierrybo/Sys/local/opt/fpc/$FPCVERSION/lib/fpc/$FPCVERSION/units/$FPCTARGET/rtl Thierry B. That would require using FPC/Lazarus with root privileges...not recommended I solved the fpc.cfg issue anyway by having the 2.4.0 config file in /etc, and 2.5.1's config file in ~/.fpc.cfg However, another idea just came to my mind: Can #IFDEF within fpc.cfg be used to test the value of $FPCVERSION? This would allow conditional paths. -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] TExtJsJSonDataFormatter set ContentType
On Fri, 22 Oct 2010, Leonardo M. Ramé wrote: I found TExtJsJsonDataFormatter has a protected method GetDataContentType that returns 'text/html'. How can I change that value without inheriting from this class? I want to return 'text/json;charset=iso-8859-1'. Currently you can't. I can implement a property for this, and if it's empty, return text/html. You should be careful what you return here. Not all types are accepted for some reason. Michael.-- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Release schedule and policy
On Friday 22 October 2010 21:19:20 Michael Van Canneyt wrote: Trunk should be used for this, otherwise it will not be tested thoroughly. I don't want to start searching for branches that contain new things, and what if 2 features I want to test are in different branches ? See my reply to Martin. A branch would be only for certainly broken features at the time of release, making the initial release little more stable than the trunk is now. The branches could also be left out from the plan if they are a problem. The main idea was a timely release + its maintenance. I think most people agree that the current situation is not good. People are waiting for a perfect release while in practice using the unstable development version? I am not a chimpansee, jumping from branch to branch, after all... :) :-) Juha -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Logging class or some kind of writeln for Lazarus
2010/10/22 Frank Church vfcli...@gmail.com: Are there some FPC/Lazarus class for logging events? Some kind of writeln is DebugLn: http://wiki.freepascal.org/Lazarus_Faq#How_can_I_see_debug_output.3F Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Lazarus IDE and fpc.cfg location
2010/10/22 patspiper patspi...@yahoo.com: The FPC user manual states the compiler will look for a configuration file fpc.cfg in the following places: • Under UNIX (such as LINUX) 1. The current directory. 2. Your home directory, it looks for .fpc.cfg. 3. The directory specified in the environment variable PPC_CONFIG_PATH, and if it is not set, it will look in the etc directory above the compiler directory. (For instance, if the compiler is in /usr/local/bin, it will look in /usr/local/etc) 4. The directory /etc. • Under all other OSes: 1. The current directory. 2. If it is set, the directory specified in the environment variable PPC_CONFIG_PATH. 3. The directory where the compiler is. whereas the IDE looks in the following places: 1. $HOME/.fpc.cfg 2. compiler path + fpc.cfg 3. working directory + fpc.cfg 4. /etc/fpc.cfg (on Unix only) 1. Shouldn't the IDE follow what the FPC user manual states? In particular, compilerpath/../etc vs compilerpath The IDE doesn't use the .fpc.cff, the called compiler does. So, it does follow the FPC user manual as much as it can. 2. I tried to put fpc.cfg in the fpc binary directory, but the IDE did not detect it. Is that a bug? Maybe, but then not in Lazarus, but in the compiler. Do you actually use the fpc binary in the directory of fpc.cfg? Is that compiler set in the environment options? Does it work if you use that compiler from the command line yourself? Vincent -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Lazarus IDE and fpc.cfg location
On 10/22/2010 11:31 PM, Vincent Snijders wrote: 2010/10/22 patspiperpatspi...@yahoo.com: The FPC user manual states the compiler will look for a configuration file fpc.cfg in the following places: • Under UNIX (such as LINUX) 1. The current directory. 2. Your home directory, it looks for .fpc.cfg. 3. The directory specified in the environment variable PPC_CONFIG_PATH, and if it is not set, it will look in the etc directory above the compiler directory. (For instance, if the compiler is in /usr/local/bin, it will look in /usr/local/etc) 4. The directory /etc. • Under all other OSes: 1. The current directory. 2. If it is set, the directory specified in the environment variable PPC_CONFIG_PATH. 3. The directory where the compiler is. whereas the IDE looks in the following places: 1. $HOME/.fpc.cfg 2. compiler path + fpc.cfg 3. working directory + fpc.cfg 4. /etc/fpc.cfg (on Unix only) 1. Shouldn't the IDE follow what the FPC user manual states? In particular, compilerpath/../etc vs compilerpath The IDE doesn't use the .fpc.cff, the called compiler does. So, it does follow the FPC user manual as much as it can. 2. I tried to put fpc.cfg in the fpc binary directory, but the IDE did not detect it. Is that a bug? Maybe, but then not in Lazarus, but in the compiler. Do you actually use the fpc binary in the directory of fpc.cfg? Is that compiler set in the environment options? Does it work if you use that compiler from the command line yourself? Vincent I was experimenting on how to install FPC 2.5.1 alongside of 2.4.0, the config file of which is /etc/fpc.cfg. Putting fpc.cfg in the fpc binary directory did not work whereas it worked when placed in the home folder (.fpc.cfg). I deduced the sequence above from the following excerpt from CheckCompilerOpts.pas (part of the IDE): // check $HOME/.fpc.cfg Dir:=GetEnvironmentVariableUTF8('HOME'); if Dir'' then begin Filename:=CleanAndExpandDirectory(Dir)+'.fpc.cfg'; AddFile(Filename); end; // check compiler path + fpc.cfg Dir:=ExtractFilePath(CompilerFilename); Dir:=ReadAllLinks(Dir,false); if Dir'' then begin Filename:=CleanAndExpandDirectory(Dir)+'fpc.cfg'; AddFile(Filename); end; // check working directory + fpc.cfg Dir:=ExtractFilePath(Options.BaseDirectory); Dir:=ReadAllLinks(Dir,false); if Dir'' then begin Filename:=CleanAndExpandDirectory(Dir)+'fpc.cfg'; AddFile(Filename); end; // check /etc/fpc.cfg {$IFDEF Unix} Dir:=ExtractFilePath(CompilerFilename); Dir:=GetEnvironmentVariableUTF8('HOME'); if Dir'' then begin Filename:='/etc/fpc.cfg'; AddFile(Filename); end; {$ENDIF} -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] Lazarus IDE and fpc.cfg location
Am 22.10.2010 22:53, schrieb patspiper: 3. The directory specified in the environment variable PPC_CONFIG_PATH, and if it is not set, it will look in the etc directory above the compiler directory. (For instance, if the compiler is in /usr/local/bin, it will look in /usr/local/etc) I was experimenting on how to install FPC 2.5.1 alongside of 2.4.0, the config file of which is /etc/fpc.cfg. Putting fpc.cfg in the fpc binary directory did not work whereas it worked when placed in the home folder (.fpc.cfg). Note, the compiler isn't fpc but ppc386/ppcx64. so you have to put the fpc.cfg to basedir/lib/fpc/etc. I have so on my ubuntu. regards Ingo -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] JEDI Code Format
On 22.10.2010 20:02, Juha Manninen wrote: Hi Is the JEDI Code Formatter in Lazarus Tools menu already supposed to format code, or is it still under construction? I only get a parse tree and no option to modify the code. It has its own parser (separate sourceforge project) and sometimes cannot parse new or seldom used language features or dialect variations that it does not (yet) know or that trigger a bug in its parser. I have seen this happen already. Try to identify the offending language construct that it cannot parse and file a bug report. Bernd -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] object type: strange behaviour
On Sat, Oct 23, 2010 at 06:55, Hans-Peter Diettrich drdiettri...@aol.com wrote: Delphi Objects should only be used with TP7 member types. The initialization and finalization, required for managed types (AnsiString...), is broken in derived Objects, since the introduction of these types. Because it were easy to fix that bug (like with nested records), it seems to be a purely political decision, to deprecate the Object type for a real reason. Note that Object types with no ancestors are properly initialized and finalized... I hope FPC does not have this bug? -- Alexander S. Klenin -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus