powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите найти ошибку!
13 сообщений из 13, страница 1 из 1
Помогите найти ошибку!
    #32583892
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что в этом коде может быть не так ... почему отказываеться работать...

class TMyObject
{
public:
int obj_id;
//TObjectType obj_type;
};

class TNamedObject: public TMyObject
{
public:
AnsiString obj_name;
};

struct TNodeData {
TMyObject Data;
} *PNodeData;

// Begin
for (int ii=0;ii<3;ii++)
{
tmpNode = Tree->AddChild(NULL);
TNamedObject *root_obj = new TNamedObject;
root_obj->obj_id = -1;
root_obj->obj_name = "ЧЧЧЧЧЧЧ";
// Приведение типов
dynamic_cast <PNodeData>(Tree->GetNodeData(tmpNode));
// или
((PNodeData*)Tree->GetNodeData(tmpNode))
}
//end.

Выдают ошибку о том что нифига не могут найти такой класс...
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583921
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой класс?

Если PNodeData, то ничего удивительного, у тебя он нигде не определен.
А лучше, если бы ты привел сообщение компилятора полностью и на какой строчке он споткнулся.
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583928
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спотыкаеться на одной из строчек выделенных черным...

Походу я что то не то со структурой намутил!.

Почему

struct TNodeData {
TMyObject Data;
} *PNodeData;

не дает возможности определить переменную как PNodeData *tmpNodeData?

никогда не использовал структуры, всегда обходился классами, но тут вот вышла такая ситуация ... Отвратительно.
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583930
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dynamic_cast <PNodeData>(Tree->GetNodeData(tmpNode));
// или
((PNodeData*)Tree->GetNodeData(tmpNode))
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583937
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dynamic_cast <PNodeData>(Tree->GetNodeData(tmpNode));
// или
((PNodeData*)Tree->GetNodeData(tmpNode))
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583954
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:

typedef PNodeData TNodeData*;

И смысл этого не понятен:

dynamic_cast <PNodeData>(Tree->GetNodeData(tmpNode));
((PNodeData*)Tree->GetNodeData(tmpNode))

Если ты просто хотел засунуть в tmpNode->Data указатель на только что созданный объект (в цикле), тогда просто так

tmpNode->Data = root_obj;
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583975
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roman10

Изначально зачада звучит так ... Перевести текст написанный на Дельфях в текст написанный на Си++

TMyObject = class(TObject)
public obj_id : Integer;
obj_type : TObjectType;
end;

TNamedObject = class(TMyObject)
public
obj_name : String;
end;

PNodeData = ^TNodeData;
TNodeData = record
Data : TMyObject;
end;


var RootNode, Node : PVirtualNode;
root_obj, obj : TNamedObject;

begin
tvTree.BeginUpdate;
tvTree.NodeDataSize := SizeOf(TNodeData);
... RootNode := tvTree.AddChild( nil );
root_obj := TNamedObject.Create;
root_obj.obj_id := -1;
root_obj.obj_type := objRoot;
root_obj.obj_name := 'Какой-то текст';
PNodeData(tvTree.GetNodeData( RootNode )).Data := root_obj;
... tvTree.EndUpdate;end;

Сегодня я убил день но так и не добился нужного результата. Мне уже перед самим собой стыдно. Самое страшное что я не понимаю в чем дело. Паронойя уже начинаеться . Главная загвоздка с выделенным текстом.
Все остальное просто не может не работать! ))
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32583979
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roman10

Изначально зачада звучит так ... Перевести текст написанный на Дельфях в текст написанный на Си++

TMyObject = class(TObject)
public obj_id : Integer;
obj_type : TObjectType;
end;

TNamedObject = class(TMyObject)
public
obj_name : String;
end;

PNodeData = ^TNodeData;
TNodeData = record
Data : TMyObject;
end;


var RootNode, Node : PVirtualNode;
root_obj, obj : TNamedObject;

begin
tvTree.BeginUpdate;
tvTree.NodeDataSize := SizeOf(TNodeData);
... RootNode := tvTree.AddChild( nil );
root_obj := TNamedObject.Create;
root_obj.obj_id := -1;
root_obj.obj_type := objRoot;
root_obj.obj_name := 'Какой-то текст';
PNodeData(tvTree.GetNodeData( RootNode )).Data := root_obj;
... tvTree.EndUpdate;end;

Сегодня я убил день но так и не добился нужного результата. Мне уже перед самим собой стыдно. Самое страшное что я не понимаю в чем дело. Паронойя уже начинаеться . Главная загвоздка с выделенным текстом.
Все остальное просто не может не работать! ))
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32584001
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если

PNodeData(tvTree.GetNodeData( RootNode )).Data := root_obj;

заменить на

((TNodeData*)Tree->GetNodeData(RootNode))->Data = root_obj;
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32584035
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получаем ошибку ...
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32584041
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую??? Что пишет компилятор? И где
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32584055
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все подсказали как сделать ... Только не понимаю ... мне кажеться я так пробовал с самого начала ...
странно как то...

tmpNodeData = (TNodeData *)Tree->GetNodeData(tmpNode);

однако если ты попробуешь в этой строчке обратиться дальше по указателю к какому нить свойству он тебе покажет фигу ... вот такая вот замарочка...

Может в этом и есть прелесть void * ...

Да странно! Убил день ... а на что ... сейчас все работает . Спасибо за конференцию!
...
Рейтинг: 0 / 0
Помогите найти ошибку!
    #32584057
DжеFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все были правы кто говорил ... Читай справку )))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите найти ошибку!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]