Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Auto-Moto
Mobilní telefony
Notebooky  |  Tablety
Příslušenství
Wearables  |  Ostatní
Svět hardware  |  Digimanie  |   TV Freak

inttostr()

mikovski (19)|18.9.2003 11:48
Je v eVC nejaky ekvivalent fce. inttostr()

(tzn. pro prevod integeru na string?)
eXEden_ce4you (811)|18.9.2003 12:00
Možnosti jsou dvě:

1) použití třídy CString a její metody Format
2) použití wsprintf, což je vlastně to, co CString::Format provádí

např.:
[CODE]
CString str;
int nTest = 10;
str.Format(_T("%d"), nTest);
[/CODE]
mikovski (19)|18.9.2003 12:20
a kdyz ho chci dostat do LPCTSTR a pak vypsat na obrazovku?
eXEden_ce4you (811)|18.9.2003 12:33
Nejsi v ničem omezenej. Stačí jen přetypování:

[CODE]
LPTSTR lpszTest;
wsprintf(lpszTest, _T("%d"), 10);
DrawText(hDC, (LPCTSTR)lpszTest, -1, &rect, DT_LEFT);
[/CODE]

Toť vše :)
mikovski (19)|18.9.2003 12:43
jsem asi blbej, ale kdyz tam dam:

[CODE]
LPCTSTR szText;
wsprintf(szText, _T("%d"), 10);
[/CODE]

pise mi to:

[QUOTE]'wsprintfW' : cannot convert parameter 1 from 'const unsigned short *' to 'unsigned short *'[/QUOTE]

chjo... Ccko mi nikdy moc neslo. Ja radsi Pascal/Delphi
eXEden_ce4you (811)|18.9.2003 12:52
Nene ... podívej se přesně na ten kód, co jsem ti napsal :)
mikovski (19)|18.9.2003 13:12
a jo! :sarcastic: ;) :cool:
mikovski (19)|18.9.2003 15:35
muj uplne posledni problem (slibuju :))

po pridani #include (pro CString) mi nejde kompilace:
(nic jineho jsem nemenil)



[QUOTE]uafxwce.lib(dllmodul.obj) : error LNK2005: _DllMain already defined in Test.obj
uafxwce.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in coredll.lib(COREDLL.dll)
uafxwce.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in coredll.lib(COREDLL.dll)
uafxwce.lib(dllmodul.obj) : warning LNK4006: _DllMain already defined in Test.obj; second definition ignored
uafxwce.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in coredll.lib(COREDLL.dll); second definition ignored
uafxwce.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in coredll.lib(COREDLL.dll); second definition ignored
Creating library X86Rel/Test.lib and object X86Rel/Test.exp
X86Rel/Test.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

[/QUOTE]
eXEden_ce4you (811)|18.9.2003 15:51
Tohle je problém. Třída CString patří do MFC (Microsoft Foundation Classes) a je součástí knihovny, která je distribuovaná spolu s eVC++3.0 Tahle knihovna má definovanou fci DLLMain stejně jako tvoje knihovna, kterou vytváříš (viz. zdrojáky) Není tedy možné linkovat do tvé DLL knihovnu (ani její část) MFC. Programování Today Plug-in je věcí čistého Win32 API. Proto se budeš muset obejít bez CString apod...
jkarasek_ce4you (22)|13.1.2004 23:28
No a bez pouziti CString to jde napr. i takhle:

[CODE]TCHAR szStr[100];
int nTest = 10;

memset(szStr, 0, sizeof(TCHAR) * 100);
_stprintf(szStr, _T("%d"), nTest);

DrawText(hDC, (LPCTSTR)szStr, -1, &rect, DT_LEFT);
[/CODE]
eXEden_ce4you (811)|14.1.2004 08:11
Nebo pokud nechcete plýtvat stackem (obzvláště používáte-li dlouhé řetězce), pak doporučuji klasické použití datového typu LPTSTR místo pole TCHAR:

[CODE]int nLength = 10;
LPTSTR lpszText = (LPTSTR)LocalAlloc(LPTR, sizeof(TCHAR) * nLength);
if (lpszText == NULL)
// chyba
_stprintf(lpszText, _T("%d"), nLength);
DrawText(hDC, (LPCTSTR)lpszText, -1, &rect, DT_LEFT);
LocalFree((HLOCAL)lpszText);
[/CODE]
AleqCZ (105)|3.3.2004 17:04
A co _itoa?
[CODE]char *_itoa( int value, char *string, int radix );

Parameters
value --- Number to be converted
string -- String result
radix --- Base of value; must be in the range 2 – 36

[/CODE]