Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2013, 20:26   #1
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию Соединить 2 строки в PWideChar

Данный код определяет имя текущего каталога и добавляет к нему имя файла для запуска:
Код:
TCHAR gamefolder[MAX_PATH];
GetCurrentDirectory(sizeof(gamefolder),gamefolder);
Edit1->Text=WideCharToString(gamefolder);
String gamepath=Edit1->Text.t_str()+WideCharToString(L"\\Dumped_.exe");
PWideChar papka;
StringToWideChar(gamepath,papka,MAX_PATH);
CreateProcess(papka,NULL,NULL,NULL,FALSE,0,NULL,Edit1->Text.t_str(),&si,&pi);
Поскольку CreateProcess оперирует с PWideChar,а складывать их нельзя,приходится делать извращения PWideChar->String->+String->PWideChar
Но StringToWideChar выдает ошибку access violation in vcl160.bpl
calypso вне форума Ответить с цитированием
Старый 23.03.2013, 15:19   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код:
std::wstring First(Первый массив WCHAR); // Помещение WCHAR -> std::wstring
std::wstring Second(Второй массив WCHAR);
First += Second;
Теперь в First содержатся соединенные строки. Для получения строки типа WCHAR надо
Код:
First.c_str();
Для копирования полученной строки в массив типа WCHAR пользуйтесь функцией
Код:
strcpy(Массив,First.c_str());
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 23.03.2013, 15:57   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
CreateProcess оперирует с PWideChar
Неправда. CreateProcessА еще не отменили, можешь его использовать если работаешь в ANSI
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2013, 17:18   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
PWideChar papka;
StringToWideChar(gamepath,papka,MAX _PATH);
Мне вот интересно, PWideChar это же просто указатель, а память кто выделит под копируемую строку?

Цитата:
Поскольку CreateProcess оперирует с PWideChar,а складывать их нельзя
Вот тут и корень проблемы. Вам не надо их складывать, вам надо складывать строки, а уже с результатом будет функция работать.

И для складывания строк существуют функции...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Incompatible types: 'PWideChar' and 'string' Aleksandr69 Общие вопросы Delphi 8 25.12.2011 12:14
как соединить?? stupid Помощь студентам 0 17.03.2011 12:52
Delphi 2010, PAnsiChar и PWideChar ImmortalAlexSan Общие вопросы Delphi 11 08.09.2010 15:59
Integer в PWideChar motaro Общие вопросы Delphi 1 28.08.2009 18:35
pwidechar Toxa Общие вопросы Delphi 1 23.06.2008 13:57