Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конвертировать строку / 25 сообщений из 50, страница 1 из 2
25.09.2006, 15:23
    #34010115
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Привет всем!

Простите за глупый вопрос, но я что-то не могу справиться:
Код: plaintext
1.
2.
LPCWSTR w;
wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
…
Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?

Заранее спасибо ВС
...
Рейтинг: 0 / 0
25.09.2006, 15:52
    #34010231
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopinЗаранее спасибо ВСЯ так понял, это Borland C, тогда попробуй WideString.
...
Рейтинг: 0 / 0
25.09.2006, 16:11
    #34010302
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
maXmoЯ так понял, это Borland C, тогда попробуй WideString.Нет MS VS 6
...
Рейтинг: 0 / 0
25.09.2006, 16:20
    #34010349
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
про ЦСтринг читал?
...
Рейтинг: 0 / 0
25.09.2006, 16:28
    #34010373
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
maXmoпро ЦСтринг читал?
А где?
...
Рейтинг: 0 / 0
25.09.2006, 16:47
    #34010449
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
а чем вам нормальные и простые char* не нраявятся???
...
Рейтинг: 0 / 0
25.09.2006, 16:48
    #34010454
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopin maXmoпро ЦСтринг читал?
А где?

На заборе, есс-но.
...
Рейтинг: 0 / 0
25.09.2006, 16:51
    #34010471
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Aklinа чем вам нормальные и простые char* не нраявятся???

Юникода, можеть?
...
Рейтинг: 0 / 0
25.09.2006, 16:59
    #34010505
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Akh Aklinа чем вам нормальные и простые char* не нраявятся???

Юникода, можеть?

мужики - брэйк...
цэстринг так же имеет свои нюансы...освобождение аллокированного статического буфеоа (забывают частенько)...и гэт лен возвращает не то что ожидают...

а так - если библиотека и так есть, нафига велосипед то ?

(круглый)
...
Рейтинг: 0 / 0
25.09.2006, 17:06
    #34010534
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
kolobok0
а так - если библиотека и так есть, нафига велосипед то ?


Так, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)
...
Рейтинг: 0 / 0
25.09.2006, 17:20
    #34010592
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Akh kolobok0
а так - если библиотека и так есть, нафига велосипед то ?


Так, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)

не понял подвоха..селектор не знает как писать ? кхм...аднака...

Код: plaintext
1.
2.
3.
	wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
	CString strOut;
	strOut.Format("%s%s%s", p, pw, pp);

вроде так с утра было...

(круглый)
...
Рейтинг: 0 / 0
25.09.2006, 17:22
    #34010599
cpp_expert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopinПривет всем!

Простите за глупый вопрос, но я что-то не могу справиться:
Код: plaintext
1.
2.
LPCWSTR w;
wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
…
Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?

Заранее спасибо ВС

Начните с того, чтобы выяснить, что есть LPCWSTR:
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif

typedef CONST WCHAR *LPCWSTR;

-- как видно из определения, реализовать так просто через "+" не получится!
...
Рейтинг: 0 / 0
25.09.2006, 17:22
    #34010600
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
kolobok0цэстринг так же имеет свои нюансы...освобождение аллокированного статического буфеоа (забывают частенько)...и гэт лен возвращает не то что ожидают...
(круглый)Крайне криво!

авторЮникода, можеть?ДА!
...
Рейтинг: 0 / 0
25.09.2006, 17:25
    #34010610
cpp_expert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
typedef basic_string <wchar_t> wstring;

wstring w(L"");

w = p + wstring(L"Str") + pw + wstring(L"Str") + pp;

-- думаю следует писать так.
...
Рейтинг: 0 / 0
25.09.2006, 17:29
    #34010628
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
kolobok0не понял подвоха..селектор не знает как писать ? кхм...аднака...

Код: plaintext
1.
2.
3.
	wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
	CString strOut;
	strOut.Format("%s%s%s", p, pw, pp);

вроде так с утра было...

(круглый)Может с утра и было, но у меня вместо первых двух символов получаются два квадрата!
...
Рейтинг: 0 / 0
25.09.2006, 17:40
    #34010668
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
AkhТак, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)я работаю с WCHAR* :)
васик стринг - как вариант, благо его в стандарт пытались пропихнуть.
...
Рейтинг: 0 / 0
25.09.2006, 17:51
    #34010722
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Код: plaintext
s.Format("%s%c%s%c%s", p, L'\n',pp, L'\n',pw);
Дает два квадратика и остаток p, без первых двух символов. и все!
проблема ещё в том, что pp и pw могут быть пустыми!
...
Рейтинг: 0 / 0
25.09.2006, 17:59
    #34010750
cpp_expert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopin
Код: plaintext
s.Format("%s%c%s%c%s", p, L'\n',pp, L'\n',pw);
Дает два квадратика и остаток p, без первых двух символов. и все!
проблема ещё в том, что pp и pw могут быть пустыми!

Ребята, CString не умеет работать с WCHAR. Ваши два квадратика в начале - это два байта, содержащие длину строки на основе WCHAR. Есть аналоги CString-a, например BasicString, использующие функционал CString, basic_string<> и _variant_t в одном классе!
...
Рейтинг: 0 / 0
25.09.2006, 18:07
    #34010782
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopin...Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?...

за CString прошу прощения...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	WCHAR x[] = L"xru хрю 1";
	WCHAR xx[] = L"xru хрю 2";
	WCHAR xxx[] = L"xru хрю 3";

	WCHAR out[ 100 ];
	out[ 0 ] = 0x00;
	wcsncat_s(out,  100 , x, wcslen(x));
	wcsncat_s(out,  100 , xx, wcslen(xx));
	wcsncat_s(out,  100 , xxx, wcslen(xxx));


(круглый)
...
Рейтинг: 0 / 0
25.09.2006, 18:07
    #34010786
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
cpp_expertЕсть аналоги CString-a, например BasicString, использующие функционал CString, basic_string<> и _variant_t в одном классе!BasicString не нашел оного!
...
Рейтинг: 0 / 0
25.09.2006, 18:21
    #34010821
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
cpp_expertРебята, CString не умеет работать с WCHAR.Ы! В мсдне по-другому написано.
...
Рейтинг: 0 / 0
25.09.2006, 18:23
    #34010827
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
зы если не умеем работать с директивами препроцессора, можно почитать мсдн и заюзать CStringW в явном виде.
...
Рейтинг: 0 / 0
25.09.2006, 19:28
    #34010969
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
kolobok0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	WCHAR x[] = L"xru хрю 1";
	WCHAR xx[] = L"xru хрю 2";
	WCHAR xxx[] = L"xru хрю 3";

	WCHAR out[ 100 ];
	out[ 0 ] = 0x00;
	wcsncat_s(out,  100 , x, wcslen(x));
	wcsncat_s(out,  100 , xx, wcslen(xx));
	wcsncat_s(out,  100 , xxx, wcslen(xxx));
(круглый)Как-то оно не красиво смотриться, хотя работает!
...
Рейтинг: 0 / 0
25.09.2006, 19:49
    #34011017
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
v skopin..Как-то оно не красиво смотриться, хотя работает!


тогда как в предыдущем примере, только замените
CString
на
CStringW

и будет Вам счастье
(круглый)
...
Рейтинг: 0 / 0
25.09.2006, 20:17
    #34011058
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать строку
Вот, что получилось в результате, если, конечно, Ынтиресно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
extern "C" __declspec(dllexport) WCHAR * ReadLink(LPCWSTR LnkPath)
{
	HRESULT hres;
	int szBuf,SW;
	IShellLinkW * psl;
	IPersistFile * pfd;
	LPCOLESTR LnkPathC = (LPCOLESTR)LnkPath;
	WCHAR  s[MAX_PATH * 3  +  4 ];
	s[ 0 ] = 0x00;
	WCHAR p[MAX_PATH],pw[MAX_PATH],pp[MAX_PATH];

	hres = CoInitialize(NULL);
	if (hres == S_OK || hres == S_FALSE)
	{
		if (CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID*)&psl) == S_OK)
		{
			if(psl->QueryInterface(IID_IPersistFile,(LPVOID*)&pfd) == S_OK)
			{
				if(pfd->Load(LnkPathC, STGM_READWRITE | STGM_SHARE_EXCLUSIVE) == S_OK)
				{
					
					szBuf= (MAX_PATH+ 1 ) * sizeof(wchar_t);
					if(psl->GetPath(p,szBuf, NULL,SLGP_UNCPRIORITY) == S_OK)
					{
                                                //Пошло строительство:
						wcsncat(s,p,wcslen(p));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetArguments(pp, szBuf) == S_OK)
							wcsncat(s,pp,wcslen(pp));
						else
							wcsncat(s,L"dEadlInk",wcslen(L"dEadlInk"));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetWorkingDirectory(pw, szBuf) == S_OK)
							wcsncat(s,pw,wcslen(pw));
						else
							wcsncat(s,L"dEadlInk",wcslen(L"dEadlInk"));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetShowCmd(&SW) != S_OK) SW =  1 ; 
						switch (SW)
						{
							case SW_SHOWMAXIMIZED:
								wcsncat(s,L"3",wcslen(L"3"));
								break;
							case SW_SHOWMINNOACTIVE:
								wcsncat(s,L"7",wcslen(L"7"));
								break;
							default:
								wcsncat(s,L"1",wcslen(L"1"));
								break; 
						}				
					pfd->Release();
					}
					else wcsncat(s,L"Not GetPath",wcslen(L"Not GetPath"));
				}
				else wcsncat(s,L"Not Load",wcslen(L"Not Load"));
				psl->Release();
			}
			else wcsncat(s,L"Not QueryInterface",wcslen(L"Not QueryInterface"));
			CoUninitialize();
		}
		else wcsncat(s,L"Not CoCreateInstance",wcslen(L"Not CoCreateInstance")); 
	}
	else wcsncat(s,L"Not CoInitialize",wcslen(L"Not CoInitialize"));

return s;
 	
}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конвертировать строку / 25 сообщений из 50, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]