6 ms·
Programming with Lazarus, a Brief Introduction
- AnIdiotOnTheNet 8y agoI've been playing around with Lazarus recently. It's a pretty nice way to knock up a GUI, and it compiles to a single executable, which is great. Which makes it kind of ironic that Lazarus itself is such a giant pain to use as a portable application. The Windows installer is packaged in such a way as to make it a pain to extract without running it, and even then I had to resort to Cameyo to make it work reasonably. Seriously, if anyone from the project is reading this, can you put some effort toward making this not such a giant pain? I've also discovered that I'm not really a fan of Free Pascal as a language. Particularly maddening is not being able to assign an intermediate value to a variable in order to make code more clear without first declaring it at the top of the procedure. Overall though, I really like it.
- jplayer01 8y agoAfter Python and Java, Pascal feels unsettling. All the code examples I've seen so far put hundreds of lines in a single main file, making it incredibly difficult to read and understand. I'm not sure if I'm approaching it incorrectly or what (and I'm open to advice on how to read Pascal code and how to organize my own).
- sysrpl 8y agoYou don't need to put everything in one file. Just add a new unit (a source code file), and separate your code by functional use into those distinct units. If you have enough units that are all related and you want to separate the code even further, put them into their own packages and import them into other projects. You can be disorganized in any programming environment. It's your job as the programmer to name things correctly and break apart common code or task into their own reusable compartments.
- sysrpl 8y agoRegarding the installers, try this page that makes installing much easier: https://www.getlazarus.org/setup/?download https://www.getlazarus.org/setup/?download That is the purpose of the get lazarus website, to make installing and customization easier. Regarding variable declaration, part of the Free Pascal design is that you must declare things first before you can use them. Declaration must be separated from implementation code. This means you must all declare variables, with their types, before you use them in a statement. var S: string; begin WriteLn('Please enter you name:'); S := ReadLn(); WriteLn('Hello ' + S); end;
- AnIdiotOnTheNet 8y ago>Regarding the installers, try this page that makes installing much easier Ugh. So my choices are: use the installer, or build from source. How Linux of them. You apparently don't get this, but I don't actually want an installer to make it "easy". I'd rather it be simple. Give me a damned zip file containing the program and its dependencies, and make the tools support relative paths (or environment variables). Is that too much to ask? Yes, apparently. > Regarding variable declaration, part of the Free Pascal design is that you must declare things first before you can use them. Declaration must be separated from implementation code. Yes, I know. That's precisely what I don't like about it. It disincentivizes using variables to hold intermediate values for clarity purposes.
- srean 8y agoI found your comment gratingly entitled, snarky and rude to someone who was only trying to help with something you are getting for free. I doubt if that attitude earns you a lot of help and respect.
- AnIdiotOnTheNet 8y agoHe literally told me nothing I didn't already demonstrate knowledge of in the post he replied to, implying he didn't actually read it. Providing "help" when you don't even take the time to understand the problem is not helping.
- unnouinceput 8y agoDelphi 10.3, which is paid I know, and I know you know too, nevertheless has the possibility just like in C/C++ to declare the variables on the fly. Delphi before that didn't, it is a language feature just introduced.
- neurotrace 8y agoWould it be wrong to say this is essentially a cross-platform implementation of WinForms? It reminds me of the workflow for WinForms.
- jplayer01 8y agoNot quite. Lazarus (which is just an IDE for Free Pascal), or rather the LCL (Lazarus Component Library), wraps native GUIs like Win32, Gtk, Qt and Carbon. It just provides a similar interface for visually designing your own GUI out of common components.
- Riverheart 8y agoSo kind of like wxwidgets?
- sysrpl 8y agoYes, you are wrong. The control library that allows this is based on Delphi's VCL or Visual Class Library. The VCL was design in large part by Anders Hejlsberg, the creator of C#. Hejlsberg helped design the VCL before he worked at Microsoft. When Hejlsberg was hired away from Borland to work at Microsoft his first placement was to work on Visual J++. Microsoft was sued and lost because they were incompatible extensions to Java. These extensions were designed in part to support their own VCL like framework for Java, and resulted in a fragmentation the Java community, or so the Java suit claimed. After the Visual J++ debacle, Microsoft decided to create their own Java like ecosystem, which is what .net was or is. The first few iterations were made quickly and featured Winforms as you mentioned. Winforms was very much influenced or based on the design of the VCL, with the help of Hejlsberg. The Lazarus library (LCL) has the mostly the same class structure and same class methods as the VCL. So in summation, Winforms was inspired largely by the VCL, and the LCL is a close copy of the VCL.
- neurotrace 8y agoCool, I had no idea! So it'd be more accurate to say that this is a cousin to the predecessor to WinForms haha.