GARANTIR DESCONTO

Fórum Poxa, alguém? Streams e records #136898

14/02/2003

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar