[fpc-pascal] stuck with untyped pointer

Michael Van Canneyt michael at freepascal.org
Fri May 28 19:08:15 CEST 2010



On Fri, 28 May 2010, spir ☣ wrote:

> 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:

If you want this, I suggest you look at fpjson. it does all this for you. It
has an extensive testsuite, so plenty of code to peep at.

Michael.
>
> ========================
> 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 at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>


More information about the fpc-pascal mailing list