|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:19 pm
|
Страница 1 от 1
|
[ 8 мнения ] |
|
| Автор |
Съобщение |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 VisualStudio.net2005
В Visual C++.
Имам следния проблем. Навсякъде където ползвам стрингов литерал трябва да правя явно преобразуване не типа.
тоест трябва да пиша така (CString)"Test". Рових,рових но не намерих откъде се оправя това?
Някой да знае нещо по въпроса? В Net2003 не беше така и директно си пишех "Теsт" и го присвоявах на променлива от CString.
|
| Сря Дек 28, 2005 4:49 pm |
|
 |
|
vlado
Ранг: Популярен
Регистриран на: Чет Ное 10, 2005 9:26 pm Мнения: 393 Местоположение: Buffalo, NY, USA
|
Можеш да пробваш и това:
Малко повече писане е, ама може да ти помогне  .
|
| Сря Дек 28, 2005 5:20 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
И моя начин си работи. Въпроса е да се направи да си работи както се полага. Как в предишното работеше нормално и без такива акробатики.
Предполагам че е някаква опция.
|
| Сря Дек 28, 2005 5:45 pm |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
Никола направо ти се чудя как изобщо се оправяш с вижъл студиото,
аз програмирам на борландското ++ от години и го гледам туй студио като теле
При BCB-то има клас AnsiStrintg който няма такива метаморфози във времето.
Както и да е ... майкрософт си измислиха собствено C++ и си правят каквото поискат (пък и често) Ей сега се отклоних ... не мога да се сдържа ...
Опитват се да го слеят в едно с глупоста наречена C#
Идеята на С-то е тотално опорочена -> ни скорост ни мултиплатформеност.
Супер забележително в микрософткото С:
набиваш точка на променлива от тип int и откриваш ,че това не е променлива от тип int а клас int тоест всичко е клас ,нещо присъщо на Java-та
Както е тръгнало ще стане като при 8-битовите ,който иска да пише игра
трябва да знае асемблер 
|
| Сря Дек 28, 2005 5:49 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Намери в кой хедър е дефиниран класа CString и виж приликите/разликите от Net2003 и Net2005. Не може да няма разлики и не е опция според мен. Просто в Net2005 явно са пропуснали някой конструктор. Ако няма такъв си направи собствен и си го включи в хедъра на класа CString. Примерно:
AnsiString не е оригиналния клас за стрингове при Borland C++. Оригиналния клас за низове при Borland e класа cstring, който няма почти никаква поддръжка в CBuilder и програмистите се принудени да използват AnsiString. AnsiString e измишльотина, за да може да се получи CBuilder, което е полу-паскал-полу-C++ животно. Лошото е че CBuider 7 нема да има - сливат го с Delphi. Така че при Borland също има несъвместимост на стари сорсове с нови версии на компилаторите. Например мъчех се една седмица да компилирам добре работещ ми сорс с OWL & Borland C++ 5.02 на CBuilder 5, така и не можа да стане. Трябвало и библиотеките OWL да прекомпилирам. Почнах да ги прекомпилирам, CBuilder ми плюеше десетки грешки, независимо какви опции му давах. Накрая разбрах, че нема начин да я компилирам програмата с CBuilder 5. Пробвах с по-стари версии - CBuilder 4, CBuilder 3 и CBuilder 1, успеха беше същия както при CBuilder 5. A 4 г. съм правил джамове с OWL 2.0, оказа се че трябва всичко да изхвърля и да започна от нулата. В това отношение MicroSoft e много по-добре от Borland, стари сорсове на MFC без проблем ги прекарвам през новите компилатори ( е, без проблем не е точно, сменя някой и друг ред и проработва ).
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Дек 28, 2005 6:10 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Abe az oще в началото пробвах да го проследя тоз CString отде идва ама идва от ей това.
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString; Което така и не успях да дешифрирам
Явно ще си карам с акробатиката 
|
| Сря Дек 28, 2005 6:45 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
Според мен тук се декларира, че навсякъде където компилатора срещне класа CString да го взема като ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > >
TCHAR e макрос, който се използва за преносимост и ако компилираш програмата като UNICODE TCHAR става от тип wchar_t, иначе си е обикновен char.
Никола, защо не пробваш да зададеш с макрос или опция в Net2005 как да се третират char, като 1 байт или като 2 байта ( UNICODE ) ? Или изпробвай например следното:
дали не дава различни резултати при компилация от например: [/quote]
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Дек 28, 2005 7:59 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Мерси Pirev.
Насочи ме в правилната посока. Точно в това че char e po default 2баита му беше проблема.
Необходимата опция е
Project Properties -> Configuration Properties ->General -> Character Set
по default e Unicode
Слагаш си го на Non Set и всичко си идва на мястото. 
|
| Сря Дек 28, 2005 8:42 pm |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|