OK, this thread is purely to set the record straight on something. Many claim that native Delphi is portable because it compiles on Lazerus using the FreePascal compiler underneath. They also claim that Delphi .NET shouldn't be used because it's not portable outside Windows.
Both are wrong.
Delphi and FreePascal are both ObjectPascal languages (yes, there are multiple incompatible variations of ObjectPascal like Apple's Pascal), and they both implement the same interfaces for their libraries (the VCL).
But they are not the same language. Even when you switch FreePascal code to Delphi mode using the preprocessor directive, it isn't 100% compatible with Delphi code. Nor is it the 'final goal' of the FreePascal group. Thus, they are different languages. FreePascal is portable, but Delphi isn't. So if you want portable ObjectPascal code, you can't use Delphi -- But you can use FreePascal, seeing as it also works on Windows.
Delphi .NET is portable due to Mono, a very complete .NET implementation for multiple OSes. In fact, it's on Ubuntu Linux by default. As long as you stick to standard .NET libraries, that is.
So, in summery:
Both are wrong.
Delphi and FreePascal are both ObjectPascal languages (yes, there are multiple incompatible variations of ObjectPascal like Apple's Pascal), and they both implement the same interfaces for their libraries (the VCL).
But they are not the same language. Even when you switch FreePascal code to Delphi mode using the preprocessor directive, it isn't 100% compatible with Delphi code. Nor is it the 'final goal' of the FreePascal group. Thus, they are different languages. FreePascal is portable, but Delphi isn't. So if you want portable ObjectPascal code, you can't use Delphi -- But you can use FreePascal, seeing as it also works on Windows.
Delphi .NET is portable due to Mono, a very complete .NET implementation for multiple OSes. In fact, it's on Ubuntu Linux by default. As long as you stick to standard .NET libraries, that is.
So, in summery:
- Delphi = Not Portable
- Delphi .NET = Portable
- FreePascal = Portable
- Delphi =/= FreePascal
