Drupal Saves Delphi!
First off, I shamelessly admit the title is just a little misleading but it was so catchy, I couldn't resist! However, setting up a quick Drupal website did turn out to be the easiest way I could think of to get around some limitations in the environment from which I was trying to transfer a Delphi project.
A lot of my work these days is supporting older Windows programs written in early versions of Delphi. A great many of them are in Delphi 7, which came out in 2002 and was (and still is) a very popular and stable version of Delphi. This particular company's software had not changed in over 10 years and their Delphi programmer had long since left the company. While new software on new platforms are being sold, replacing the aging Windows-only application, they still have some customers that rely on it. With some regulatory changes in place this year, they needed to update the Delphi code before it's phased out.
The last full development environment used was Windows XP. They had made an image of the drive (probably before the machine died) and turned it into a virtual machine running under Hyper-V in an Azure Virtual Machine. So, yes, I was double-remoting!
I logged in and started poking around in Delphi to look at the project but it was really slow. In fact, it was so slow, I could see the different parts of various Delphi sections being painted on the screen, frame by frame, and caption by caption. Searching for a keyword took several seconds just to pull up the search box. Compiling or doing any sort of project management in this manner would be completely unbearble.
As I checked some aspects of the system I was on, I realized two things: 1) there was only 1 GB of RAM assigned to the VM, and 2) it was downloading Windows updates in the background. Knowing how difficult it is to stop Windows XP updates, I let them download overnight and applied them the next day. I also asked the customer to increase the memory. After those changes were made, the system was a little better but still very slow and clunky. Talking with the customer, we all agreed to setup a new Windows 10 VM with Delphi and all the components for a much faster and more modern machine to work on. It would also help document all the components and make sure we had a good system upon which to keep the code maintained.
So they setup a new VM for me and copied over the Delphi 7 ISO and the components they had archived. It wasn't long before I realized there were some files missing. I wasn't terribly surprised, after all I can't even remember all the libraries used in every project when I work on them frequently--there's no better way to verify if you have all the pieces you need than to actually have a secondary development environment.
I figured it would not be a problem to move files over. Surely, there was a shared drive or something. Nope. OK, we'll I'll just use Internet Explorer and connect to DropBox or OneDrive. Nope. Any HTTPS-enabled website would not allow IE from Windows XP to connect as the protocols were not up-to-date. I noticed Firefox was also installed so tried that--same problem.
Now there's probably some of you that understand Windows security protocols and could've suggested a specific Microsoft Hotfix or maybe an optional Windows Update or perhaps even a setting in Firefox or IE but thinking I had tried everything, I sat there staring at the screen wondering how I could get the Delphi files I needed from one VM to the other.
It dawned on me that if I had a non-SSL-enabled website, there might not be a limitation to uploading files. All my websites have an SSL certificate installed but I know that I can create a sub-folder off of one of my sites and use it as a completely separate website. I use Drupal to build and manage the few websites I have and it's pretty quick and easy to setup a new site, so I did.
The site was setup in minutes, I created a page type that allows attached files, then logged into it from the old XP image and uploaded the files. Moments later, I was downloading them from the new VM. Voila! Drupal had saved the day by allowing me a quick way to transfer Delphi code from one machine to the other!