Archive for the ‘Delphi’ Category
Posted by jpluimers on 2013/02/19
About 3 years ago, I wrote a small article about the Cards.dll that I encapsulated even longer ago.
I just did some looking around to see on which versions of Windows Cards.dll was still available, as Card.dll has been there since the Windows 16-bit era.
Conclusion: this C# example shows was available on Windows XP, but it seems not available on Windows Vista and up.
The successor is CardGames.dll, which is far bigger than Cards.dll, only has resources (but way more than Cards.dll), and no code.
I’ll probably use XN Resource Editor 3.1 for some investigation later on to see how to get some demos running on more modern versions of Windows (:
–jeroen
via:
Posted in .NET, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Delphi, Development, Software Development | 4 Comments »
Posted by jpluimers on 2013/02/15
Thanks Lennart Aasenden for sharing this on FaceBook: Mariuz’s Blog: Adobe Photoshop 1.0 Source Code About 75% is in Pascal.
This was back when I was already a professional Turbo Pascal for PC programmer, not yet a Mac programmer, but doing Pascal on VMS to assist a client in the scaleable font industry.
The 1990 version 1.0.1 of Photoshop code was written in Object Pascal, and based on MacApp.
Back then Apple’s Object Pascal was one of the few IDEs available to develop Macintosh software. Later on, you also had Turbo Pascal and THINK Pascal (which many Macintosh developers preferred, was later acquired by Symantec, and died). A big reason they liked it so much was the THINK integrated debugger, which was lightyears ahead of any Pascal product on any other platform.
Apple had great documentation, not only on their compilers and libraries, but also one that everyone should hav read: Apple Human Interface Guidelines: The Apple Desktop Interface: Inc. Apple Computer: 9780201177534: Amazon.com: Books.
The Adobe Photoshop 1.0 source code can be downloaded (for non-commercial use) from the Computer History Museum | @CHM : Adobe Photoshop Source Code page.
The source is a very interesting read, and a great comments on it by Grady Booch.
This is how everyone should think about their code.
–jeroen
PS: A nice introduction to Object Pascal for a Macintosh is at MacTech | The journal of Apple technology..
Posted in Delphi, Development, Object Pascal, Pascal, Software Development, Think Pascal | Tagged: apple technology, computer, computer history museum, desktop interface, human interface guidelines, mac programmer, macintosh developers, object pascal, software, technology | 4 Comments »
Posted by jpluimers on 2013/02/15
I mailed the DelphiFeeds people to add the MonkeyStyler Blog by Mike Sutton.
It is a nice Delphi related blog focussing on FireMonkey stuff.
–jeroen
Posted in Delphi, Delphi 1, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Development, FireMonkey, OS X FMX, Software Development | 4 Comments »
Posted by jpluimers on 2013/02/14
The current Delphi bindings for WebSphere MQ (formerly known as MQSeries) are very old.
The MA7Q: WebSphere MQ – MQI for Delphi formal binding from IBM is incomplete. Even though it is from 2005, it doesn’t contain the MQCD definition that was there at least since WebSphere MQ 5.2 (released in 2000). And by now it should be gone, since MQSeries 5.x is not supported any more.
A newer one by Dinko Miljak which is mentioned on Delphi 3000 and mentioned on MQSeries.net, has some errors and is from the WebSphere MQ 5.2 era.
It is available via this posting on MQSeries.net (direct download link), and this author reference on Torry.net (direct download link). Both files are identical.
Since it is much more extensive than the IBM version, I am using it to update it for newer WebSphere versions.
Great help while updating are the Gefira MQ bindings for Python: readable, indexed on nullege, and helpful (for instance on the usage of MQHO_UNUSABLE_HOBJ – which is assigned when calling MQCLOSE, I found out later that it is also explained here). The latest Gefira change was in 2008, but still way better than the Delphi bindings.
Also the Perl bindings for MQSeries together with their ASCII/EBCDIC client demo helped a lot.
A big issue when translating is that the i5/OS API in large part uses different names than the regular API.
For instance MQMD (i5/OS) contains MDENC, MDCSI and MDFMT fields where MQMD (regular) contains and Encoding, CodedCharSetId and Format fields.
As soon as I have done proper translation and upgrading to WebSphere MQ 7.x, I will upload source code.
Source code will be on the BeSharp.net CodePlex repository.
–jeroen
Posted in Delphi, Development, MQ Message Queueing/Queuing, Software Development, WebSphere MQ | 1 Comment »
Posted by jpluimers on 2013/02/14
18 years ago, Delphi 1 was launched (still not sure if valentine’s day was a good idea for a product launch).
I wonder – when writing this long before valentine’s day – if the matureness of Delphi finally introduced real undo/redo in the form designer.
Probably still a dream, but still…
–jeroen
Posted in Delphi, Delphi 1, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2013/02/13
A couple of notes on NMQ_MQ_LIB and the WebSphere MQ aka MQSeries client libraries:
- NMQ_MQ_LIB specifies the MQ DLL to use
- Depending in your interface, the NMQ_MQ_LIB can be an environment variable, application setting, or hardcoded DLL name
- MQSeries 5.x and WebShpere MQ 6.x require you to specify the bitness in the MQIC DLL name (they don’t accept mqic.dll, but require mqic32.dll) when you access it from the C or Delphi interface.
MQM DLL does not require bitness: it is mqm.dll in all versions.
- From client applications, use mqic.dll or mqic32.dll.
And a few links:
I needed this to get some apps talking to MQ on AS/400 aka iSeries aka System i working correctly by getting the DLLs right.
–jeroen
Posted in .NET, AS/400 / iSeries / System i, Delphi, Development, MQ Message Queueing/Queuing, Software Development, WebSphere MQ | Leave a Comment »
Posted by jpluimers on 2013/02/12
This is way cool, and has been there for a long time, and I completely missed it until recently (:
On the Stack Exchange Data Explorer, you can write your own queries for any of the StackExchange sites as they share a common database infrastructure.
The queries can even contain an execution plan, and given the large number of questions (the total of Questions (table Posts) is total over 10 million now: select count(*) as QuestionCount from Posts as Questions).
There are many examples, for instance this one by sam.saffron and TLama that lists posts outside the Delphi area: Read the rest of this entry »
Posted in Database Development, Delphi, Development, SQL, SQL Server | 2 Comments »
Posted by jpluimers on 2013/02/06
One of the really nice contributions on StackOverflow by Allen Bauer is almost 3 years ago.
It is about these three Delphi VCL methods introduced by TWinControl to make control development easier:
The really cool thing is that this API has been stable since 1995, and still allows you to subclass windows controls or create your own controls in a very simple way.
Note that Allen does not cover DestroyWnd or DestroyWindowHandle, but those are just counterparts of CreateWnd and CreateWindowHandle.
In normal Delphi application code, you have less Destroy overrides than Create overrides, and the same holds for control development.
–jeroen
via: delphi – What’s the difference between CreateWnd and CreateWindowHandle? – Stack Overflow.
Posted in Delphi, Delphi 1, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Software Development | 2 Comments »
Posted by jpluimers on 2013/01/30
Just in case you wonder about Property using Generics in Delphi, they are not possible.
Thanks David for mentioning it, Hallvard for mentioning it even earlier and Rudy for confirming it.
These are supported with Generics in Delphi:
All of the supported aspects are linked to articles from excellent authors. There is far more on the internet about Delphi and Generics, but those are a good start.
Thanks Malcolm, Phil, Barry, Hallvard, Jolyon and many others for posting all those articles!
Note that this is not possible in C# either, Julian Bucknall organized a chat and explains why, but there is a workaround which I might try to port to Delphi in the future.
–jeroen
via: Property using Generics in Delphi – Stack Overflow.
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 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Development, Software Development | 3 Comments »