Poxa, alguém? Streams e records

Delphi

14/02/2003

Pessoas, alguém saberia me ajudar? Estou tentando implementar funções no TTreeNode, só que para obter e colocar informações tem a seguinte classe declarada no padrão

PNodeInfo = ^TNodeInfo;
TNodeInfo = packed record
ImageIndex: Integer;
SelectedIndex: Integer;
StateIndex: Integer;
OverlayIndex: Integer;
Data: Pointer;
Count: Integer;
Text: string[255];
end;

eu acrescentei abaixo dos padrões os seguintes campos
Url: string[60];
SelectedIndexCollapsed: Integer;
SelectedIndexExpanded: Integer;

mas na hora de ler os meus campos ele lê errado! Sai vários símbolos estranhos, provavelmente lendo de memória errada! A função de leitura é

procedure TTreeNode.ReadData(Stream: TStream; Info: PNodeInfo);
var
I, Size, ItemCount: Integer;
LNode: TTreeNode;
begin
Owner.ClearCache;
Stream.ReadBuffer(Size, SizeOf(Size));
Stream.ReadBuffer(Info^, Size);
Text := Info^.Text;
Url := Info^.Url;
ImageIndex := Info^.ImageIndex;
SelectedIndex := Info^.SelectedIndex;
SelectedIndexCollapsed := Info^.SelectedIndexCollapsed;
SelectedIndexExpanded := Info^.SelectedIndexExpanded;
StateIndex := Info^.StateIndex;
OverlayIndex := Info^.OverlayIndex;
Data := Info^.Data;
ItemCount := Info^.Count;
for I := 0 to ItemCount - 1 do
begin
LNode := Owner.AddChild(Self, ´´);
LNode.ReadData(Stream, Info);
Owner.Owner.Added(LNode);
end;
end;

Mas seguindo todas as funções os valores estão certos, somente qdo ele obtêm de Info^ é que sai errado as propriedades que eu acrescentei! Alguém tem alguma pista???

grato

Anderson


Anonymous

Anonymous

Curtidas 0
POSTAR