4 ms·
Yes, the ability to drag-and-drop widgets on to a form (essentailly a window or screen in your app) to contsruct a GUI was the killer feature of Visual Basic.
by open-source-ux 7y ago
Yes, the ability to drag-and-drop widgets on to a form (essentailly a window or screen in your app) to contsruct a GUI was the killer feature of Visual Basic.
But Visual Basic couldn't create self-contained executables. You needed to distribute an accompanying runtime dll. This was often a source of frustration for Visual Basic programmers when distributing their programmes: users didn't sometimes have the right runtime dll installed.
In contrast, Delphi, which also had a drag-and-drop interface builder was more powerful, faster and created self-contained executables with no external dependencies. My impression (which may be wrong) was that there wasn't much cross-over between VB and Delphi users. I think many VB programmers found Delphi's Object Pascal too complicated compared to the simplicity of the VB language so there was never an exodus of VB users to Delphi.
- pjmlp 7y agoIt could with version 6. Also the runtime.dll is not any different from having the right MSVCRT.dll around, all programming languages need some kind of runtime, even if a very basic one.
- Crinus 7y agoThe difference is that in MSVC (as well as in most other compiled languages) you can statically link to the runtime. In many cases having a single self-contained EXE file is very convenient.
- pjmlp 7y agoTrue, but hardly any different when doing xcopy deployments.
- Crinus 7y agoAFAIK OCXs need an installer, though you could stay within the limits of what is provided by the VB6 runtime that is already part of Windows. But it might be a better idea to not do that in the long term as Windows dropping VB6 support is more likely than dropping all Win32 support so at some point you may need to have a proper installer. Regardless, i'm was referring to single executable cases where you just download an EXE file and run it without the need for some sort of decompressing an archive to a temporary folder (especially considering that most people nowadays use 7zip which has broken behavior when it comes to running executables from an archive: unlike WinRAR it only extracts the EXE file, not any other files the archive may have and the application may need).
- pjmlp 7y agoOCX and the VB6 Runtime are not the same thing. Many Delphi VCL implementations are also COM objects, and even COM can be loaded via xcopy deployments, they don't need necessarily the register, it is called Side-by-Side Assemblies in modern Windows dev speak.
- Crinus 7y agoFor very simple applications you can get with just the VB6 VM DLL but anything practical needs a bunch of OCX controls - even if you stick with the stock stuff you get with Visual Studio 6. AFAIK those OCX controls come with Windows for some years now so you can give someone a VB6 .exe and it'll work, but if you need anything outside of that you need to register them (unless i am wrong and VB6 can freeform OCX files directly but i'm almost certain it can only use stuff registered with the system). Delphi VCL can use COM objects but on Delphi this is an exception rather than the norm, components on Delphi are (or can be) statically linked with the application. For VB6 the norm is using OCX controls... actually, i do not think it is possible to do anything else (outside of manually calling DLL functions of course, but even that is relying on a separate DLL).
- repolfx 7y agoWell, unless you counted the core Windows DLLS like USER32 as a runtime, Delphi programs didn't. The entire VCL was statically linked each time.
- pjmlp 7y agoShipping a dll alonside the .exe in xcopy deployments is hardly different from static linking, given lookup rules.