[fpc-pascal] Patch: new XML export for FCL-DB ready for inclusion, issue 19790 - includes Delphi Clientdataset
michael.vancanneyt at wisa.be
michael.vancanneyt at wisa.be
Thu Jul 28 09:24:17 CEST 2011
On Thu, 28 Jul 2011, Reinier Olislagers wrote:
> On 27-7-2011 20:52, michael.vancanneyt at wisa.be wrote:
>>
>>
>> On Wed, 27 Jul 2011, Reinier Olislagers wrote:
>>
>>> Update: includes first stab at Delphi Clientdataset. Please test with
>>> various datatypes as I haven't been able to map all of them...
>>
>> I added your implementation to SVN.
> Thanks, Michael.
>
> I noticed your remark on a failing conversion of a longint to a string -
> that code wouldn't have worked. Obviously a priority to increase the
> test coverage.
>>
>> But you may want to check your implementation on 64-bit prior to
>> submitting.
> I will compile & test on Linux x64 before submitting an upgrade
>>
>> Code like
>>
>> ftWideString: //fixed length or at least max length string
>> begin
>> TDOMElement(ColumnNode).SetAttribute('fieldtype', 'string');
>> TDOMElement(ColumnNode).SetAttribute('WIDTH',
>> UTF8Decode(string(ExportFields.Fields[ItemCounter].Field.Size)));
>> end;
>>
>> Is dead wrong. It passes on 32-bit (but generating wrong data), but
>> fails to compile on 64-bit.
> Hmmm, hadn't thought about size. (And size obviously matters here ;)
>
> Just to make sure I understand correctly: in a string field, Field.Size
> indicates the number of characters that can be stored in a field, while
> Field.DataSize indicates the number of bytes, right?
Yes.
>
> Complication is that e.g. Access expect character size for their size
> specification. Delphi Clientdataset will probably require datasize.
I don't think so, but I'm not sure. I would have to test that.
> Thanks, I'll look into it.
>>
>> The compiler has a warning for this, so checking your warnings while
>> compiling for 32-bit may also be a good idea.
>>
>> Michael.
>
> New plans:
> 1. Expand test coverage: additional datatypes, fixed string width fully
> filled with East Asian characters.
> Use the output of this coverage as baseline to verify code commits still
> deliver the proper export.
> 2. Incorporate fixes, e.g. those mentioned by Ludo Brands. Please keep
> those reports coming ;)
> 3. Clean up code (needless class-level variables), look into possibility
> of splitting entire procedures according to export format, instead of
> multiple case...of statements inside a procedure body.
I would appreciate that one. I think with some refactoring, the code could
be made much simpler.
>
> I'll keep a Mercurial repository on bitbucket to coordinate with others
> and upload a new patch when done.
Let me know when you're ready for a new patch :-)
Michael.
More information about the fpc-pascal
mailing list