[fpc-pascal] stuck with untyped pointer
spir ☣
denis.spir at gmail.com
Fri May 28 18:57:42 CEST 2010
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
More information about the fpc-pascal
mailing list