On Tue, 1 Feb 2005 [EMAIL PROTECTED] wrote:

Hi,
I'm going to port IO (www.instantobjects.org) to fpc.
The codebase is quite large (about 30000 lines of code) and I don't really
know fpc, but I hope I'll understand it better at the end of the story. ;)
I'm in touch with IO main developers so there's no problem to slightly change
IO code for compatibility.

I tried first to compile it commenting problematic parts, all in all there
are very few problems.
I'm not sure fpc attitude to Delphi compatibility, also regarding IP
problems. So I list here what I found, please tell me what I can submit as
bug, and what is yet differently implemented (or intended to be so).
I tested with a Lazarus build 0.9.4 (3/1/05) under win32, maybe it'd be
better testing with fpc only and a cvs version but I was interested in it as
a proof of concept.

ResourceString:
1 - delphi has TRecStringRec and PRecStringRec, used by (among others)
Exception.CreateRes(); fpc has PString that is different.

This could be added for compatibility's sake.

2 - delphi allows for a resourcestring to be passed by address
(@MyResourceString), fpc don't.

Unfortunately, resource strings don't work like that in FPC. I don't think it will be possible to change this.

TCollection:
1 - curiously fpc TCollection hasn't a remove or delete method, delphi
TCollection has it. [maybe I did't find it]

I have added delete

Streams:
1 - delphi TFiler has an internal Stream, TReader and TWriter use it and
expose Position, Read, Write and other methods that use it; fpc TFiler
hasn't. [in this case maybe fpc has the right approach btw]

This will not be changed. FPC has a different architecture, which allows for different reader/writer backends; Position, read and Write are not relevant for some backends, so these methods/properties will not be added.

2 - delphi has TWriter.WriteStr (which is different from WriteString that use
AnsiString), same with TReader.ReadStr; fpc hasn't.

I don't see the point of adding this except for compatibility's sake. Personally, I think Borland left it for compatibility with Delphi 1.

3 - delphi TStream has a FlushBuffer method; fpc hasn't. [which is curious
and potentially slower]

? TStream in D5 does not have this. It also makes no sense to have this, since TStream does not have a buffer. TFiler does have it, but see point 1 for this.

4 - delphi TReader.ReadChar/TWriter.WriteChar use a char (1 byte); fpc use a
string (6 byte at least).

See point 1, although maybe we can do something about this.


RTTI: 1 - delphi TPropInfo.PropType is PPTypeInfo; fpc TPropInfo.PropType is PTypeInfo (a direct pointer instead of a pointer of pointer). [Are there equivalent?]

This can be changed.


Variants: 1 - fpc lacks VarClear() function. [It exists but it's not public]

Can be added.


Db: 1 - fpc lacks a TCustomConnection abstract class. [Delphi TCustomConnection is not really abstract but it doesn't do anything anyway]

This can be added, but is obsoleted by TDatabase. Maybe it can be aliased.


2 - fcp TDataset lacks locate method. [I don't checked for an equivalent]

Because variants are not finished.

3 - Delphi TFieldDefs.Update is a boolean property; fpc TFieldDefs.Update is
a procedure.[Trivial to fix anyway]

Classes:
1 - fpc lacks a HexToBin and BinToHex functions. [It has them but only as
private methods of TParser]

These functions are in sysutils or strutils. They have no place in Classes.

2 - TStringListSortCompare function type differs. [Trivial to fix]

I'd need to check this.


Packages: 1 - I think fpc lacks run-time packages support. [If I'm mistaken I have to study it better. Anyway it's not a real problem]

This is correct, and is planned, but don't hold your breath.


As you can see there's nothing really serious, I can contribute code if you tell me. I hope IO will be useful to fpc and lazarus projects.

I'm sure it will be. Feel free to send patches to me for anything you think needs fixing.

Michael.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to