Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

VisualStudio.net2005
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1492
Страница 1 от 1

Автор:  Nikola Kirov [ Сря Дек 28, 2005 4:49 pm ]
Заглавие:  VisualStudio.net2005

В Visual C++.
Имам следния проблем. Навсякъде където ползвам стрингов литерал трябва да правя явно преобразуване не типа.
тоест трябва да пиша така (CString)"Test". Рових,рових но не намерих откъде се оправя това?
Някой да знае нещо по въпроса? В Net2003 не беше така и директно си пишех "Теsт" и го присвоявах на променлива от CString.

Автор:  vlado [ Сря Дек 28, 2005 5:20 pm ]
Заглавие: 

Можеш да пробваш и това:
Код:
CString strTmp;

strTmp.Format( "%s", "Test" );

Малко повече писане е, ама може да ти помогне :-).

Автор:  Nikola Kirov [ Сря Дек 28, 2005 5:45 pm ]
Заглавие: 

И моя начин си работи. Въпроса е да се направи да си работи както се полага. Как в предишното работеше нормално и без такива акробатики.
Предполагам че е някаква опция.

Автор:  Dimiter [ Сря Дек 28, 2005 5:49 pm ]
Заглавие: 

Никола направо ти се чудя как изобщо се оправяш с вижъл студиото,
аз програмирам на борландското ++ от години и го гледам туй студио като теле :(

При BCB-то има клас AnsiStrintg който няма такива метаморфози във времето.
Както и да е ... майкрософт си измислиха собствено C++ и си правят каквото поискат (пък и често) Ей сега се отклоних ... не мога да се сдържа ...
Опитват се да го слеят в едно с глупоста наречена C#

Идеята на С-то е тотално опорочена -> ни скорост ни мултиплатформеност.

Супер забележително в микрософткото С:
набиваш точка на променлива от тип int и откриваш ,че това не е променлива от тип int а клас int тоест всичко е клас ,нещо присъщо на Java-та
Както е тръгнало ще стане като при 8-битовите ,който иска да пише игра
трябва да знае асемблер [-o<

Автор:  [ Сря Дек 28, 2005 6:10 pm ]
Заглавие: 

Намери в кой хедър е дефиниран класа CString и виж приликите/разликите от Net2003 и Net2005. Не може да няма разлики и не е опция според мен. Просто в Net2005 явно са пропуснали някой конструктор. Ако няма такъв си направи собствен и си го включи в хедъра на класа CString. Примерно:
Код:
class CString : public Нещо си {
public:
  CString(char *str) {
  /*
   Твой код
  */
  }
};


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 без проблем ги прекарвам през новите компилатори ( е, без проблем не е точно, сменя някой и друг ред и проработва ).

Автор:  Nikola Kirov [ Сря Дек 28, 2005 6:45 pm ]
Заглавие: 

Abe az oще в началото пробвах да го проследя тоз CString отде идва ама идва от ей това.

typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString; Което така и не успях да дешифрирам :)

Явно ще си карам с акробатиката :)

Автор:  [ Сря Дек 28, 2005 7:59 pm ]
Заглавие: 

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 ) ? Или изпробвай например следното:
Цитат:
TCHAR *pStr="Тест на TCHAR";
CString string(*pStr);

дали не дава различни резултати при компилация от например:
Цитат:
char *pStr="Тест на char";
CString string(*pStr);
[/quote]

Автор:  Nikola Kirov [ Сря Дек 28, 2005 8:42 pm ]
Заглавие: 

Мерси Pirev.
Насочи ме в правилната посока. Точно в това че char e po default 2баита му беше проблема.

Необходимата опция е
Project Properties -> Configuration Properties ->General -> Character Set

по default e Unicode
Слагаш си го на Non Set и всичко си идва на мястото. :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/