|
|
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
В приложении из загруженной Bpl получаю класс примерно следующим образом Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Все нормально. При вызове методов FEntryInfo все нормально. Однако, существует две большие проблемы: 1. При попытке доступа к свойствам FEntryInfo через RTTI возникает ошибка в System.RTTI: EInvalidCast.CreateRes(@SInvalidCast); Для "родных" приложению объектов механизм доступа через RTTI работает замечательно, не дает сбоев, что давно проверено и полностью себя оправдывает. 2. При выгрузке Bpl делаю: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. AV получаю не сразу, а при закрытии приложения. Что можете посоветовать? Допустимо такое совмещение Bpl и использование RTTI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 08:43 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
kapas, Пакеты - это dll. Ты копилируешь пакет и основное приложение с одним и тем же runtime bpl? Если нет, то у тебя будут разные менеджеры памяти и так делать нельзя. А если да, то менеджер памяти одинаковый и ошибка в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 09:48 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
ziv-2014Ты компилируешь пакет и основное приложение с одним и тем же runtime bpl? Приложение и пакет (runonly) компилируются отдельно. ziv-2014Если нет, то у тебя будут разные менеджеры памяти и так делать нельзя. 1. Уточнение: ziv-2014, после того как написал свое сообщение обнаружил, что ошибка возникает при использовании в главном окне Dev express компонент. Если они размещены на форме - вылетает AV при закрытии формы 2. Ошибка EInvalidCast.CreateRes(@SInvalidCast) возникает в System.RTTT из-за того, что + стр. 4167: сравниваются указатели Код: pascal 1. 2. 3. 4. 5. Необходимо было бы дальше добавить Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И в других местах есть нечто подобное (стр. 2804, 3392 и т.д.). Например: Код: pascal 1. 2. 3. 4. Это как раз и мешает нормальному присваиванию значений. Это по моему скромному мнению. Возможно я не прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 10:29 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. Попытка сравнивать классы по имени говорит о том, что у вас разные менеджеры памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 10:49 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
DimaBrПопытка сравнивать классы по имени говорит о том, что у вас разные менеджеры памяти DimaBr, получается именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 10:52 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
Тогда курите именно то что написал ziv-2014 Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 11:02 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
DimaBr, хотелось бы уточнить: RTTI для типа создается менеджером памяти или компилятором? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 11:25 |
|
||
|
Bpl и RTTI (TValue). Проблема?
|
|||
|---|---|---|---|
|
#18+
kapas DimaBrПопытка сравнивать классы по имени говорит о том, что у вас разные менеджеры памяти DimaBr, получается именно так. Вам необходимо откомпилировать приложение с пакетом, в котором есть system.rtti.pas. Откомпилировать bpl с этим же пакетом. Тогда будет общий менеджер памяти и должно работать. Иначе используйте интерфейсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2020, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2037962]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 441ms |

| 0 / 0 |
