Тема: TreeView.AddObject
Показать сообщение отдельно
  #1  
Старый 05.03.2013, 05:55
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию TreeView.AddObject

Народ, я уже с ума схожу с этим Эддобжектом... Я понимаю, в поинтере хранится 4 байта и тд, но вот этот код у меня срабатывает как надо:
Код:
var
VarStr:string;
VarPtr:pointer;
begin
VarStr:='Hello, World!';
VarPtr:=pointer(VarStr);
ShowMessage(string(VarPtr));
end;
Выводит 'Hello, World!'

Не знаю по какой причине. Хотя, наверное, не должен.

вот такой код
Код:
for ...
begin
TreeView1.items.AddChildObject(Node,OtherVarString,pointer(VarStr));
end;
срабатывает не всегда. То есть иногда возвращает всякий мусор. Ну да ладно, можно же сделать СтрингЛист. Делаю так:
Код:
for ...
begin
VarInt:=VarStringList.add(VarStr);
VarPtr:=pointer(VarInt);
TreeView1.items.AddChildObject(Node,OtherVarString,VarPtr);
end;
и вуаля!.... Строка VarPtr:=pointer(VarInt); не КОМПИЛИРУЕТСЯ!!! То есть когда я пошагово перебираю код (при выполнении), компилятор просто проскакивает МИМО этой строки. Если я ставлю на ней БрейкПоинт, то ничего не происходит.

Если я обхожусь без этой строки, то есть
Код:
TreeView1.items.AddChildObject(Node,OtherVarString,pointer(VarInt));
то в дату нода вообще ничего не добавляется, хотя переменная VarInt существует и имеет вполне конкретное значение (ну это и из кода видно).
Ответить с цитированием