You are not logged in.
Pages: 1
This happens when I use a class that have references to another class.
see below:
TLogType = class(TSynPersistent)
private
fName: RawUTF8;
fValue: integer;
published
property name: RawUTF8 read fName write fName;
property value: integer read fValue write fValue;
end;
TLogTypeObjArray = array of TLogtype;
TMyLog = class(TSynpersistent)
private
fLogdate: TDate;
fComment: RawUTF8;
fLogType: TLogType; <<<<-- the reference
published
property logDate: TDate read fLogDate write fLogDate;
property comment: RawUTF8 read fComment write fComment;
property logType: TLogType read fLogType write fLogType;
end;
The reference is flattened in the TSQLRecord so the field "LogType" will be two fields:
LogType_Name" and "LogType_value".
Don't have a clue any longer how to solve this. I have a small zip file of a test project to share but don't know where to put it.
The exception occurs in a section called "fake interface" in the mORMot unit.
Would appreciate any help to solve this. Also, a site where I could upload my little zip file (12k).
Maybe this link? https://1drv.ms/u/s!AkzgaKIeNifrhLQze1G … A?e=ZCbpMx
Last edited by larand54 (2021-09-09 14:35:29)
Delphi-11, WIN10
Offline
Hi,
You haven't initialized fLogType. Try using TSynAutoCreateFields as the base class of TMyLog and remove the write part of the logType property.
TMyLog = class(TSynAutoCreateFields)
private
fLogdate: TDate;
fComment: RawUTF8;
fLogType: TLogType;
published
property logDate: TDate read fLogDate write fLogDate;
property comment: RawUTF8 read fComment write fComment;
property logType: TLogType read fLogType;
end;
For the TSQLRecord properties, you have flattened them propertly, but make sure to use the same letter casing.
For example logType.name should be logType_name and not LogType_Name.
Offline
Ok, thanks.
Yes, the problem was that I didn't use "TSynAutoCreateFields". After changing that, all is now well.
Delphi-11, WIN10
Offline
Pages: 1