I am recompiling a old Delphi program (from Delphi 2007) in (Delphi 2010). The code is absolutely unchanged and it compiles well. The key part of the program is the use of CopyFileExW to copy some files. Everything works OK and Dandy, however, there are some strange performance problems that I cannot understand where they come from.
When copying from a client computer to a Windows server the following happens:
Version compiled with D2007
From XP to Windows Server 2003, Copy performance OK
From XP to Windows Server 2008 Copy performance OK
From Windows 7 to Windows Server 2003, Copy performance OK
From Windows 7 to Windows server 2008 Copy performance OK
Version compiled with Delphi 2010
From XP to Windows Server 2003, Copy performance OK
From XP to Windows Server 2008 Copy performance OK
From Windows 7 to Windows Server 2003, Copy performance OK
From Windows 7 to Windows server 2008 Copy performance EXTREMLY SLOW
I can understand that perhaps there is an issue between the 2008 server and W7, like Remote Differential Compression or such (which BTW is disabled), but why does the version compiled with 2007 doesn't have the same problem? Any guesses?
Some ideas of possible causes:
AntiVirus software on WS2008 side thinking that the transfer is suspicious and making verifications (as already stated in the comments).
Possibly some implicit string conversion getting in the way.
Since you are just now updating a program to run on Delphi 2010, you should probably go to Delphi XE and start solving problems there. It comes with a profiler built in AND you get to work with the newest stuff.
Related
This problem occurs on some virtual machines under Windows Server 2012 or 2016. I can only run the 32-bit version although it is 64-bit OS.
My DLL supposed to run on ISAPI-DLL mode (therefore called by IIS) also fails (Error 500).
I suspected msolebdsql.dll (SQL Server ODBC driver) to be only 32-bit compatible on these machines, but it seems unlikely.
I've been spending hours on looking for another feature that could be refused by Windows (invalid Windows API call ? There are very few, and it's very common ones). I failed.
Can someone help ?
I have MS Visual Studio 2012 installed on my laptop. But now I need MS Visual Studio 2010 . Because of this, I am thinking of downloading VMWare workstaion to create a Virtual Machine.
And, then I will be installing Windows 7 and then MS Visual Studio 2010 on it.
I wonder whether this is going to create a performance problem. The reason is that I will be using MS visual studio 2010 (in virtual machine) with openCV. There I need to use SVM (for training and predicting data- I've heard that this takes a LOT of time and memory. I'll be using like 300 colour images for this ). Will I be able to do all this on Virtual Machine ?
How much of memory do I need to allocate when creating the virtual machine ?
Actually, I had windows 8 (64-bit ) on my laptop when I first bought it. Since there was no 64-bit version after 2008 when it comes to MS Visual Studio ( I wanted at least 2012), I had to remove windows 8 (64-bit) from my laptop and then install windows 7 (32-bit). At the same time, I wanted to get rid of windows 8. Actually, this was not recommended by the manufacturer. But I had no other option. Now my laptop uses only 2.4 GB out of 4.0 GB memory. This happened due to that installation.
so, my question is : Since I have only 2.4 GB memory, will installing windows 7 on a virtual machine and then installing MS Visual Studio 2010 on top of it create an issue ?
If it's fine, How much of memory should I allocate when creating the virtual machine ?
I highly recommend that you do not do this... that saying if you have absolutely no choice, technically it should work.
To run MS Visual Studio 2010 through the VM you'll need to allocate 1GB of RAM just for MS VS and another 512MB for the virtual machine.
Whenever you are not using the VM make sure you shut it down so it doesn't chew up that memory, because while it's running your host machine will have about 1.1GB left for itself.
Hope that helped.
I need to work with Delphi 6 Update 2 in Windows 8.1 x64 (in case you were wondering, it's about maintaining an old application, migrating to a newer version is not an option. I can't use a VM because I use the same machine to connect to some peripherals that don't work in a VM).
The problem is that Update 2 has a 32 bit installer with a 16 bit stub. So the current behaviour is that the installer starts, it extracts the files in a temp location, starts the setup then nothing appears on screen.
So far, I gathered that it is impossible to do it. But the same behaviour I 've seen for SQL Server 2000 (don't ask) but there I was able to use msetup.exe (DemoShield) to open a sqlservr.dbd that started the script. However, there is no such dbd file. I guess I was lucky on SQLServer 2000.
So far I've tried compatibility mode, DosBox, replacing the setup file with both Installshield 3 and 5, waiting for hours for the setup to start (sometimes, W8 does that), even comparing files and registries on an XP machine before and after update 2 but this might be a bit too risky to apply on a real machine.
Since Windows 8.1 86 includes Hyper-V for running VMs, most modern hardware supports Hyper-V, and Windows 8 x86 can still run 16-bit based apps:
Install a Windows 8.1 x86 VM under your host physical machine, then install it there.
The up-tick: it is easy to move your VM to a new host without needing to reinstall a full new VM.
See http://www.techrepublic.com/blog/windows-and-office/get-started-with-windows-8-client-hyper-v-the-right-way/7893/ and http://www.infoworld.com/d/virtualization/5-excellent-uses-of-windows-8-hyper-v-208436 to get started with Hyper-V.
Hyper-V can redirect quite a bit of hardware from the host to the VM nowadays. For "old" hardware like COM and LPT ports you often can buy USB adapters that can be redirected.
If installing on x86 Windows 8.1 works and x64 fails, I think you have proved the assumption that the 16-bit portion of the installer is the culprit.
Maybe my blog post from last year can solve your problem:
http://blog.dummzeuch.de/2013/11/11/delphi-6-on-windows-8-1/
excerpt:
I just deleted the registry entry
HKCU\Software\Borland\Delphi\6.0\LM
(I did not make a backup, what would have been the point?)
I started Delphi 6, ignored the warning about incompatibilities (which was talking about Delphi 7 anyway) and went through the registration/activation process again. This time it worked.
Maybe I should mention, that I did not install any of my Delphi versions to c:\program files but put them into c:\Delphi instead to avoid any problems with access rights to the installation directory.
My company runs an old application written in delphi. A simple com server which serves some database for some computers. I have to run the server once in every computer to register the com interfaces and it have been working since the ancient days of whatever in windows xp.
Using windows xp I have never had a single problem but in windows seven the class just won't register and no matter what I try(I tried exporting the register keys) when I open the client I will still get the error "Class not registered".
Any advice? Plz save my Christmas.
My COM servers, both EXEs and DLLs, are written in BCB6 (as opposed to Delphi) on 32-bit XP and they work just fine when installed on 64-bit Windows 7. You just have to make sure that you run their installation code from an elevated process, that's all. Open an instance of cmd.exe with the "Run as administrator" option, then navigate to your COM server's folder and run it with the /INSTALL parameter (for EXEs) or the 32-bit version of regsvr32.exe (for DLLs) from the WOW64 system folder.
I am trying to compile and run a really really old application on my Windows 7 box.
It seems to need NTWDBLIB.DLL from SQL Server 2000. I can get that file, but it is a 32 bit file. When I try to run RegServ32 on it I get an error message.
Installing SQL Server 2000 Client tools is not allowed on Windows 7.
Is there any way of getting this file? (Short of making a 64 bit VM and installing on it to get the file.)
I just needed to copy the 32 bit version to the SysWOW64 folder rather than the System32 folder.
Kind of lame that the folder with 64 in the name is for the 32 bit stuff and the folder with the 32 in the name is for the 64 bit stuff.
Given the error message, it looks there may be issue with SQL Server 2000 executables in Windows 7. I'd suggest you to install a newer client (2005 or 2008 with all the required SP to be run on Windows 7), they are still able to connect to a SQL Server 2000 server.