Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RAD XE, RAD Studio 2011 
:(
    Опции темы
Kirgston
Дата 24.9.2010, 08:56 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: 2
Всего: 2



О ужас... чем дальше тем хуже и хуже. Сейчас перекинул мой проект с 2010 на 2011 (RAD Studio XE) и столкнулся просто таки с просто тупой проблемой. У меня в коде есть работа с сокетами или другими ВинАпи ф-циями которые скажем так "морально устарели". Но аналога пока не видел. Тот же inet_addr или же gethostbyname которые принимают исключительно char ... а Эмбаркадеровци сделали перегрузку своих ф-ций, и убрали char с Юникода. То есть раньше я мог сделать что то нечто

Код

MyFunc(char *str);

UnicodeString str = L"Hello World";
MyFunc(str.c_str());


Сейчас же у них все t_str() , w_str() , c _str() возвращают исключительно Юникод. И мне для старых ф-ций приходится тупо создавать еще одну Анси строку. Ладно это еще пол беды. Но глючный Инди 10 уже надоел... я не понимаю как это надо писать его чтобы у меня с 10го раза код работал так как задумано?! о_О 

Код

AContext->Connection->IOHandler->Write(a);


а - __int64

Вот этот кусочек кода компилируется нормально один раз из 100... То есть оно как то криво собирает проект что этот метод вообще не срабатывает... но в тот же момент код абсолютно нормальный... 
Пишу это исключительно потому что уже пол года сижу на студии, и "возрождая" старенькие проекты которые не реально (из-за некоторых спецификаций) перенести на Студию , или же это займет неоправданное время, и собственно вижу как всё стабильно там работает, всё продумано , всё аккуратно и у них полная совместимость со старыми ф-циями. Тут же всё наоборот... косяк на косяке косяком помахивает  smile 

Ребят. Если кто то разобрался как нормально собирать Инди 10 напишите пожалуйста. А то код нормальный. А вот компилируется глухо. 
PM MAIL   Вверх
Лена
Дата 24.9.2010, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Для перевода проектов в новую RAD будет полезно ознокомиться с этим:
http://www.delphi2009.ru/Unicode_Delphi-RUS.pdf
и видео в списке - Delphi 2010: вопросы миграции:
http://www.embarcadero-events.eu/index_recorded.html

Цитата(Kirgston @  24.9.2010,  08:56 Найти цитируемый пост)
я не понимаю как это надо писать 


У меня все работает.
Очень полезный форум по Indy: https://forums.codegear.com/forum.jspa?forumID=52 (английский)
PM MAIL   Вверх
Kirgston
Дата 24.9.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: 2
Всего: 2



Цитата(Лена @  24.9.2010,  09:25 Найти цитируемый пост)
Для перевода проектов в новую RAD будет полезно ознокомиться с этим:http://www.delphi2009.ru/Unicode_Delphi-RUS.pdfи видео в списке - Delphi 2010: вопросы миграции:http://www.embarcadero-events.eu/index_recorded.html

Спасибо конечно. Но с Юникодом я знаком =)  . Я же говорю что у них просто человеческая поддержка старых ф-ций пропала. И чтобы их использовать приходится изворачиваться. 


Цитата(Лена @  24.9.2010,  09:25 Найти цитируемый пост)
У меня все работает.Очень полезный форум по Indy: https://forums.codegear.com/forum.jspa?forumID=52 (английский)



Ммм ну хорошо , приведу чисто кусок кода моего.

клиент:
Код


    while (1)
    {
        //UnicodeString  a = TC->IOHandler->ReadLn();
        int a = TC->IOHandler->ReadInt64();
        if (a == 0) {
            CloseHandle(hDestFile);
            break;
        }
        UnicodeString str =  TC->IOHandler->ReadString(a+1);

        WriteFile(hDestFile, str.c_str(), str.Length(), &Written, NULL);

    }


сервер:

Код

        while (1)
        {
            char *buf=new char[send_len];
            a = File->Read(buf,send_len);
            if (a == 0) {
                AContext->Connection->IOHandler->Write(a);
                delete[] buf;
                break;
            }
            seek+=send_len;
            b = File->Seek(seek,0);

            AContext->Connection->IOHandler->Write(a);
            AContext->Connection->IOHandler->Write(buf);

            delete[] buf;
        }


Чисто из логики и задумки тут всё работает. Так же это было 1 раз на практике. Я скомпилил. Всё было хорошо. И не просто 1 раз запускался хорошо а дальше нет. А просто нормально работал. Дальше я чуток изменил код вне этой ф-ции и всё... перестал работать 
Код

AContext->Connection->IOHandler->Write(a);


А точнее тот который стоит перед AContext->Connection->IOHandler->Write(buf); . Ребутнул ПК. Почистил проект и скомпилил еще раз. Теперь не работает 
Код

AContext->Connection->IOHandler->Write(a);


тот который вложен в if. Никаких намеков на последовательность и т.д. когда оно хочет тогда компилится нормально. Когда не хочет - криво. В Хэлп бесполезно лазить. Он просто никакой и там ничего нету... а то что есть в 80% случаев итак на глаз видно либо когда залазишь в хидер.

Добавлено через 4 минуты и 45 секунд
Цитата(Лена @  24.9.2010,  09:25 Найти цитируемый пост)
Очень полезный форум по Indy: https://forums.codegear.com/forum.jspa?forumID=52 (английский)


Спасибо, пошел обсирать пиндосов т.к. у меня вот сейчас уже и ReadLn адекватно не работает, хотя 2умя строками выше он работает на ура...
PM MAIL   Вверх
Alca
Дата 24.9.2010, 10:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



А че на голых сокетах не судьба писать?

Добавлено @ 10:04
Пока ты будешь копаться в индейцах, то можно 345 раз написать свои враперы

Это сообщение отредактировал(а) Alca - 24.9.2010, 10:04


--------------------
PM WWW ICQ Skype Jabber   Вверх
Platov
Дата 24.9.2010, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



Цитата

Пока ты будешь копаться в индейцах, то можно 345 раз написать свои враперы

Полностью согласен! Для меня Инди перестали существовать больше года назад. Надоело каждый раз разгадывать головоломки что же они там поменяли. И как сделать чтобы заработал старый прект.
PM MAIL   Вверх
mrbrooks
Дата 24.9.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Kirgston @  24.9.2010,  10:40 Найти цитируемый пост)
Я же говорю что у них просто человеческая поддержка старых ф-ций пропала. 

Каким образом она пропала? smile
или может тебе просто было лень посмотреть в документацию и понять, что есть врапперы на юникоде для вышеперечисленных функций?

Цитата(Alca @  24.9.2010,  11:03 Найти цитируемый пост)
А че на голых сокетах не судьба писать?

Еретик! Сокеты Беркли в Билдере - это уже слишком. Вот если бы ты написал компонент - то другое дело.  smile 
PM MAIL   Вверх
Alca
Дата 24.9.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

 Вот если бы ты написал компонент

А какая существенная разница между классом и компонентой?
Вторую можно таскать мышкой?? )))

Добавлено через 3 минуты и 19 секунд
Цитата

Сокеты Беркли в Билдере - это уже слишком.

Цитата

что есть врапперы на юникоде для вышеперечисленных функций?

может и есть такие, хз


--------------------
PM WWW ICQ Skype Jabber   Вверх
Лена
Дата 24.9.2010, 14:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(Platov @  24.9.2010,  11:26 Найти цитируемый пост)
Для меня Инди перестали существовать больше года назад


Что-то не так делаю. smile 
Все проекты на Indy успешно и надежно работают. Возникающие у меня вопросы, всегда объясняют как решить на вышеуказанном английском форуме Indy...
PM MAIL   Вверх
Kirgston
Дата 24.9.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: 2
Всего: 2



Цитата(Alca @  24.9.2010,  10:03 Найти цитируемый пост)
А че на голых сокетах не судьба писать?


Надо использовать 1 порт. Мне что весь проект на сокеты переводить? Спасибо, лучше тут разберусь =)


Цитата(mrbrooks @  24.9.2010,  12:45 Найти цитируемый пост)
Каким образом она пропала? или может тебе просто было лень посмотреть в документацию и понять, что есть врапперы на юникоде для вышеперечисленных функций?


какие враперы? c_str() , w_str() , t_str() ???


PM MAIL   Вверх
_Dimon_
Дата 25.9.2010, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 25.6.2007
Где: Украина

Репутация: 1
Всего: 1



Попробовал RAD XE 2011, вроде все нормально, но твоей проблемы вообще не понимаю. 
Но сам пока не перевожу свой проект в эту среду, так как надо компоненты сторонних разработчиков, но пока нету их для ХЕ. 

PM MAIL   Вверх
Kirgston
Дата 25.9.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: 2
Всего: 2



В добавок добавлю... перенес свой проект на 2011... Запустил. Ну вроде всё нормально. Дал людям потестить. Мне сразу кучу багов. Я смотрю а у меня всё нормально. Потом на соседнем ПК (с ХРюшей ; у меня Вин 7 х64 ) смотрю что при OpenDialog1->Execute - программа закрывается мгновенно, при использовании BROWSEINFO & ITEMIDLIST так же закрывается мгновенно. Так же веб браузер перестал открывать странички... просто пишет что страничка не найдена. В коде я не ковырялся. Всего лишь просто откомпилил на новой студии... может у меня кряк кривой конечно... но увы пока плавно опускаюсь обратно на 10тку (сомневаюсь что у меня руки уже настолько кривые... )
PM MAIL   Вверх
SVN74
Дата 25.9.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Цитата(Kirgston @  24.9.2010,  09:40 Найти цитируемый пост)
UnicodeString str =  TC->IOHandler->ReadString(a+1);

        WriteFile(hDestFile, str.c_str(), str.Length(), &Written, NULL);

1.
Нельзя передавать  файлы  (кроме текстовых) используя String(и),  - потом возможны ошибки в файлах...
Надо применять буферную передачу или Stream(ы)...
2. 
По теме - лучше изначально в проекте использовать стандартные строковые функции языка С++ , а  к UnicodeString приводить только для VCL компонентов, тогда в будущем не будет таких неприятностей.

PM MAIL WWW   Вверх
Kirgston
Дата 25.9.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: 2
Всего: 2



Цитата(Kirgston @  25.9.2010,  20:29 Найти цитируемый пост)
В добавок добавлю... перенес свой проект на 2011... Запустил. Ну вроде всё нормально. Дал людям потестить. Мне сразу кучу багов. Я смотрю а у меня всё нормально. Потом на соседнем ПК (с ХРюшей ; у меня Вин 7 х64 ) смотрю что при OpenDialog1->Execute - программа закрывается мгновенно, при использовании BROWSEINFO & ITEMIDLIST так же закрывается мгновенно. Так же веб браузер перестал открывать странички... просто пишет что страничка не найдена. В коде я не ковырялся. Всего лишь просто откомпилил на новой студии... может у меня кряк кривой конечно... но увы пока плавно опускаюсь обратно на 10тку (сомневаюсь что у меня руки уже настолько кривые... )


Очень извиняюсь. Баг реально присутствует но это относится к дополнительному контролу (АльфаСкин). Я его просто выключил и всё стало на свои места.


Цитата(SVN74 @  25.9.2010,  20:51 Найти цитируемый пост)
1.Нельзя передавать  файлы  (кроме текстовых) используя String(и),  - потом возможны ошибки в файлах...Надо применять буферную передачу или Stream(ы)...


Уже сделал на Стримах. Но бага в Инди всё же есть. Дело в том что метод Write() разрешает передавать строки. И метод WriteLn(). Но если передать Юникод строку с помощью Write() то с помощью ReadLn её прочитать нельзя.


Цитата(SVN74 @  25.9.2010,  20:51 Найти цитируемый пост)
По теме - лучше изначально в проекте использовать стандартные строковые функции языка С++ , а  к UnicodeString приводить только для VCL компонентов, тогда в будущем не будет таких неприятностей.

Ну так ЮникодСтринг эт же оболочка над обычными строками о_О
PM MAIL   Вверх
mrbrooks
Дата 27.9.2010, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alca @  24.9.2010,  14:00 Найти цитируемый пост)
А какая существенная разница между классом и компонентой?
Вторую можно таскать мышкой?? )))

я же с долей иронии камрад.

Цитата(Alca @  24.9.2010,  14:00 Найти цитируемый пост)
может и есть такие, хз 

msdn

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.