Описание тега vmt
10
ответов
Какой правильный инструмент для обнаружения VMT или повреждения кучи в Delphi?
Я являюсь членом команды, которая использует Delphi 2007 для более крупного приложения, и мы подозреваем, что кучи повреждены, потому что иногда встречаются странные ошибки, которые не имеют другого объяснения. Я считаю, что опция Rangechecking для …
10 дек '09 в 09:30
1
ответ
Как проверить, является ли переданный аргумент классом?
У меня есть функция (написано в Delphi 7, 32-разрядная версия): Функция GetVMTAddr(var C): Integer; Начать Результат:= целое число (C); Пытаться PVmt(Результат)^.SelfPtr:= PVmt(C)^.SelfPtr; Кроме Результат:= 0; Конец; Конец; Который возвращает адрес…
23 авг '12 в 13:50
1
ответ
Таблица виртуальных методов на Free Pascal
Я пытаюсь получить список полей в классе без экземпляра... например: TAClass=class a_: Integer; b_: Integer; constructor (a,b Integer); end; Я не могу получить fieldTable от VMT: ovmt: PVmt; ftable: PVmtFieldTable; finfo: PVmtFieldEntry; ovmt:=PVmt(…
24 окт '14 в 20:12
2
ответа
Как я могу получить количество записей (виртуальных методов) в VMT?
При положительном смещении VMT хранит указатели на все пользовательские виртуальные методы.Мне нужно написать код, чтобы подключить VMT. Я делаю это, чтобы получить указатель на виртуальный метод в классе предка.Скажем так: TCustomForm.ShowModal, За…
20 авг '17 в 14:57
1
ответ
Изменение записей VTable не перенаправляет функцию?
У меня есть 3 класса (Cat, HouseCat:Cat, Lion:Cat). Я пытаюсь изменить VTable HouseCat так, чтобы HouseCat ел мясо вместо кошачьей еды. Классы, которые я использую: class Cat { public: int age = 2; virtual void eat() { cout << "Meat" << …
14 июл '15 в 22:51
1
ответ
Нет таблицы виртуальных функций для абстрактного класса?
Я изучаю таблицы виртуальных функций и их представление, анализируя двоичный файл простой программы, написанной на Visual C++ (с некоторыми оптимизациями). Несколько дней назад я задал этот вопрос, когда застрял в содержимом таблицы виртуальных мето…
04 ноя '18 в 18:27
2
ответа
Полностью переопределяя VMT (таблица виртуальных методов)
Я вызываю виртуальный метод в vmt путем разыменования, пока не получу указатель на метод. Это все хорошо, однако, как бы я полностью изменил указатель на таблицу VM на объекте? Пример: PP A; // указывает на свою таблицу виртуальных машин по умолчани…
18 авг '15 в 23:44
5
ответов
Где я могу найти информацию о структуре Delphi VMT?
Файл System.pas содержит достаточное количество информации о жестко закодированных смещениях VMT, но, похоже, на самом деле он мало говорит о структуре самого VMT. Что я действительно хотел бы знать, так это то, есть ли способ узнать размер VMT во в…
17 апр '09 в 13:53
1
ответ
Запись таблицы виртуальных функций из класса, который не связан
Я просматриваю VFT (VMT) простой программы на C++ для Windows (у меня нет исходного кода, только бинарный), скомпилированной Visual Studio с некоторой оптимизацией. Я заметил, что использует наследование и полиморфизм. Я нашел расположение структуры…
03 ноя '18 в 17:47
4
ответа
C++ Получить индекс таблицы виртуальных функций
Можно ли (и как) получить индекс виртуальной функции в таблице виртуальных методов? class A { virtual void foo(); } я знаю foo это первый (0) элемент в таблице виртуальных методов Однако я могу иметь foo и получить 0?
18 сен '16 в 08:41
1
ответ
Как определить количество указателей VMT
Используя компилятор Visual C++, каждый объект класса имеет VMT (первый указатель в объекте), который является указателем на массив указателей на каждый метод в классе. Используя код как это: TestObject * object = new TestObject(); void** VMT = (voi…
14 мар '18 в 23:30
1
ответ
Подписи виртуальных методов TObject для обновления до Delphi XE2
В настоящее время Delphi XE доступен только на моей коробке, я не знаю, была ли Delphi 2010/XE2 внесла некоторые существенные изменения. Пожалуйста, помогите мне обновить следующее определение: TVmt = packed record SelfPtr : TClass; IntfTable : Poin…
15 апр '12 в 06:15
1
ответ
Как я могу увидеть VMT в паскале?
Могу ли я как-нибудь увидеть таблицу VMT в FREE Pascal? Меня интересует, имеет ли таблица VMT одинаковое количество элементов в двух объектах, связанных наследственностью? Например, что будет в таблице VMT в этой модели? Будет ли одна таблица для вс…
18 май '20 в 20:54
0
ответов
Delphi: как динамически изменить тип класса, если отличается только VMT?
Предположим, у вас есть TAncestorClass и его потомки TDescendantClass1 а также TDescendantClass2. Также предположим, что потомки отличаются друг от друга только некоторыми по-разному переопределенными виртуальными методами. В остальном все поля иден…
30 июн '20 в 01:13
1
ответ
Как получить адрес интерфейса C++ VMT
Контекст: Я пытаюсь использовать несколько COM-интерфейсов (Direct2D 1.1) из приложения Delphi. Для этого мне нужно перенести интерфейсы на Delphi. Я сделал это, но у меня проблема с одним из интерфейсов: метод, который я вызываю, не правильный. Я п…
22 авг '20 в 22:37
1
ответ
C++ Как получить указатель на таблицу виртуальных функций класса?
Дано: Example.h struct Base { virtual ~Def() = default; virtual void accept(struct DerivedVisitor* v) = 0; }; struct Derived : Base { int num; void accept(struct DerivedVisitor* v) override; }; struct DerivedVisitor { virtual void visit(Derived* d) …
21 июл '20 в 03:33
1
ответ
Другой пример полиморфного поведения: C++ и C#
Я попробовал следующий пример на C++. Я понял, что переопределение Method4() из класса CA с использованием Method4(int a) в CB скрывает Method4() только с точки зрения видимости, а не с точки зрения VMT. Поэтому первые два вызова функции Main не раб…
21 мар '23 в 10:20
1
ответ
Как моделировать метаклассы в C++?
В Object Pascal мы можем написать: type Animal = class end; Cat = class(Animal) end; Dog = class(Animal) end; MetaAnimal = class of Animal; function factory(m: MetaAnimal): Animal; begin Result := m.create(); end; ... var pAnimal: Animal; pAnimal :=…
25 мар '23 в 05:59