Zeos 7 Failing to install - delphi

I have installed the Zeos 7 Beta on my own machine but it fails on my client's laptop. We're both running Delphi xe2, his is Entreprise, mine is Pro. His machine is running 64-bit windows 7, mine is running Window 7 32-bit.
When I do Compile all on ZeosDbo or ProjectGoup16 it seems to get through ZCore.dpk but then shows 2 fatal errors:
ZCore.dpk(1) E2225 Never-build package 'ZCore' must be recompiled
ZParseSQL.dpk(33) E2202 Required package 'ZCore' not found
This is production code we are working on, so I hope we can find a solution and get back to working on this
Zeos forum thread: http://zeos.firmos.at/viewtopic.php?t=3633

That is one error, the 1st one. The second is merely post-effect.
Perhaps you can do better than downloading beta ZIPs: until they have mature release you just can download each day "nightly" changes by version-control tools, like Git or SVN or whatever Zeos team is using.
Such errors are usually quickly fixed (they are simple) but long released(they are so moot that no one would bother making release for them).
Just open http://zeos.firmos.at/portal.php and read where to get most instant updates and how to report problems.
Actually - there it is, http://svn.code.sf.net/p/zeoslib/code-0/trunk/
Install TortoiseSVN and be on the edge until 7.0.1 or 7.0.2 final release
The page also says: Please report bugs for this version to our brand new bugtracker on sourceforge https://sourceforge.net/p/zeoslib/tickets/
Please do. Open Source is about participating. At least participate by registering bugs.
About the essence of problem read official documentation and "See Also" section.
Someone should decide about package binary update strategy. And the decision should be kept for all packages (okay, you can mix it in some conditions, but that is not to be suggested). So basically you have three choices:
Make your own decision and put all Zeos packages into the strategy of your choice. That puts the responsibility upon yourself to maintain this fork for a while until you come back to vanilla ZeosDB.
Report the bug to ZeosDB team and ask their suggestion, then change those settings for all the packages as suggested by them.
Report the bug to ZeosDB team and wait until they'd fix it in their SVN and then do SVN Update.
Personally i'd go with 1 option, but i am ready to be FLOSS libraries co-developer.
Option 3 would be the most slow yet the most easy for you.
Option 2... well... i can not see why you should choose that, except for trying to avoid version controls at any cost, which is bad idea per se.
I also suggest you to read http://www.catb.org/esr/faqs/smart-questions.html
That would help you effectively communicate at ZeosDB forums - and you'd have to if you want to be "on the edge" (and if you do not - then wait for public release like 7.0.2).

Related

What version of Rubberduck has working source control?

I'm interested in using Rubberduck primarily for it's Github source control feature. However, from looking at the Github site for the project I can see that in the most recent versions that feature is not so stable. My question is, what version should I use? For now all I really care about is to have the most stable source control feature. Should I go back as far as v1.4.3? Or is there another 2.X version that was more stable before things recently got worse?
EDIT: As per Vogel's comment
This answer is outdate since a few months: Source control has been
removed completely in the PR #3782 on Feb 26 2018
Even so...
I'd definitely recommend trying out Rubberduck; the unit testing, code inspection and other features are awesome... also the guys involved are generous with sharing their time and knowledge - but IMHO would shy away from using an old version to gain access to the Git features (it has been disabled for a reason).
You can enable it as an 'Experimental Feature' under the menu system > Rubberduck > Settings > General Settings (scroll down)
If you really need something ASAP perhaps look at VBAdiff (http://vbadiff.com/) or this project https://github.com/spences10/VBA-IDE-Code-Export
The bulk of the efforts of the past couple of months went to perfecting the parser and resolver, which impacts overall performance and all inspections and refactoring features; eliminating inspection false positives and making sure no quickfix or refactoring wrecked our users' code has been the top priority, leaving the borked source control panel under-loved - so much that we recently outright disabled it by default, until we git it under control.
Teams mean to grow, and a new contributor joined the project and started working on the source control panel issues.
A pull request was merged recently,
and since every merged PR gets a prerelease CI build published, v2.1.0.2257 is now available for download.
This fixes an IoC registration bug involving an abstract factory interface that the SC panel uses, and it just so happens to apparently fix the exceptions with GitHub authentication, so pushing should now work fine.
More fixes on the way, v2.1 "green release" will likely have a pretty much stable source control feature =)

Base SDK Missing

I get the "BASE SDK Missing" when re-opeing projects. (I got the latest build of xcode, and latest SDK installed.)
It seems to be happening when I quit a project, (not exiting xcode), and re-open the project after a while. I have tried both, with and without my iPhone plugged in. I have tried to fix the problem like described here, but it does not help for me. - It just makes it even worse! (unrecognizable SDK)
The only way I have managed to get it back to normal, is to do a manual re-boot of my mac, plugged in my phone, waited until it has checked my iPhone, and then, opened xcode. Time consuming and annoying!
Why does it happen and what is the trick to fix this?
Your recent upgrade of Xcode likely removed the earlier SDK that your project was set to use. There are a couple of solutions for the problem. The most simple solution is to always select the "Latest" SDK in your project's settings and not select a specific option. You may be uncomfortable with the idea and want to run your app on an older device but it's important you understand that all of the newer SDKs can generate code that works on older versions of iOS. There's a separate hard to remember option for setting the deploy target. (It took me a while to learn how/why to use this but it's well worth it.)
The second option is to actually find a version of the SDK that your project is set to and attempt to reinstall it. I suggest going this route only if necessary as it's not guaranteed to work in each case. Older SDKs may or may not work in later versions of Xcode (Eg. SDK 3.0 might not work in Xcode 4.3.2) due to major changes in the toolchains. Tools like gcc/gdb are deprecated in favor of llvm/lldb. Still, you may have a valid reason for using an older SDK. You may have to fix a bug that is present only when using the older toolchain or you may need to reproduce a problem that only happens with builds generated from your build server. In many of these cases it might be easier to upgrade where the problem occurs (Eg. upgrade the tools on the build server) or downgrade your dev environment. (Install an older version of Xcode.)
The reasoning behind the frustration is that Apple highly encourages rapid adoption of it's latest tools and technologies. It creates a better product as the dev community is forced to stay current and competitive while the users are forced to maintain upgrades to ensure apps continue to work. This is in contrast with the traditional model of backward compatibility allowing developers to support revision -n of a product/platform. It is also great for business since rapid adoption of the latest often encourages purchase of newer hardware and products to get the best experience. The rapid adoption ensures the more robust software along with bug fixes, enhancements make it to the majority of consumers overall increasing their penetration in the market.
You have to set your target and project's base SDK to "Latest" and not an explicit option. If you choose one explicitly it seems to break if you update xcode versions.

Best practices for using SVN with Delphi Visual Component packages?

With the desire to be able to reproduce a given revision of a project that is utilizing 3rd party visual component packages, what goes in SVN and what's the best way to implement/structure the SVN repos?
For non-visual components, the rule seems simple to ensure no reliance on outside repos - "no svn-externals reference to any outside repo allowed". I have a shared repo that I control, which is the only 'svn-externals' reference allowed. This makes it easy to implement and share these types of runtime itemss with sourcecode in different SVN projects. Any reference this internal shared repo is by 'svn-externals' using a specific revision number.
Visual packages seem to go counter to being able to be version controlled easily as they may have to be reinstalled at each revision. How to best create a SVN project which is able to be recreated later at a specific revision number...is there a recommended solution?
Previously we didn't worry about 3rd party components as they don't change often and we never had a real good solution. I was wondering if others have figure out the best way to handle this problem as I'm doing a spring cleaning/internal reorganization and wanted to do it 'better' than before.
Technically, the RTL/VCL source should also be in the SVN repo as well (if there's a Delphi hotfix/service pack released.)
My solution will likely be to create a virtual machine with a particular release of the Delphi environment with all visual controls installed. As we add/update visual controls, or update Delphi with hotfixes/service packs then we create a new version of the virtual machine. We then store an image of this VM revision on a shelf somewhere. Is this what you do? Does the Delphi activation/licensing work well (or at all) in this scenario?
Thanks,
Darian
You can prepare "start IDE" (and possibly "build") scripts for your projects and maintain them as project evolves in repository.
Regardless of your decision about keeping components in separate repositories and using externals, or including them in a single repository with possible branching, you should also include compiled bpl files for every component build and for every branch prepared for a specific Delphi version.
You should definitely try to keep most (if not all) of paths relative, in a worst case use environment variables to point to your root project dir.
Start IDE script allows you to keep each project and Delphi version environment spearately configured on a single Windows installation.
It should include necessary registry keys for your project and Delphi:
Windows Registry Editor Version 5.00
[-${DelphiRegKey}\Disabled Packages]
[-${DelphiRegKey}\Known Packages]
[-${DelphiRegKey}\Library]
[${DelphiRegKey}\Known Packages]
"$(BDS)\\Bin\\dclstd${CompilerVersion}.bpl"="Borland Standard Components"
"$(BDS)\\Bin\\dclie${CompilerVersion}.bpl"="Internet Explorer Components"
"$(BDS)\\Bin\\dcldb${CompilerVersion}.bpl"="Borland Database Components"
(...)
"${CustomComponentPack}"="Custom Components"
[${DelphiRegKey}\Library]
"Search Path"="${YourLibrarySourceFolder1};${YourLibrarySourceFolder2}"
(...)
You can then prepare batch file:
regedit /s project.reg
%DelphiPath%\bin\bds -rProjectRegKey Project.dpr
Where ${DelphiRegKey} is HKEY_CURRENT_USER\Software\Borland(or CodeGear in newer versions)\ProjectRegKey.
Basically it is easier when you will dump your current working configuration from registry, strip it from unnecessary keys, change paths to relative and then adapt to make it work with your project.
In such configuration, switching between projects and their branches which have different sets of components (and/or possibly using different Delphi version) is a matter of checking out a repository only and running the script.
Fortunately for us, we don't have to worry about a hotfix/service pack; we're still on Delphi 5. :D
Sigh, there was a time when an entire application (settings and all) would exist within a single directory - making this a non-issue. But, the world has moved on, and we have various parts of an application scattered all over the place:
registry
Windows\System
Program Files
Sometimes even User folders in "Application Data" or "Local Settings"
You are quite right to consider the impact of hotfixes/service packs. It's not only RTL/VCL that could be affected, but the compiler itself could have been slightly changed. Note also that running on the same line of thought, even when you upgrade Delphi versions, you need to build using the correct version. Admittedly this is a little easier because you can run different Delphi versions alongside each other.
However, I'm going to advise that it's probably not worth going to too much effort. Remember, working on old versions is always more expensive than working on the current version.
Ideally you want all your dev to be be on main branch code, you want to minimise patch-work on older versions.
So strive to keep the majority of your users on the latest version as much as possible.
Admittedly this isn't always possible.
You wouldn't want to jump over to the 'new version' without some testing first in any case.
Certain agile processes do tend to make this easier.
By using a separate build machine or VM, you already have a measure of control.
TIP: I would also suggest that the build process automtically copy build output to a different machine, or at least a different hard-drive.
Once you're satisfied with the service pack, you can plan when you want to roll it to your build machine.
It is extremely important to keep record of the label at which the build configuration changed. (Just in case.)
If your build scripts are also kept in source control, this happens implicitly.
When you've rolled out the hotfix/service pack, fixes to older versions should be actively discouraged.
Of course, they probably can't be eliminated, but if it's rare enough, then even manual reconfiguration could be feasible.
Instead of a VM option to keep your old configuration, you can also consider drive-imaging.
To save on the $$$ of VMWare LabManager, look for a command-line driven VM Player.
You might have to keep 2 "live" machines/VMs, but should never need more than that.
It's okay for an automatic build script to fail because the desired configuration isn't available. This will remind you to set it up manually.
Remember, working on old versions is always more expensive than working on the current version.
Third Party Packages
We went to a little bit more effort here. One of our main motivations though was the fact that we use about 8 third party packages. So doing something to standardise this in itslef made sense. We also decided running 8 installation programs was a PITA, so we devised an easy way to manually install all required packages from source-control.
Key Considerations
The build environment doesn't need any packages installed, provided the object and/or source files are accessible.
It would help if developers could fairly easily ensure they're building with the same version of third party libraries when necessary.
However, dev environments usually must install packages into the IDE.
This can sometimes cause problems with source compatibility.
For example new properties that get written to IDE maintained files.
Which of course brings us back to the second point.
Since Third Party packages are infrequently updated, they are placed within a slightly different area of source-control.
But, NB must still be referenced via relative paths.
We created the following folder structure:
...\ThirdParty\_DesignTimePackages //The actual package files only are copied here
...\ThirdParty\_RunTimePackages //As above, for any packages "required" by those above
...\ThirdParty\Suite1
...\ThirdParty\Suite2
...\ThirdParty\Suite3
As a result of this it's quite easy to configure a new environment:
Get latest version of all ThirdParty files.
Add _DesignTimePackages and _RunTimePackages to Windows Path
Open Delphi
Select Install Components
Select all packages from _DesignTimePackages.
Done!
Edit: Darian was concerned about the possibility of errors when switching switching versions of Design Packages. However, this approach avoids those kinds of problems.
By adding _DesignTimePackages and _RunTimePackages to the Windows Path, Delphi will always find required packages in the same place.
As a result, you're less likely to encounter the 'package nightmare' of incompatible versions.
Of course, if you do something silly like rebuild some of your packages and check-in the new version, you can expect problems - no matter what approach you follow.
I usually structure my repository in SVN like this:
/trunk/app1
/trunk/comp/thirdparty1
/trunk/comp/thirdparty2
/trunk/comp/thirdparty3...
I have, right in the root folder (trunk) a project group (.groupproj, or .bpg on old delphi) that contains all my components. (allcomponents.groupproj).
Installing on a new machine, means opening that package, and installing the designtime components. That's a drag on all versions of Delphi older than 2010, but 2010 and XE have a lovely feature so you can see at a glance, which components are designtime components.
I also, sometimes, will save myself the trouble of installing those components by hand, by making a build.bat file, and a regcomponents.bat file. The regcomponents just runs regedit , and imports the keys needed to register all those components, after build.bat has built them, and everything else.
When you move up from one delphi version to another, it's sure good to have both a batch and reg file, and a group project, to help you. Especially if you have to go through and do a lot of opening of project/packages and saving them as MyComponent3.dpk instead of MyComponent2.dpk, or updating the package extension from 150 to 160, or whatever your packages do.

Copy Delphi Profile

My computer crashed recently. We have a Delphi app that takes a lot of work to get running.
One of my co-workers has it all installed still. Is there a way to copy the stuff stored in the palette? And the library paths?
I am using Delphi 5 (I know it is very very very old)
That information is stored in the Registry. I don't know exactly how Delphi 5 does it, but try looking for a key called HKEY_CURRENT_USER\Software\Borland\Delphi\5 or something like that. You'll find all the registration information under that key, including a list of installed packages. You can export the keys to a registry file, copy it to the new computer and install it.
Standard disclaimer: Mucking around in the registry manually can be risky if you don't know what you're doing. Be very careful, and if this solution causes your computer to crash, your house to burn down, or demons to come flying out your nose, it's not my fault.
Try CNWizards which has an export functionality for your IDE settings. You can use the same tool restore them on the new machine. We use it to get the same settings on every development machine. In that way we can ensure that all builds are the same, regardless of who built it.
Based on my experience of having done this a few times(!), the most important registry keys are:
HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Known Packages
HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Library
and possibly
HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Known IDE Packages
and maybe
HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Palette
HKEY_CURRENT_USER\Software\Borland\Delphi\5.0\Palette Defaults
So long as you have done a standard D5 installation first.
It's easier/more reliable to let the IDE fill in the other bits as you start using it and you change options as appropriate. Some component packages, eg madExcept, DevExpress etc are often best re-installed using their own installers anyway.
Unless you're going to have multiple users on the same machine using Delphi then the HKLM stuff isn't really all that important - I don't think.
As a related aside - I have learned that a good way to handle this is to build a FinalBuilder script (or similar) to set up my Delphi environment each time I decide to use a new machine/installation. I copy/download/checkout (which can be done in FB too) all package source then use FB to compile it, copy it, create dirs, and fill in the appropriate registry keys etc. I always get a consistent environment and makes it much easier to rebuild individual components or packages as and when they get upgraded too. The items can also be put into the script in 'dependency order' so that you know to re-compile a dependent package if something else changes. I now have a single FB sciprt that builds D5, D2007, D2009, D2010 environments and packages of all my main components, all depending on which compiler(s) I'm interested in which I indicate by a simple variable. Well worth it.
Seems to have just worked for me on a Win 7, SP1 and Delphi 5
Logged as user with Delphi & 3rd party components installed.
registry export
hkey current user\software\borland
(no other borland products so selected Borland)
rather than Borland\Delphi\5.0)
Logged into pc as new user.
Did not start Delphi5 (i.e. never started for this user).
Regedit File, Import
Started Delphi all components, including lots of 3rd
party, present.
Project compiled as expected under new user.

Will the next release of Delphi be supporting cross-compilation for Mac and Linux?

According to a recent blog post by Allen Bauer:
As we’re working on Fulcrum, the next
RAD Studio release with a focus on
cross-compilation for Mac and Linux,
[..]
I figured someone would mention it in the comments, but I thought Mac/Linux support was a few releases further off. Maybe it's just me, but this is huge news.
Does this mean we will see Mac/Linux binaries created with a Delphi release this year?
While I cannot commit to any kind of time frame or release dates, we are working on Mac and Linux targeting. There is also some work going on for 64bit targeting as well, however that will most likely not be in the same time frame as the Mac/Linux targeted releases.
Fulcrum is the code name for the next release, so yes, the next release will include Mac and Linux support. I don't know about the time frame, but "this year" seems reasonable.
Native 64 bit support will be in a future release.
Personally, I prefer this order.
Embarcadero once said that "the release after the next one will support 64-bit". That was supposed to be Delphi 2010. That didn't happen of course - far from it. Not only did it not appear in the release that was indicated, but it now appears it won't be appearing for at least 2 further releases, and in the meantime, things that were NEVER even mentioned have suddenly appeared and been given priority.
So there really is no reason to believe that Fulcrum will happen either, until it has actually been delivered, no matter who talks about it, at least not in the time frame that is being indicated.
Embarcadero have proven less than reliable when it comes to their "roadmap" which is frankly something of a joke - the "current" one still talks about things that have already been delivered as if they have yet to happen, for instance.
FreePascal
I suppose it's not awful news...
If you look at the last road map, you will see Embarcadero is working on Project called "Delphi X"
(source: embarcadero.com)
and according to what Allen said, it seems it's will be compile to Mac OS & Linux at same time, which is great thing.
If Allen said so, it's pretty safe to assume it's true.
The best answer so far is by Michael Rozlog. It is an over hour interview with the Product Manager of RAD Studio and is worth hearing. It covers:
The Delphi Survey
Delphi application showcase
Updates to the Delphi Roadmap
12 Videos of Christmas (later renamed the 12 Holiday videos)
Compiler rewrite
Project Fulcrum: Delphi on Linux and Mac in Beta
Coming soon to more public beta (hopefully)
Delphi Backwards Compatibility
The upgrade cut off policy
Free or low cost versions of Delphi
And a whole lot more.
http://www.delphifeeds.com/go/f/65775?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+delphifeeds+(DelphiFeeds.com)

Resources