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. 2 - delphi allows for a resourcestring to be passed by address (@MyResourceString), fpc don't.
TCollection:
1 - curiously fpc TCollection hasn't a remove or delete method, delphi TCollection has it. [maybe I did't find it]
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] 2 - delphi has TWriter.WriteStr (which is different from WriteString that use AnsiString), same with TReader.ReadStr; fpc hasn't. 3 - delphi TStream has a FlushBuffer method; fpc hasn't. [which is curious and potentially slower]
4 - delphi TReader.ReadChar/TWriter.WriteChar use a char (1 byte); fpc use a string (6 byte at least).
RTTI:
1 - delphi TPropInfo.PropType is PPTypeInfo; fpc TPropInfo.PropType is PTypeInfo (a direct pointer instead of a pointer of pointer). [Are there equivalent?]
Variants:
1 - fpc lacks VarClear() function. [It exists but it's not public]
Db:
1 - fpc lacks a TCustomConnection abstract class. [Delphi TCustomConnection is not really abstract but it doesn't do anything anyway] 2 - fcp TDataset lacks locate method. [I don't checked for an equivalent] 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]
2 - TStringListSortCompare function type differs. [Trivial to fix]
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]
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.
Bye Uberto
