Hello,

While waiting for more information about how to use "associated objects" with 
TStringList, I started to implement // lists for names (TString) and values 
(TFPList). This builds a kind of flexible record type, I called "Struct" 
because the name "Record" is not available ;-)
Values are in in fact Struct-s themselves. All works fine when storing data, 
but I cannot get it back. Precisely,
   i := self.names.indexOf(name);
   val := Struct(self.values[i]);
raises "got untyped expected Struct". Sure, that's why I'm trying to cast... 
Without casting to Struct, the compiler indeed throws "got pointer expected 
Struct". I'm very surprised since I already did this.

So, I quickly wrote a simpler test case wrapping structure, just putting 
objects in a TFPList and casting back: all works fine:

========================
program __essai__;
{$mode objfpc}{$H+}
uses
    Classes, SysUtils;

type Struct    = Class
        val    : Integer;
        constructor struct(i:Integer);
        function text : String;
    end;

constructor Struct.struct(i:Integer);
begin
    inherited;
    self.val := i;
end;

function Struct.text : String;
begin
    result := '<' +intToStr(self.val)+ '>';
end;

var
    s    : Struct;
    l    : TFPList;
begin
    s := Struct.struct(1);
    writeln(s.text);
    l := TFPList.create;
    l.add(s);
    s := Struct(l[0]);    //////////////////
    writeln(s.text);
end.
=== output ===
<1>
<1>


Thank you,

Denis
________________________________

vit esse estrany ☣

spir.wikidot.com
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to