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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2011, 09:19   #1
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию не соеденяет символьную строку

Добрый день уважаемые товарищи! пишу службу которая будет следить за usb flash и за CD-Rom дабы пользователи не могли ими пользоваться. возникла такая ошибка... есть функция DriveType(); типа char она сканирует диски и если находит CD-ROM то возвращает его букву. далее идет функция
Код:
dt=DriveType(); //dt тип char (char dt;)
 HANDLE hDevice = CreateFile ("\\\\.\\"+dt+":",
 GENERIC_READ,
 FILE_SHARE_READ | FILE_SHARE_WRITE,
 NULL,
 OPEN_EXISTING,
 NULL,
 NULL);
вот тут вылетает ошибка "Invalid pointer addition" в этом месте "\\\\.\\"+dt+":", хотя вот это вырожение должно быть типа char по описанию. пол дня проломал голову не получается ничего сделать в гугле пишет что неправильная работа с указателями но я ими не пользуюсь тут.
ЗЫ если написать к примеру "\\\\.\\F:" то все нормально работает, помогите разобраться в чем ошибка.
wm_leviathan вне форума Ответить с цитированием
Старый 23.08.2011, 11:33   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
но я ими не пользуюсь тут
Пользуетесь и еще как. Чаровские строки так не "соединяют", есть функции.
p51x вне форума Ответить с цитированием
Старый 23.08.2011, 12:56   #3
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

ок спс навеял идею.
ладно строку соеденил
Код:
str= "\\\\.\\"+ (AnsiString)pszDisk+ ":";
	   dt=str.c_str();
теперь выдает ошибку в этой строке
Код:
HANDLE hDevice = CreateFile (dt,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING, NULL, NULL);
Код:
[BCC32 Error] Unit1.cpp(124): E2034 Cannot convert 'char *' to 'const wchar_t *'
  Full parser context
    Unit1.cpp(101): parsing: AnsiString DriveType()
в чем грабли то ?
wm_leviathan вне форума Ответить с цитированием
Старый 23.08.2011, 13:03   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

грабли в Юникоде. используйте CreateFileA.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 14:04   #5
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Огромное спасибо Пепел Феникса я знал что грабли в Юникоде но не знал про CreateFileA пытался кодировками играться (и кстати получилось, правда теперь все в 1 строчку). но появился маленький вопрос дабы не плодить еще тему. строка:
Код:
dt= ("\\\\.\\"+ (AnsiString)pszDisk).c_str();
получает строку вида: "\\\\.\\F:\\", как можно из char *dt удалить последние 2слыша чтобы было "\\\\.\\F:" ? без цикла и перезаписывание этой строки.

Последний раз редактировалось wm_leviathan; 23.08.2011 в 14:15.
wm_leviathan вне форума Ответить с цитированием
Старый 23.08.2011, 14:19   #6
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

всем спасибо разобрался
wm_leviathan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 процедуры, одна должна редактировать строку,а вторая добавлять строку. Иван09 Помощь студентам 0 02.06.2011 00:54
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку Gvaridos Microsoft Office Excel 11 24.11.2010 00:48
Программа Вводит символьную строку и число N и выводит строку, состоящую из первых N символов (С++) Yulai Помощь студентам 1 11.05.2009 11:39
[Pascal]: Задача на символьную строку, цикл, одномерные массивы., выручите плз Knife Помощь студентам 2 31.03.2009 21:41
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59