[fpc-devel] Abbrevia and Delphi compatibility
After eliminating dozens of bugs now I have a working version of Abbrevia for Delphi. Unfortunately this version is not usable with FPC, primarily because FPC doesn't support properties for the Object type. In my code I like to use Object for records with methods and properties, which need no dynamic memory allocation. In Abbrevia this feature allowed to eliminate near 100 methods of various classes, and simplified more code. After all I found the following essential features missing in FPC: 1) Properties for Object type. 2) Sets with minimal size, at least with 1 and 2 bytes for replacement of Byte and Word types. I consider both features as vital in translations from C to Pascal, and in the detection and elimination of bugs. Will it be possible to add these features to FPC, this year? DoDi ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
On 15 feb 2005, at 02:35, DrDiettrich wrote: 1) Properties for Object type. I guess this won't be that hard to add, given that we already support global properties (so they're not really tied to classes) 2) Sets with minimal size, at least with 1 and 2 bytes for replacement of Byte and Word types. This would be quite a bit more work. Jonas ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> After eliminating dozens of bugs now I have a working version of > Abbrevia for Delphi. Unfortunately this version is not usable with FPC, > primarily because FPC doesn't support properties for the Object type. > > In my code I like to use Object for records with methods and properties, > which need no dynamic memory allocation. In Abbrevia this feature > allowed to eliminate near 100 methods of various classes, and simplified > more code. After all I found the following essential features missing in > FPC: > > 1) Properties for Object type. Since which Delphi version is this allowed? FPC has an explicit check for delphi mode to disable property in tp style object. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> > After eliminating dozens of bugs now I have a working version of > > Abbrevia for Delphi. Unfortunately this version is not usable with FPC, > > primarily because FPC doesn't support properties for the Object type. > > > > In my code I like to use Object for records with methods and properties, > > which need no dynamic memory allocation. In Abbrevia this feature > > allowed to eliminate near 100 methods of various classes, and simplified > > more code. After all I found the following essential features missing in > > FPC: > > > > 1) Properties for Object type. > > Since which Delphi version is this allowed? FPC has an explicit check for > delphi mode to disable property in tp style object. D6 accepts: type x = object fblaat : integer; property blaat:integer read fblaat write fblaat; end; assignig fblaat and writeln(blaat) also works. So it seems it works as expected in D6. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> After eliminating dozens of bugs now I have a working version of > Abbrevia for Delphi. Unfortunately this version is not usable with FPC, > primarily because FPC doesn't support properties for the Object type. > > In my code I like to use Object for records with methods and properties, > which need no dynamic memory allocation. In Abbrevia this feature > allowed to eliminate near 100 methods of various classes, and simplified > more code. After all I found the following essential features missing in > FPC: > > 1) Properties for Object type. Since which Delphi version is a property allowed in an normal object? Currently FPC has special code that forbids property in objects for delphi mode. > 2) Sets with minimal size, at least with 1 and 2 bytes for replacement > of Byte and Word types. > > I consider both features as vital in translations from C to Pascal, and > in the detection and elimination of bugs. Will it be possible to add > these features to FPC, this year? We can't promise anything. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> 2) Sets with minimal size, at least with 1 and 2 bytes for replacement > of Byte and Word types. > > I consider both features as vital in translations from C to Pascal, and > in the detection and elimination of bugs. Will it be possible to add > these features to FPC, this year? I'm interested in the last one. What is exactly the problem with it, except foreign data, like API declarations (which are rare anyway), and binary files? The C argument is a bit doubtful, since there are more such problems (like bitpacking, not being able to exactly duplicate any union), so 1:1 remapping is not really possible anyway. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
2) Sets with minimal size, at least with 1 and 2 bytes for replacement of Byte and Word types. This is already correctly working (at least in FPC 1.9.x). For example: type {$MINENUMSIZE 2} enumDMUS_VARIATIONT_TYPES = ( DMUS_VARIATIONT_SEQUENTIAL {= 0}, (* Play sequential starting with variation 1. *) DMUS_VARIATIONT_RANDOM {= 1}, (* Play randomly. *) DMUS_VARIATIONT_RANDOM_START {= 2}, (* Play sequential starting with a random variation. *) DMUS_VARIATIONT_NO_REPEAT{= 3}, (* Play randomly, but don't play the same variation twice. *) DMUS_VARIATIONT_RANDOM_ROW {= 4} (* Play randomly as a row: don't repeat any variation until all have played. *) ); begin WriteLn(SizeOf(enumDMUS_VARIATIONT_TYPES)); end. will write "2" ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> D6 accepts: > > type x = object > fblaat : integer; > property blaat:integer read fblaat write fblaat; > end; > > assignig fblaat and writeln(blaat) also works. > > So it seems it works as expected in D6. Same with FPC, the below program prints 1234 (recent 1.9.7): {$mode delphi} type x = object fblaat : integer; procedure fillblaat; property blaat:integer read fblaat write fblaat; end; procedure x.fillblaat; begin fblaat:=1234; // this 1234 is printed. end; var y:x; begin y.fblaat:=1234; y.fillblaat; // this can be omitted and it still works writeln(y.blaat); end. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
> After eliminating dozens of bugs now I have a working version of > Abbrevia for Delphi. Unfortunately this version is not usable with FPC, > primarily because FPC doesn't support properties for the Object type. > > In my code I like to use Object for records with methods and properties, > which need no dynamic memory allocation. In Abbrevia this feature > allowed to eliminate near 100 methods of various classes, and simplified > more code. After all I found the following essential features missing in > FPC: > > 1) Properties for Object type. Since which Delphi version is this allowed? FPC has an explicit check for delphi mode to disable property in tp style object. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
On 16 feb 2005, at 13:24, Alexey Barkovoy wrote: 2) Sets with minimal size, at least with 1 and 2 bytes for replacement of Byte and Word types. This is already correctly working (at least in FPC 1.9.x). For example: No, those are enumerations, not sets. Jonas ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
Marco van de Voort wrote: > > > 2) Sets with minimal size, at least with 1 and 2 bytes for replacement > > of Byte and Word types. > > > > I consider both features as vital in translations from C to Pascal, and > > in the detection and elimination of bugs. Will it be possible to add > > these features to FPC, this year? > > I'm interested in the last one. What is exactly the problem with it, except > foreign data, like API declarations (which are rare anyway), and binary > files? The size restriction applies almost only to filed records, whereas in-memory data structures usually can be realigned at will. The use of enums and sets allows for safer code, instead of working with bitmasks and general ordinal data types and constants. According (set) variables can be found in many data structures, so that it would be nice to retype such fields as appropriate sets in Pascal code. > The C argument is a bit doubtful, since there are more such problems (like > bitpacking, not being able to exactly duplicate any union), so 1:1 remapping > is not really possible anyway. Even C bitfields can be emulated perfectly in Pascal, with Object types and properties. Named C unions can be emulated by variant records in Pascal, only anonymous unions sometimes require changes to the code, or the use of objects with properties. But also some (legacy) Pascal constructs (file open mode...) could be much nicer and safer with structured data types. DoDi ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Abbrevia and Delphi compatibility
Peter Vreman wrote: > > 1) Properties for Object type. > > Since which Delphi version is a property allowed in an normal object? I'm not sure, but at least D4 supports such properties. > Currently FPC has special code that forbids property in objects for delphi > mode. Then it would be sufficient to remove that special code? BTW, I didn't find object properties mentioned in the FPC documentation (HTML). Properties only are described for Class types? > We can't promise anything. Granted ;-) DoDi ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re[2]: [fpc-devel] Abbrevia and Delphi compatibility
Hello Jonas, Wednesday, February 16, 2005, 11:24:00 AM, you wrote: >> 1) Properties for Object type. Should already work with {$mode Delphi} - if this feature is not broken again now. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re[2]: [fpc-devel] Abbrevia and Delphi compatibility
Hello Marco, Wednesday, February 16, 2005, 1:32:58 PM, you wrote: >Currently FPC has special code that forbids property in objects for delphi >mode. At least Delphi versions from 2 to 7 support propereties for old-style objects. This feature is used BTW in KOL library. Some years ago I implemented a patch for FPC 1.1 which resolved this feature for Delphi compatible mode but suppressed for all others. I hope that this feature is not removed also now (but I have not latest FPC builds now). ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel