Вверх ↑
Ответов: 1841
Рейтинг: 369
#1: 2015-12-03 17:47:03 ЛС | профиль | цитата
Не знаю чего там у вас не приводится, всё должно приводиться
Просто список неправильно создавался.
#pas
procedure THiAsmClass.doWork;
var
Tf: TFirst;
Ts: TSecond;
myList: PList;
begin
myList := NewList;
Tf := TFirst.Create;
Tf.name := 'BlaBlaBla';
Ts := TSecond.Create;
Ts.age := 333;
myList.Add(Ts);
myList.Add(Tf);
_hi_OnEvent(onEvent, myList.Count);
_hi_OnEvent(onEvent, TFirst(myList.Items[1]).Name);
// myList.Destroy;
end;
end.
------------ Дoбавленo в 17.47:
Более того, если смещения и типы необходимых полей классов совпадают, можно без опасений обращаться к таким полям после приведения (кастования?).
unit HiAsmUnit;

interface

uses Kol,Share,Debug;

type
THiAsmClass = class(TDebug)
private

public
onEvent:THI_Event;
procedure doWork(var dt:TData; idx:word);

end;

TFirst = class
public
first: integer;
foo: string;
goo: string;

end;

TSecond = class
public
second: integer;
bar: string;

end;

implementation

procedure THiAsmClass.doWork;
var
Tf: TFirst;
Ts: TSecond;
myList: PList;
begin
myList := NewList;
Tf := TFirst.Create;
Tf.foo := 'foo';
Ts := TSecond.Create;
Ts.bar := 'bar';
myList.Add(Ts);
myList.Add(Tf);
_hi_OnEvent(onEvent, TFirst(myList.Items[0]).foo);
_hi_OnEvent(onEvent, TFirst(myList.Items[1]).foo);
// myList.Destroy;
end;
end.
карма: 1
1
Голосовали:sla8a