tags:

views:

555

answers:

6

Back when I used Delphi (win32), programs made with it would run on windows, with no need to install any runtime libraries like .NET or Java(?). Is this still the case? If not, which language can do that?

+2  A: 

It is still the case for the "normal" Delphi, i.e. Delphi for Win32. There is also Delphi Prism which targets .NET for which it is obviously not the case.

Ulrich Gerhardt
One could discuss if Prism is even Delphi.
Marco van de Voort
Good point. But Prism is the Pascal.Net thing. Differently from Delphi.Net, it's built from scratch. For me, it's Delphi only from a language point of view - as it is a plugin for VS and other .NET IDEs (MonoDevelop).
Fabricio Araujo
interesting .... what IDE do you recommend for Delphi Win32 development ... testing and academic use ... and of their any opensource IDEs
CoDeR
Delphi has only one IDE, and the compiler itself is available only with the Delphi IDE. The VCL (the Delphi Win32 framework) designer is strongly tied to the IDE. FreePascal+Lazarus is an open source Delphi-like alternative, although it's not Delphi "fully".
ldsandon
I don't see Prims as a Pascal.NET thing. I see it as C# with some Wirthian (not even Pascal) syntax mixin.
Marco van de Voort
ldsandon: more fully so than Delphi 1, Delphi PHP or Delphi Prism
Marco van de Voort
I agree for Delphi Prism and even more so for Delphi for PHP, but Delphi 1?? Of course Delphi 1 had far less features.... but it was version 1!
ldsandon
It missed all stuff I considered core features. Like ansistrings. In general it was quite a painful migration. But maybe Prism or PHP is indeed to strong. Maybe it is more a Delphi.NET. It at least has in common that the avg api and pointer code is not compatible with it:-)
Marco van de Voort
+2  A: 

Currently there's Delphi for Win32 available, which doesn't require any runtimes and Delphi Prism (for .NET application development). Delphi for 64-bit native Windows development is promised next year.

joekoyote
so, the answer is yes, Delphi for Win32 still generates standalone native executable files, but does the latest Delphi version include Delphi for Win32?
BlackTigerX
There's no such thing as "latest delphi version". You can buy a license for Delphi_for_win32, or for Delphi_Prism, or for Embarcadero RAD Studio XE (which includes both Delphi for Win32 and Delphi Prism).
joekoyote
Embarcadero is working a lot with native Win32 Delphi, and this will not disappear any time soon.
Andreas Rejbrand
The latest Delphi version **is** Delphi XE for Win32
ldsandon
@ldsandon Nope. There's Delphi for Win32 and Delphi for .NET, which is Delphi Prism as of now. Two independent language branches, and not knowing the history one couldn't say what Delphi is more Delphi.
joekoyote
Just because BorCodeDero created confusion slapping the name Delphi on whatever it could (Delphi for PHP, Delphi Prims). But if you just buy Delphi alone, what you get *is* Delphi for Win32 (sadly, not Win64 yet)
ldsandon
Exactly. You buy "Delphi for Win32". You don't buy "Delphi" cause like it or not, Delphi now denotes the group of products, not a single product anymore.
joekoyote
Oh, and prism and delphi.net are two separate codebases (and languages)
Marco van de Voort
You buy "Delphi" (http://www.embarcadero.com/products/delphi) and get Delphi for Win32. Noone calls it Delphi for Win32 - nor Embarcadero does. The attempt to brand with "Delphi" other products backfired, they removed it from their PHP product (now RadPHP), still they prefix Prism with it for marketing reasons, but noone calls Prims "Delphi Prism" but Embarcadero.
ldsandon
+10  A: 

Delphi executables don't have any external dependency. It's true since Delphi 1 up to Delphi XE.

I just wrote a post on my blog about this fact I like very much in Delphi. http://blog.synopse.info/post/2010/09/20/Dll-hell%2C-WinSXS-directory-and-Delphi-paradise No dll hell with Delphi applications!

Deploying a Delphi application is very easy. If you need some database access, you could need some additional components, like the BDE, or the ODBC drivers, or whatever...

But there are a lot of stand-alone frameworks, with no external dependency, available for Delphi. We provide one Client/Server Open Source solution, using SQLite3 as database storage. And one of great feature of SQLite3 is that it doesn't need to install any client software. Our framework provide the Client/Server features, in pure Delphi.

A.Bouchez
It's a pity that Embarcadero Marketing called Prism as "Delphi Prism", whereas Prism is a pascal-based language, but is not compatible with "standard" Delphi code (Delphi for DotNet was compatible, but Prism is definitively a new language). They already changed the "Delphi for PhD" product into RadPHP, I'd suggest they change the "Delphi Prism" product into RadPRISM. Marketing material is somewhat confusing... http://www.sdtimes.com/link/34634 journalists were not able to guess the exact features of Delphi.
A.Bouchez
If you need some database access you don't need additional components if you use for example Embedded Firebird SQL Server or other similar solutions. For some there is just a single DLL, and for some everything is embedded in EXE.
avra
@avra: you're right. That's exactly what I meant in my post: "there are a lot of stand-alone frameworks, with no external dependency, available for Delphi". Our framework is just one of those.
A.Bouchez
+3  A: 

Both the language and the IDE had some serious improvements from Delphi 1.

To name a few extentions for the language:

  • Support for interfaces
  • Records with methods
  • Record and class helper functions
  • Annonymous functions
  • Generics
  • Hinting directives

There are also some IDE improvements.

  • Unicode support
  • More integrated tools
  • Usage of identifiers (2011).

There are still some things missing:

  • 64 bit support
  • generics still have some bugs.
Gamecat
And the more important ones, like $pointermath :_)
Marco van de Voort
+1 for Marco: I like pointermath :P
Remko
+2  A: 

Well, Lazarus obviously :-)

Seriously, Delphi is fine, but before you buy a recent one, if you need win9x support, check thoroughly. (since the unicode versions might no longer support that)

Marco van de Voort
Is someone still really using Win 9x but for archeological reasons? Anyway XE allows users to use Delphi 7 or 2007 to develop non-unicode or Win9x applications.
ldsandon
I regularly encounter win9x. Not for user's desktops, but for computers connected to machinery it is not that strange. And yes, their sysadmins want to get rid of it dearly, but the equipment is usually expensive.
Marco van de Voort
Exactly - archeological reasons. If you have to support old hardware you have to use old tools. When the Hubble team prepared the last maintenance mission they had to work with '80s-era computers. But they could not ask that actual compilers supported that hardware and its OS. Embarcadero made the right move to allow developers to use previous version for all those needs of supporting old (yet working) hardware, without making heavy newer versions with little needed features and calling old, deprecated APIs.
ldsandon
I don't think that is a fixed rule. Use the best tool for the job, and sometimes getting the old to work is more difficult. But the point is that for people using old versions a (non academic) 2nd hand version of D6/D7 can be probably had a lot cheaper than the Eur 1000 minimum of Delphi XE. I've seen them routinely offered, with warranty for about Eur 200. The XE containing old versions is nice if you buy it anyway, but IMHO not a grounds for purchase.
Marco van de Voort
Setting up old version became pretty simple since the introduction of VMs. If you're developing for an old OS, you have to test on that old OS as well. There are MS licenses that allows you to download and use old, unsupported OS. Also old version where designed to run within the limits of their target OSes and hardware, while newer ones may require more resources.Buying a 2nd hand license may be cheaper, but it is also risky too if it is not really a 2nd hand one. Buying XE you're sure to get a fully legal license.
ldsandon
I think you are a bit quick in judging 2nd hand sellers. If I were one, I'd be insulted by your post that implies they do illegal business. But as a mere user, I can just comment that policies like you suggest are perfectly fine if you work in a large corporation and it is other people's money, and at the same time a perfect dodging of theresponsibility (and I have known such environments). If you are self employed, in a (very) small company in a crisis economy or in any other situation where you really have to justify every penny it is different. Maybe you should walk a mile in their shoes.
Marco van de Voort
A: 

Actually, there is ONE dependency that must be there. On a completely clean Windows installation you must ensure that the Msvcr71.dll file is present, otherwise you must deploy this with your application. I have done this many, many times and Msvcr71.dll is not present by default on a spanking new OS with no applications installed.

Misha
I don't understand what you're talking about. Msvcr71.dll is not required for running a Delphi application. I was not able to find any reference to this library in the whole source code tree of Delphi 7, Delphi 2007 and Delphi 2010. And it's not necessary from the point of view of any exe I generated with Delphi. So I guess is that you make some confusion with Visual Studio, or some of your third-party components/libraries.
A.Bouchez
@Misha. Sorry, you are wrong. Delphi applications don't have anything to do with MSVCR*.dll, which is dynamically linkable C runtime from Microsoft.
Eugene Mayevski 'EldoS Corp
It must be used by one of my third-party components then - I will have to work out which by a process of elimination
Misha
The culprit is the imported dll libtidy.dll, which links to Msvcr71.dll, which I use for HTML -> XML conversion and XML formatting. I would like to have a free native Delphi component to do this but there seems to be no equivalent to HTML Tidy around.
Misha
You should recompile libtidy.dll to link statically to the MSVC runtime, or you could even link the .obj files in a Delphi app. You should be able to do that with VC Express.
ldsandon
You can also use Dependency Walker to find what uses what (http://www.dependencywalker.com/)
ldsandon