Showing posts from October, 2009

PHP4Delphi vs Delphi for PHP. (Part II)

In the comments to my previous post Tim Del Chiaro gave the very interesting explanation how "Delphi for PHP" got its name:

"Delphi for PHP got its name because it's the only PHP IDE that offers a development style similar to Delphi for Windows with drag-and-drop visual development and a visual component library.

When building the Delphi for PHP IDE, the team took advantage of some of the great Delphi add-ins from the developer community including PHP4Delphi. We're glad we could recognize you and other community members in the about box of the product.

If anyone else is interested in Delphi for PHP, they can get more information at"

Write Date value in ExcelWriter

People asking me how to insert the date value into Excel coulmn, but as a date, not just as a text in my C# ExcelWriter class.
I extended this class and added 2 additional methods:

 public void WriteFormat(string value) public void WriteCell(int row, int col, DateTime value, int formatIndex)

// C# ExcelWriter class v1.1 // by Serhiy Perevoznyk, 2008-2009 using System; using System.Collections.Generic; using System.Text; using System.IO; namespace XLSExportDemo { /// <summary> /// Produces Excel file without using Excel /// </summary> public class ExcelWriter { private Stream stream; private BinaryWriter writer; private ushort[] clBegin = { 0x0809, 8, 0, 0x10, 0, 0 }; private ushort[] clEnd = { 0x0A, 00 }; private void WriteUshortArray(ushort[] value) { for (int i = 0; i < value.Length; i++) writer.Write(value[i]); } /// <summary> /// Initia…

PHP4Delphi comeback: version 7.2 released

Today I made a new release of PHP4Delphi. Download version 7.2:

 Some time ago the development of PHP4Delphi was frozen, but meanwhile I received a lot of questions related to compatibility with latest versions of Delphi and PHP. Finally I decided to make a new release with support of Delphi starting from Delphi 5 till Delphi 2010 and PHP 5.3.0 (both releases for Visual Studio 9 and Visual Studio 6).

PHP4Delphi vs Delphi for PHP

It's the real Comedy of Errors :)  Recently I looked in Google and was surprised how many links pointed to one of the products or the name is mentioned somewhere on the forum when the author means another product. I do understand now CodeGear's point of view (see my second post), but the situations remains the same. I feel that mostly PHP developers use wrong name, because Delphi developers know the difference between "Delphi for PHP" and PHP4Delphi.

The best description of this disambiguation was given by Jonathan Benedicto:

"Delphi For PHP can run Delphi code, because Delphi For PHP can run PHP code and because PHP code can run Delphi code. This is because PHP can run Delphi code, because a PHP extension can be written in Delphi, using PHP For Delphi's PHP extensions development framework. So, using Delphi For PHP, which, written in Delphi, runs PHP code, using PHP For Delphi, that PHP code, running in Delphi For PHP, can call a PHP extension being PHP, and…

PHP4Delphi and Delphi for PHP

Delphi for PHP uses PHP4Delphi 

I know many commercial products that use PHP4Delphi, but the fact that it used by my favorite company is most important for me. For more information about Delphi for PHP please visit Embarcadero site.

EIDNative - minor release

Today I updated EIDNative. The changes related to Delphi sample and the way of processing the card when it was inserted in the reader before application started. If you want to test this release, the download link is

I would like to thanks Wouter Devos for useful feedback.

SMARTDOCS: really smart documents

Usually the usage of Belgian eID card is limited to some web operations ( tax-on-web is maybe the most popular site where you can use your card).  Despite the fact that now every Belgian citizen has eID card, the market of desktop applications is almost empty. It's why I was so pleased to discover site and specially I love the idea of smartdocs functionality.

Read SIS card from .NET application

Here is a simple smaple of reading SIS card data using EIDNative library from .NET application.

using System; using System.Collections.Generic; using System.Text; using EIDNative; namespace SISCardReader { class Program { static void Main(string[] args) { EIDCard eidCard = new EIDCard(); eidCard.InitReader(false); if (eidCard.ReadSisId()) { Console.WriteLine("name: " + eidCard.SISIdentity.Name); Console.WriteLine("first name: " + eidCard.SISIdentity.FirstName); Console.WriteLine("initial: " + eidCard.SISIdentity.Initial); Console.WriteLine("sex: " + eidCard.SISIdentity.Sex); Console.WriteLine("birthdate " + eidCard.SISIdentity.BirthDate); Console.WriteLine("social security number: " + eidCard.SISIdentity.SocialSecurityNumber); Console.W…

Read SIS card from Delphi

Here is a simple smaple of reading SIS card data using EIDNative library from Delphi application.

program SisCardRead; {$APPTYPE CONSOLE} uses Windows, SysUtils, Classes, SISCard in '..\SISCard.pas', EIDNative in '..\EIDNative.pas', EIDCard in '..\EIDCard.pas'; type TManagerProc = procedure; stdcall; TManagerErrorProc = procedure(ErrorCode : cardinal); stdcall; PManagerData = ^TManagerData; TManagerData = record CardInserted : TManagerProc; CardActive : TManagerProc; CardRemoved : TManagerProc; CardInvalid : TManagerProc; ReaderWaiting : TManagerProc; Error : TManagerErrorProc; end; //callback functions procedure DoCardInserted; stdcall; begin writeln('Card inserted'); end; procedure DoCardActive; stdcall; begin writeln('Card active'); end; procedure DoCardRemoved; stdcall; begin writeln('Card removed'); end; procedure DoCardInvalid; stdcall; begin writeln(…

EIDNative 2.3 - now supports SIS cards

The new version of EIDNative library is available for download. In this version I added support for Belgian SIS cards. Now you can access Belgian electronic ID card or SIS card from your application without using Middleware or any other specialized libraries. EIDNative is freeware and works few times faster than official Middleware SDK.

EIDNative 2.3 download:

I would like to ask people who using EIDNative to support this project. Please post on your website, blog, personal page a link to EIDNative home page:

More details about Krento

Krento is .NET application, animated, alpha blended and skinned widget and application engine. Maybe at first sight it looks like some dock applications, but it's wrong impression. Every item of Krento Stones Circle is mini-application (widget) that can do different tasks. Krento allows development of new stone's types. That allows to easy extend Krento functionality.
Krento also supports AddOns (plugins) based on Karna .NET technology. It makes the project even more flexible.

Unlike other applications, Krento do not simulate any Mac applications. Most of the Krento functionality is accessible by using keyboard or mouse, so the people who used to type or to click should feel comfortable with it. It does not stay at the desktop hidden by other applications, like many widget engines and do not stay at the screen edge, like dock applications. It simply popup when you press hot-key combination or press the mouse wheel.

Krento source code
Krento is freeware, but not Open Source proj…

Introducing Krento: Modern desktop organizer for Windows

Here is very first screenshots of Krento. Krento is freeware widget engine for Windows, based on Karna .NET library. It includes widgets (in Krento terms "stones") for quick launching applications and web bookmarks, acting in this case as a fast application launcher, accessing virtual folders, like "My computer" or "Recycle bin", displaying current IP address of your PC, etc... The development of new stones is very easy and every new release of Krento will include more new interesting stones, extending Krento functionality.

Krento Stones Manager

Krento Pulsar

Selecting stone's type

Krento Manager popup menu

As Krento supports skins, here is few examples how it looks with the skins applied. Because Krento is a new product, it supports also skins of Rocket Dock, so you don't have to wait for Krento skins collection, you can use existing one!.

Download Krento:

Krento requires Microsoft .NET …