powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / открыть файл. С++ Builder
14 сообщений из 14, страница 1 из 1
открыть файл. С++ Builder
    #39584478
Anatoliy S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
AnsiString open_file = Dir_gr+"\\hintgrdostupa.txt";
   ShellExecute(Handle,"open",open_file.c_str(),NULL,NULL,SW_SHOWDEFAULT);



Код: plaintext
1.
2.
3.
4.
ошибка:
[bcc32 Error] Unit1_RightEndDoor.cpp(596): E2034 Cannot convert 'char const[5]' to 'const wchar_t *'
  Full parser context
    Unit1_RightEndDoor.cpp(593): parsing: void _fastcall TMF_RightEndDoor::Label47Click(TObject *)
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584482
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну какой чудак будет пытаться скармливать ANSI строку туда, где хотят UNICODE?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584492
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мысли наводит?
SHSTDAPI_(HINSTANCE) ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters,
LPCSTR lpDirectory, INT nShowCmd);
SHSTDAPI_(HINSTANCE) ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters,
LPCWSTR lpDirectory, INT nShowCmd);
#ifdef UNICODE
#define ShellExecute ShellExecuteW
#else
#define ShellExecute ShellExecuteA
#endif
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584518
Anatoliy S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно просто поправить код, без чудаков...
я понял по ошибке что дело в типе данных, но не догоню как правильно.

пробовал вместо AnsiString wchar_t, все равно не получилось, как должна быть правильная конструкция конвертации в данном примере?

Код: plaintext
1.
2.
3.
const wchar_t open_file = Dir_gr+"\\hintgrdostupa.txt";

   ShellExecute(Handle,"open",open_file.c_str(),NULL,NULL,SW_SHOWDEFAULT);
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584541
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно м.б. по-разному.
Пробуй так в головном посте
UnicodeString( open_file.c_str() )
потом скажешь.
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584548
Anatoliy S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
//AnsiString open_file = Dir_gr+"\\hintgrdostupa.txt";
//UnicodeString(open_file.c_str());
//  ShellExecute(Handle,"open",open_file.c_str(),NULL,NULL,SW_SHOWDEFAULT);

[bcc32 Error] Unit1_RightEndDoor.cpp(626): E2034 Cannot convert 'char const[5]' to 'const wchar_t *'
  Full parser context
    Unit1_RightEndDoor.cpp(621): parsing: void _fastcall TMF_RightEndDoor::Label47Click(TObject *)
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584587
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох, боже мой ... cтудент начинает путаться и его можно легко добить ...

Bместо просто
ShellExecute( .......... open_file.c_str()
поставь там конвертацию:
UnicodeString( open_file.c_str() )
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584620
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, ладно, только теперь мне некогда смотреть.
Сказано выше: параметр ожидает такой-то тип. Значит этот тип туда и надо доставить.

Не знаю твои настройки и что там за тип такой у Dir_gr ? Копай от этого
//AnsiString open_file = Dir_gr+"\\hintgrdostupa.txt";
wchar_t *pathChar = UnicodeString(path).w_str();
// ShellExecute(Handle,"open", pathChar ,NULL,NULL,SW_SHOWDEFAULT);
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584660
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98wchar_t *pathChar = UnicodeString(path).w_str();

И получаем указатель на уже освобождённую память. Прелестные грабли.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584674
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoliy S.
Код: plaintext
1.
2.
AnsiString open_file = Dir_gr+"\\hintgrdostupa.txt";
   ShellExecute(Handle,"open",open_file.c_str(),NULL,NULL,SW_SHOWDEFAULT);



Код: plaintext
1.
2.
3.
4.
ошибка:
[bcc32 Error] Unit1_RightEndDoor.cpp(596): E2034 Cannot convert 'char const[5]' to 'const wchar_t *'
  Full parser context
    Unit1_RightEndDoor.cpp(593): parsing: void _fastcall TMF_RightEndDoor::Label47Click(TObject *)


Из того что приведено в тексте под тип char const[5] подходит "open", видимо там ожидается юникодовая версия, тогда _T("open").
Ну и заодно чтобы два раза не бегать, видимо не AnsiString, а юникодовая версия, предположительно WideString.
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39584950
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПрелестные грабли Уупс, есть косяк. А на то и щука в море ... Я думаю, ТС уже сообразит(л), как можно без граблей.
Кстати, я в первый раз так написал (и без злого умысла).
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39585071
Anatoliy S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось так:
Код: plaintext
1.
2.
UnicodeString open_file = "D:\\hintgrdostupa.txt";
  ShellExecute( Handle, L"open", open_file.w_str(), NULL, NULL, SW_RESTORE );



вот так ошибок нет, но не открывается файл.
Код: plaintext
1.
2.
UnicodeString open_file = "D:\\hintgrdostupa.txt";
ShellExecute(Handle,(const wchar_t *)"open",(const wchar_t *)open_file.c_str(),NULL,NULL,SW_SHOWDEFAULT);
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39585087
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoliy S.вот так ошибок нет, но не открывается файл.

И это правильно, ибо "(const wchar_t *)"open"" это бредовый бред. Тебе надо изучать как
работают компьютеры, что такое биты, байты и как они интерпретируются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
открыть файл. С++ Builder
    #39585155
Anatoliy S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТебе надо изучать как
думаю согласен....

авторИ это правильно, ибо "(const wchar_t *)"open"" это бредовый бред.

делаю чисто по примерам, не вдаваясь в конструкции и назначение.


P.S.
помню несколько лет назад (10лет).
в 5м билдере все работало без данных переводов.

Да и писалось на С++ Builder5 по ощущению с Builder 10.2 легче. Правда писал не долго год/полтора.
Потом отошел от ПК вообще. Ну и тогдашний опыт небольшой пару лет, только институт окончил. была эйфория и чтение было легче нового.
Купил бы книгу по RAD Studio сейчас, да нету. Раньше нравились книги Архангельского.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / открыть файл. С++ Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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