I´m using Embarcadero RAD Studio XE7. My problem is that I have a memory dataset which contains many fields. Some of them are string type and I have a record like this:
For example:
Code: Select all
kbmMyDataSet: TKbmMemTable;
kbmMyDataSetIntegerVar1: TIntegerField;
kbmMyDataSetIntegerVar2: TIntegerField;
kbmMyDataSetStringVar1: TStringField;
kbmMyDataSetStringVar2: TStringField;
RMyRec=record
IntegerVar1:Integer;
IntegerVar2:Integer;
StringVar1:string;
StringVar2:string;
end;
Code: Select all
procedure RellenarInfo;
begin
vMyRec.IntegerVar1:=kbmMyDataSetIntegerVar1.Value;
vMyRec.IntegerVar2:=kbmMyDataSetIntegerVar2.Value;
vMyRec.StringVar1:=kbmMyDataSetStringVar1.AsString; <--- memory leak, kbmMyDataSetStringVar1.AsString='PLATA' and it assigns properly to vMyRec.StringVar1
vMyRec.StringVar2:=kbmMyDataSetStringVar2.AsString;
end;
The stacktrace says:
madExceptDbg - GetMemCallBack
System - @GetMem
System - @NewUnicodeString
System - @UStrFromPWCharLen
System - InternalUStrFromPCharLen
Data.DB - TStringField.GetAsString;
UForm1 - TForm1.RellenarInfo; // my procedure
I have found this same problem with a query (FibPlus library)
Anyone can help me with this problem?
Best rewards.
Alberto