Archive for the ‘Delphi’ Category
Posted by jpluimers on 2013/08/06
StackOverflow user opcOde wrote something interesting:
Writing device drivers in delphi is hard to impossible.
Here is an attempt to write drivers in delphi.
It is funny to see the link pointing to the DelphiBasics site: Advanced Delphi Driver Development Kit – DelphiBasics.
On my list of things to remember: might come in very useful one day (:
Note that opcOde also has an interesting blog: opc0de | just another enthusiastic coder.
–jeroen
via delphi – Winrollback/DeepFreeze How these softwares work? – Stack Overflow.
Posted in Delphi, Delphi 2010, Delphi 7, Development, Software Development | 9 Comments »
Posted by jpluimers on 2013/08/06
I was called by a client that didn’t want to do maintenance on an old Delphi application, but wanted to get dir of an I/O Error 131:
I/O Error 131: ERROR_NEGATIVE_SEEK
MessageText: An attempt was made to move the file pointer before the beginning of the file.
Tough luck: psychic powers told me someone is using an unsigned 32-bit integer to access a file using traditional style Assign/Reset/Seek/Read/Close patterns that Delphi kept as intrinsic routines for Turbo Pascal backward compatibility, and that file has grown over 2 gigabyte in size.
I quickly found an import file had grown over the 2 gigabyte, so this was indeed the case.
The original developers didn’t do the file access using the 64-bit Seek/Position of the TStream descendant TFileStream.
Too bad, as now someone has to dig through the mothballs to find the sources (if they survived 3 different version control system switches), create a working development environment, and fix the bug.
Another instance where technical debt in IT raises its ugly head and the compound interest is really expensive.
–jeroen
via: erikmartin.com – IO Errors in Delphi.
Posted in Conference Topics, Conferences, Delphi, Delphi 5, Development, Event, Software Development, Technical Debt | 14 Comments »
Posted by jpluimers on 2013/07/30
A while ago, I needed routines to work with absolute and relative paths on Windows.
These links were very useful:
- The Delphi TPath.IsDriveRooted function (I think it was introduced in Delphi 2010) serves as a IsPathAbsolute function
- Conversion between absolute and relative paths in Delphi – Stack Overflow showing how to use the Windows API functions PathRelativePathTo and PathCanonicalize functions declared in the ShLwApi unit to create AbsToRel and RelToAbs functions.
Thanks Andreas Rejbrand and David Heffernan for the last two!
–jeroen
via: Conversion between absolute and relative paths in Delphi – Stack Overflow.
Posted in Delphi, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Development, Software Development | 4 Comments »
Posted by jpluimers on 2013/07/26
During code reviews, I often see people do things like this:
if (not DirectoryExists(Path)) then
ForceDirectories(Path))
or this:
if (not TDirectory.Exists(Path)) then
TDirectory.CreateDirectory((Path))
Half a year ago, I wrote about .NET/C#: do not do “if (!Directory.Exists(path)) Directory.CreateDirectory(path))”. Read the rest of this entry »
Posted in Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, Software Development | 16 Comments »
Posted by jpluimers on 2013/07/25
Replay video’s can be viewed through streaming.embarcadero.com (where you can also find the other series, downloads, etc).
The SummerSchool 2013 replay videos are at streaming.embarcadero.com/summerschool2013.
The Q&A from today’s session on “Accessing local storage” demonstrating iOS specifics in Delphi XE4: Read the rest of this entry »
Posted in Delphi, Delphi XE4, Development, Software Development | Tagged: Delphi, embarcadero, iOS, OS, software, technology | Leave a Comment »
Posted by jpluimers on 2013/07/25
Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Delphi, Delphi XE2, Delphi XE3, Development, Software Development | 4 Comments »
Posted by jpluimers on 2013/07/18
I bumped into the below answer that I gave a while (what is 4 years in a developer’s life ) on StackOverflow.
It is about Delphi Design Patterns. Sepcifically the Factory Pattern, and explains how virtual constructors implement it.
They are one of the 3 corner stones on which the component based Delphi form designer and object inspector are built:
- Virtual constructors
- Properties (events are just a special form of property)
- Run-Time Type Information.
So here it goes: Read the rest of this entry »
Posted in Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, Software Development | 6 Comments »
Posted by jpluimers on 2013/07/10
Just found out that the kind people at BitSavers added some scanned USCD Pascal documentation in PDF format:
It reminds me of my early Pascal days on Apple ][. UCSD Pascal was so slow that I was glad to discover Turbo Pascal 1.0, which lacked some of the UCSD Pascal features (for instance cross platform – including Mac, almost 30 years ago! – and Turtle graphics), but was blazingly fast.
Trade offs indeed (:
–jeroen
Posted in BitSavers.org, Delphi, Development, History, Pascal, Software Development, Turbo Pascal, UCSD Pascal | 10 Comments »
Posted by jpluimers on 2013/07/09
Sometimes a generic answer to a specific answer gives people a lot more insight into what they actually want to accomplish than a specific answer.
Plus that the knowledge does not only apply to VCL in any Delphi version: it works in any development environment where you can draw.
That’s why I like this 2D transformation answer so much: Read the rest of this entry »
Posted in Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, Software Development | Leave a Comment »