|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
||||||
Из Delphi в C++11.07.2012, 21:48. Показов 1560. Ответов 16
Метки нет (Все метки)
Здравствуйте, Уважаемые Форумчане!
Необходима помощь в переводе кода из Delphi в C++. Часть кода:
Далее что значит p:=@Cl ??? - указатель на ячейку в памяти? И последнее: buf := Tbuf(p^) - что это?! Если будет не сложно, напишите этот код на С++.
0
|
||||||
| 11.07.2012, 21:48 | |
|
Ответы с готовыми решениями:
16
Какие отличия Delphi 5, Delphi 6 и Delphi 7 Что лучше брать Delphi XE2, Delphi XE, Delphi 7? ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007 |
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|||||||||||
| 12.07.2012, 06:27 | |||||||||||
|
Вроде бы так.
Добавлено через 3 минуты
0
|
|||||||||||
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
||||||||||||||||
| 12.07.2012, 12:47 [ТС] | ||||||||||||||||
|
А что значит данная запись:
И что делать вот с этим куском:
0
|
||||||||||||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|||||||||||||||||
| 12.07.2012, 13:03 | |||||||||||||||||
Добавлено через 6 минут Вот так это делается
Функция Replace находит все вхождения подстроки subs1 в строке s и заменяет их подстрокой subs2. Добавлено через 3 минуты В функции Fill_ee_s пропустил строчку
1
|
|||||||||||||||||
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
||||||
| 12.07.2012, 14:52 [ТС] | ||||||
|
А какие у данных функций аналоги в С++?
0
|
||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|
| 12.07.2012, 15:08 | |
|
Я описал как работает функция Replace. Реализуй как тебе удобнее. Тип string вероятно придётся заменить на char *.
0
|
|
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
|||||||||||
| 12.07.2012, 15:20 [ТС] | |||||||||||
|
Так, с этим вроде разобрался:
Вот ещё какой вопрос: А что значит procedure Replace(var s: String; subs1,subs2: String) ??? Эта переменная приходит в процедуру или наоборот, выходит? Так же есть следующий вопрос. Если procedure я заменял void'ом, то как поступить вот с этим:
В строчке 12 у функции GetField нет end, но внутри присутствует другая функция FindField. Как это вообще так??? Как это сделать в С++?
0
|
|||||||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|||||||||||||
| 12.07.2012, 17:55 | |||||||||||||
FieldToReal просто конвертирует строку в float. Используй вместо неё какую-нибудь стандартную сишную функцию.
Добавлено через 1 минуту Она вызывается там всего 1 раз - разверни её. Добавлено через 5 минут Это
1
|
|||||||||||||
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
|||||||||||
| 12.07.2012, 22:26 [ТС] | |||||||||||
|
А как будет выглядеть следующее:
И как вот это выглядит в С++:
0
|
|||||||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
||||||
| 13.07.2012, 05:59 | ||||||
|
1.
1
|
||||||
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
||||||||||||||||
| 15.07.2012, 15:46 [ТС] | ||||||||||||||||
|
Вот какой вопрос возник: у меня есть только dll, написанная в Delphi. Есть список всех вызываемых из ней функций. Вот так выглядит pas-файл вызова библиотеки в Delphi:
Файл DLL_usb.cpp
[ILINK32 Error] Error: Unresolved external 'DoGetRS232Parity' referenced from D:\DROPBOX\KOLOSOV\ТЕСТИРОВАНИЕ YAESU G-5500\ТЕСТОВАЯ НОВАЯ\DEBUG\WIN32\MAIN.OBJ [ILINK32 Error] Error: Unable to perform link Заранее благодарен!
0
|
||||||||||||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|
| 15.07.2012, 19:17 | |
|
Тебе надо сделать lib-файл для этой dll и подключить к C. Попробуй Dll2lib. Если не получится - тогда загружай через GetProcAddress.
Добавлено через 4 минуты http://www.rsdn.ru/article/baseserv/dlluse.xml
0
|
|
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
|
| 15.07.2012, 19:46 [ТС] | |
|
А вот поподробнее с примером можно??? Хотя бы на примере одной функции, извлекаемой из dll. Как из dll делать lib я уже знаю.
По ссылочке - там везде необходим h файл, которого у меня нету.
0
|
|
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
|||||||||||
| 15.07.2012, 20:08 | |||||||||||
|
h файл переписываешь с delphi. Ты правильно начал. Только вот при передаче открытых массивов добавляется скрытый параметр - длина массива в элементах минус один (это я узнал из дизасма). То есть если в массиве 5 элементов - этот параметр будет равен 4.
Вот например эта функция
Перепутал порядок - длина массива после указателя. Поправил.
0
|
|||||||||||
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
||||||||||||||||||||||||||||||||||||
| 16.07.2012, 06:54 | ||||||||||||||||||||||||||||||||||||
|
Допустим есть библиотека на Delphi
код
Первым делом надо создать lib-файл. Пишем def-файл следущего содержания
1) Заходим на вкладку "Проект->Свойства->Свойства конфигурации->Компоновщик->Ввод" и добавляем в поле "Дополнительные зависимости" наш lib-файл. 2) Добавляем в код такую строку
Вот, что получилось
0
|
||||||||||||||||||||||||||||||||||||
|
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
|
|
| 16.07.2012, 12:12 [ТС] | |
|
К сожалению, не работает. Вот ошибка:
[ILINK32 Error] Error: 'D:\DROPBOX\KOLOSOV\ТЕСТИРОВАНИЕ YAESU G-5500\ТЕСТ ОТКРЫТИЯ DLL\DEBUG\WIN32\DLL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
0
|
|
|
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
|
||||||
| 16.07.2012, 12:44 | ||||||
|
Попробуй через coffimplib сконвертировать.
Использование кода Delphi в C++Builder
0
|
||||||
| 16.07.2012, 12:44 | |
|
Помогаю со студенческими работами здесь
17
Переписать часть кода с Delphi на ассемблер (ассемблерные вставки в Delphi)
Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ?? где найти delphi c компилятором? и с чего начинать программирование в delphi? SQL-запрос в Delphi и в Access один и тот же, но в Delphi не работает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|