Today I spent several hours hunting down a problem with opening a COM port. Basically the program opens a COM port, writes some bytes to it, reads an answer and closes it again. This determines whether the expected device is connected to the COM port or not. If the answer is the expected one, so … Continue reading When CloseHandle does not close the handle
class as interface: Operator not applicable to this operand
Once in a while I run into this problem and every single time it takes me forever to remember the cause: Say, you have got an interface and a class implementing that interface: type IMyInterface = interface function asMyInterface: IMyInterface; end; type TMyClass = class(TInterfacedObject, IMyInterface) private function asMyInterface: IMyInterface; end; [...] function TMyClass.asMyInterface: IMyInterface; … Continue reading class as interface: Operator not applicable to this operand
Avira Antivirus E-Mail “security”
The current Avira Antivirus has got a module it calls "Internet security" which in turn has an option for e-mail security. What it does is capturing all connections to POP3, IMAP and SMTP servers and scanning them for viruses. That sounds good until you find, that your e-mail client stopped working even though you haven't … Continue reading Avira Antivirus E-Mail “security”
Fighting Secure Boot
I have bought an Acer Extensa notebook after reading the under 300 Euros notebooks test in the latest c't magazine where it came up as the winner regarding battery life and the rest wasn't too bad either. I chose the 4 GB model so it won't thrash the hd all the time. The Extensa comes … Continue reading Fighting Secure Boot
mounting a Samba share
The Linux mount command can also access Samba (Windows) shares, but in contrast to the smbclient command it does not do a Netbios based lookup for machine names. So while smbclient //server/share will work, the corresponding mount -t cifs //server/share /mnt/point will tell you that it can't resolve the host name (unless you add the … Continue reading mounting a Samba share
Creating a new RAID 5
Another reminder to myself, so I don't forget it again. Warning: Use this on your own risk! You might lose all the data stored on any of the hard disk drives if you make a mistake! To create a new raid, all the disks must be partitioned first. To actually create the RAID we need … Continue reading Creating a new RAID 5
Using parted to partition a drive
This is just a reminder to myself so I don't forget again. Warning: Use this on your own risk! You might lose all the data stored on any of the hard disk drives if you make a mistake! On Linux hard drives > 2 GB must be partitioned with parted and a partition table in … Continue reading Using parted to partition a drive
Some changes to CustomContainerPack
Today I made some small changes to the CustomContainerPack. Apart from removing two with statements I changed the place where the wizard shows up in the File -> New -> Other dialog. Up to Delphi 7 it is still in the "New" category. For newer Delphi versions, it now shows up in the "Delphi Files" … Continue reading Some changes to CustomContainerPack
Custom Container Pack for Delphi XE2 to XE7
I just updated the Custom Container Pack sources to support Delphi XE2 to XE7. It was mostly a matter of creating the packages for the newer versions. I also had to adapt the registration code to changes in Delphi XE2. It now compiles and installs. I have not tested it extensively. We use it at … Continue reading Custom Container Pack for Delphi XE2 to XE7
dzlib compiles with all Delphi versions from 2007 to XE6
Today I spent some time to make dzlib compile with all Delphi versions from 2007 to XE6 (XE7 to come later). It didn't take too long since it already supported 2007, XE2 and XE6. It's interesting to see, how the RTL evolved between these versions. Some examples: The IsWhitespace function started out as a class … Continue reading dzlib compiles with all Delphi versions from 2007 to XE6