| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > RAD XE |
| Автор: Kirgston 24.9.2010, 08:56 | ||||
О ужас... чем дальше тем хуже и хуже. Сейчас перекинул мой проект с 2010 на 2011 (RAD Studio XE) и столкнулся просто таки с просто тупой проблемой. У меня в коде есть работа с сокетами или другими ВинАпи ф-циями которые скажем так "морально устарели". Но аналога пока не видел. Тот же inet_addr или же gethostbyname которые принимают исключительно char ... а Эмбаркадеровци сделали перегрузку своих ф-ций, и убрали char с Юникода. То есть раньше я мог сделать что то нечто
Сейчас же у них все t_str() , w_str() , c _str() возвращают исключительно Юникод. И мне для старых ф-ций приходится тупо создавать еще одну Анси строку. Ладно это еще пол беды. Но глючный Инди 10 уже надоел... я не понимаю как это надо писать его чтобы у меня с 10го раза код работал так как задумано?! о_О
а - __int64 Вот этот кусочек кода компилируется нормально один раз из 100... То есть оно как то криво собирает проект что этот метод вообще не срабатывает... но в тот же момент код абсолютно нормальный... Пишу это исключительно потому что уже пол года сижу на студии, и "возрождая" старенькие проекты которые не реально (из-за некоторых спецификаций) перенести на Студию , или же это займет неоправданное время, и собственно вижу как всё стабильно там работает, всё продумано , всё аккуратно и у них полная совместимость со старыми ф-циями. Тут же всё наоборот... косяк на косяке косяком помахивает Ребят. Если кто то разобрался как нормально собирать Инди 10 напишите пожалуйста. А то код нормальный. А вот компилируется глухо. |
| Автор: Лена 24.9.2010, 09:25 |
| Для перевода проектов в новую RAD будет полезно ознокомиться с этим: http://www.delphi2009.ru/Unicode_Delphi-RUS.pdf и видео в списке - Delphi 2010: вопросы миграции: http://www.embarcadero-events.eu/index_recorded.html У меня все работает. Очень полезный форум по Indy: https://forums.codegear.com/forum.jspa?forumID=52 (английский) |
| Автор: Alca 24.9.2010, 10:03 |
| А че на голых сокетах не судьба писать? Добавлено @ 10:04 Пока ты будешь копаться в индейцах, то можно 345 раз написать свои враперы |
| Автор: Platov 24.9.2010, 11:26 | ||
Полностью согласен! Для меня Инди перестали существовать больше года назад. Надоело каждый раз разгадывать головоломки что же они там поменяли. И как сделать чтобы заработал старый прект. |
| Автор: mrbrooks 24.9.2010, 12:45 | ||
Каким образом она пропала? или может тебе просто было лень посмотреть в документацию и понять, что есть врапперы на юникоде для вышеперечисленных функций? Еретик! Сокеты Беркли в Билдере - это уже слишком. Вот если бы ты написал компонент - то другое дело. |
| Автор: Alca 24.9.2010, 13:00 | ||||||
А какая существенная разница между классом и компонентой? Вторую можно таскать мышкой?? ))) Добавлено через 3 минуты и 19 секунд
может и есть такие, хз |
| Автор: Лена 24.9.2010, 14:13 |
Что-то не так делаю. Все проекты на Indy успешно и надежно работают. Возникающие у меня вопросы, всегда объясняют как решить на вышеуказанном английском форуме Indy... |
| Автор: Kirgston 24.9.2010, 14:39 | ||
Надо использовать 1 порт. Мне что весь проект на сокеты переводить? Спасибо, лучше тут разберусь =)
какие враперы? c_str() , w_str() , t_str() ??? |
| Автор: _Dimon_ 25.9.2010, 07:51 |
| Попробовал RAD XE 2011, вроде все нормально, но твоей проблемы вообще не понимаю. Но сам пока не перевожу свой проект в эту среду, так как надо компоненты сторонних разработчиков, но пока нету их для ХЕ. |
| Автор: Kirgston 25.9.2010, 20:29 |
| В добавок добавлю... перенес свой проект на 2011... Запустил. Ну вроде всё нормально. Дал людям потестить. Мне сразу кучу багов. Я смотрю а у меня всё нормально. Потом на соседнем ПК (с ХРюшей ; у меня Вин 7 х64 ) смотрю что при OpenDialog1->Execute - программа закрывается мгновенно, при использовании BROWSEINFO & ITEMIDLIST так же закрывается мгновенно. Так же веб браузер перестал открывать странички... просто пишет что страничка не найдена. В коде я не ковырялся. Всего лишь просто откомпилил на новой студии... может у меня кряк кривой конечно... но увы пока плавно опускаюсь обратно на 10тку (сомневаюсь что у меня руки уже настолько кривые... ) |
| Автор: SVN74 25.9.2010, 20:51 | ||
1. Нельзя передавать файлы (кроме текстовых) используя String(и), - потом возможны ошибки в файлах... Надо применять буферную передачу или Stream(ы)... 2. По теме - лучше изначально в проекте использовать стандартные строковые функции языка С++ , а к UnicodeString приводить только для VCL компонентов, тогда в будущем не будет таких неприятностей. |
| Автор: Kirgston 25.9.2010, 20:55 | ||||||
Очень извиняюсь. Баг реально присутствует но это относится к дополнительному контролу (АльфаСкин). Я его просто выключил и всё стало на свои места.
Уже сделал на Стримах. Но бага в Инди всё же есть. Дело в том что метод Write() разрешает передавать строки. И метод WriteLn(). Но если передать Юникод строку с помощью Write() то с помощью ReadLn её прочитать нельзя.
Ну так ЮникодСтринг эт же оболочка над обычными строками о_О |
| Автор: mrbrooks 27.9.2010, 08:02 | ||
я же с долей иронии камрад. msdn |