| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > переписать из Delphi на Builder C++ |
| Автор: trinitr0 23.9.2014, 09:17 | ||||
| Помогите пожалуйста переписать из Delphi в Builder C++ Код Delphi:
Мои попытки:
|
| Автор: math64 23.9.2014, 10:16 |
| Ты же ничего не сделал. begin заменяется на { end заменяется на } = заменяется на == := заменяется на = Всё остальное изменяется вручную, в данном случае ничего сложного, если знаешь C++. Добавлено через 3 минуты и 56 секунд Ну, одна особенность: в C++ индексы массивов начинаются с 0. Так что t[i] становится t[i-1]. Добавлено через 7 минут и 36 секунд Вторая особенность: раз в объявлении написано dT, T - дальше тоже нужно писать с заглавными буквами. А вообще, исходник странный - похоже, с ошибками. |
| Автор: borisbn 23.9.2014, 11:04 |
Как это ??? а это: |
| Автор: trinitr0 23.9.2014, 11:26 | ||
| Прошу, прощения! В предидущем листинге не тот код С++ вставил. Вот что у меня выходит:
Основная проблемы в циклах. Не получается корректно перевести в Builder C++. После компиляции рисует прямую линию, а на координах одно и то же значние - '255' Помогите пожалуйста подправить код так, чтобы он приводил к аналогичному результату |
| Автор: trinitr0 23.9.2014, 11:58 |
| Вот что должно быть (exe'шник во вложении) |
| Автор: trinitr0 23.9.2014, 12:08 |
| То что (не) получается |
| Автор: xvr 23.9.2014, 13:29 | ||
Угу, о чем math64 уже написал -
Кстати, у тебя и конечный индекс тоже неправильный (точнее правильный, но исключительно по ошибке |
| Автор: trinitr0 23.9.2014, 13:38 | ||
Так я вроде поправил же:
Нажимаю Button1 и никакой график не рисуется |
| Автор: xvr 23.9.2014, 13:51 | ||
Неа -
То же самое в строках 26 и 30. В цикле в строке 22 неправильное условие завершения цикла Условие в строке 36 заменено на противоположное В строке 37 неправильный индекс у массива Да и сами массвы должны быть по 8 элементов, а не по 7 |
| Автор: trinitr0 23.9.2014, 14:49 | ||
Поправил:
Но график не рисуется... |
| Автор: trinitr0 24.9.2014, 16:11 |
| Кнопка не срабатывала по причине того, я что я явно не указал в Object Inspector событие OnClick, ограничась прототипом в Unit.h |
| Автор: Akira 28.9.2014, 00:34 |
| Такой быдлокод можно конвертировать помощью delphi2cpp, поскольку нет никаких спецефических вещей и все довольно банально, заменить begin / end на { / } итд, как написано выше. |
| Автор: trinitr0 29.9.2014, 10:43 |
| Да так и есть. Приходится переписывать заново, попутно исправляя ошибки О существовании delphi2cpp не знал. Спасибо. |
| Автор: borisbn 29.9.2014, 11:05 |
| Akira, а delphi2cpp знает о том, что индексы в pascal'е начинаются с 1, а не с нуля ? |
| Автор: trinitr0 29.9.2014, 13:55 | ||||
| Вот что выдал delphi2cpp Исходник Delphi:
Результат после прогона через delphi2cpp:
У кого какие выводы? |
| Автор: xvr 29.9.2014, 14:09 |
| В исходнике в Delphi где то потеряли один begin в районе 23й строки. Результат delphi2cpp исходнику на Delphi соотвествует (насколько можно соотвествовать исходнику с ошибками |
| Автор: borisbn 29.9.2014, 14:10 |
| А ещё у delphi2cpp форматирование лучше, чем у автора )) |
| Автор: trinitr0 29.9.2014, 15:43 |
| У нас разные стили |
| Автор: Akira 30.9.2014, 00:13 | ||||
Проще исправить несколько ошибок, чем вбилать несколько килло строк, такими утилитами запросто можно конвертировать какой нибудь математический компонент на очень много строк. Проблема кроется в другом, люди переводят код из одного языка в другой без знаний языка с которого собственно конвертируют.
Раньше не знала, как сейчас я не знаю, утилита очень давно пилится и возможно уже изменилась в лучшую сторону. Зы. Помимо этой утилиты есть еще пару конвертеров переводящих pas to cpp, кроме них есть еще pas to c# и vcl to wxWidgets. |
| Автор: math64 30.9.2014, 08:07 | ||||||
Ну, как видите, знает:
Но, наряду с stop (значение m может измениться внутри цикла, поэтому оно копирется в stop) в цикле повторно объявляется перенная i. В исходнике на Дельфи такая переменная одна. И могут быть проблемы, если она использется после выхода из цикла. Добавлено через 6 минут и 5 секунд PS: кстати, что будет если в исходниках будет объявлена переменная stop? |