Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 13:39 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: sql 1. Опаньки... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 13:44 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Это опечатка.. к общему потоку мысли отношения не имеющая.. но сейчас попробую исправить, "ибо порядок должен быть" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 14:07 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Вообще-то это без разницы, сдвиги в дельфи не расширяют знак. Все же так аккуратнее. Ну и обмазать все это шаманство комментариями, чтобы через месяц не чесать затылок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 14:17 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
maremoraЭто опечатка.. Хорошо бы цитировать посыл, на который Вы отвечаете. Константа 99 это явно не опечатка и портировоание enum без её учёта приведёт к неправильным результатам. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 14:33 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Отдельное спасибо, красиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 15:33 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
ziv-2014, я ж писал, 'конкретно тут' :) в частном случае нет никакой разницы, компиляторы работают одинаково. авторПроблема, как я понимаю, в том, что если объявить в Delphi функцию с тем же возвращаемым результатом, как в исходной фунции Си, то в этом возвращаемом результате будет совсем не то, что нужно. Т.е. в Delphi, для 32-битной программы, нужно сделать вот такой хак, как сделал ТС: результат объявить как Int64, а потом, уже после вызова внешней функции, это преобразовать в запись CTMBeginTransactionResult.авторНесуразность выливается в то, что вместо прямого импорта функции и далее работы с полями record как это впрямую выглядит, нужно делать дополнительную неявную обвязку, которая будет мониторить "особенности реализации". Это в некоторой мере нелояльно к сотрудникам поддержки. Прочие моменты можно обсуждать и далее.так это проблема не делфей, а сей, плюсов и шарпа, которые так и не научились нормально хоть что-то передавать наружу/внутрь кроме простых типов и указателей (которые тоже, впрочем, простой тип). как только record или инстанс класса - так и жопа даже в пределах своего языка. максимум что смогли придумать - COM, и тот только на винде. и далеко не везде, можно сказать, редко, используется. исторически сложилось (ц), я понимаю, что на границах dll/exe о чем-то сложнее простых типов никто не думал, так уж получилось и до сих пор так авторНо вообще-то и сдвиги не нужны, можно использовать Move(), absolute или case. Потом уже просто работаешь со структурой как структурой.угу. absolute или вариантные записи в помощь. впрочем, уже кинули решение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 17:25 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
makhaonмаксимум что смогли придумать - COM, и тот только на винде. Ты не поверишь, но СОМ описывает только двоичную структуру VMT, а соглашения о вызовах не трогает от слова "вообще". Причём эта самая VMT - штатно используемая нынче любым компилятором С++. "Только на винде" - это фабрика классов и CLSID, хранящиеся в реестре. На линухе их нет исключительно потому, что в худших линуксовых традициях дистроклепатели не могли договориться использовать ли им реализацию от Мозиллы или кого-то ещё. Соглашение "функции возвращают исключительно HRESULT" это уже следующий уровень соглашений, к собственно СОМ отношения не имеющий (и часто нарушающийся). PS: И это я ещё не буду вспоминать, что невозможность вызова функции, возвращающей интерфейс непосредственно, а не как var-параметр - баг лично Дельфи. Возможно даже исправленный в последних версиях. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 17:40 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
makhaon, Это вон оно чо! Оказывается проблема у майкрософта и си++, а не у Delphi. Надо бы перечитать документацию по соглашениям о вызовах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 18:26 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov PS: И это я ещё не буду вспоминать, что невозможность вызова функции, возвращающей интерфейс непосредственно, а не как var-параметр - баг лично Дельфи. Возможно даже исправленный в последних версиях. Вот еще есть out модификатор и он тоже работает не так, как в си-шарпе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 18:27 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
ziv-2014Если ты про out модификатор Нет, я про невозможность получить результат такой функции: Код: plaintext 1. В качестве широко обсосанного примера можно погуглить пляски с бубном вокруг Direct3DCreate9. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 18:41 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Нет, я про невозможность получить результат такой функции: Думаю, что здесь сложность в автоматическом подсчете ссылок. Делфе нужно знать, что при присвоении Код: pascal 1. не нужно вызывать _AddRef. А с другой стороны, для кода Код: pascal 1. 2. 3. 4. 5. получим утечку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 18:55 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Делфя ее в процедуру превращает? Дельфя (и FPC, кстати) внаглую игнорирует объявление cdecl и генерит код для safecall. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 19:03 |
|
||
|
Получить структуру из С-шной DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, вот не смогли о нормальной передаче инстансов на границах разных апи сразу договорится и почти все апи - тупо простые типы, как на винде так и, особенно, на линухе. да и так как либу не возьми - то почти везде всё такое же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2021, 23:00 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2037156]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
14ms |
get first new msg: |
33ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 242ms |

| 0 / 0 |
