| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Передача строки в процедуру |
| Автор: Yak 5.11.2005, 22:39 | ||||||||||
Короче такая хрень получается - из библиотеки "NtDll_call.dll" (написанной в VC++) в процедуру "lpproc" программы, написанной на VB6.0 передается строка "strTxt". Строка обьявляется как
и содержит имя текущего процесса. Так вот при попытке передать ее в процедуру VB6.0 таким образом:
сам VB просто падает при обращении к этой(pszProcessName) переменной с хз какой ошибкой, а если передать эту строку так:
в процедуру VB уходит какой то набор символов. Процедура в VB:
и так она обьявлена в библиотеке VC++
самое интересное, что если обьявить эту строку не как CHAR, а как другой текстовый тип, то в VB не приходит пустая строка, хотя из VC++ эту строку видно как надо. P.S. Если кто нить понял, что я тут нагородил)))))), то скажите где у мя здесь ошибка? И какой текстовой тип VC++ передастся без проблем в VB String? P.P.S. Не надо ща советовать "пиши все на VC++ и не парься"... Просто в VB мне гораздо проще и быстрее составлять внешний вид программы, а на VC++ - исполняемые модули, где много коду... |
| Автор: np9mi7 6.11.2005, 19:24 |
| Что ты хочешь сделать? Опиши откуда, что вызывать собрался... А то ничего не понятно... |
| Автор: maxim1000 6.11.2005, 19:40 | ||
это опечатка? если нет, то char в C++ обозначает символ и ничего больше строка, обычно, представляется указателем на char: char* |
| Автор: Yak 6.11.2005, 21:41 |
| Если покороче сказать (нашел как это называется))))), то не знаю как передать значение как например в станд ф-ции GetWindowText(), т. е. как буфер, чтоб туда передаешь пустую строку, а она возвр строку с именем процесса. А вот как эт реализовать? |
| Автор: maxim1000 6.11.2005, 22:15 |
| просто выделить буфер нужного размера (объявлением массива или с помощью new) и дальше передавать этот указатель куда надо |
| Автор: np9mi7 6.11.2005, 22:49 | ||||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp lpString - это нуль терминированная строка. Как написал maxim1000 делаешь так:
|
| Автор: maxim1000 7.11.2005, 02:07 |
| я бы не стал использовать здесь std::vector дело в том, что (если я не ошибаюсь) стандарт не гарантирует, что элементы вектора будут храниться последовательно да, пожалуй, это наиболее логичный способ его реализовывать, но не стоит гадать, как производитель STL это сделал мне кажется, что лучше все-таки на этом уровне использовать char s[256] а потом приводить его к std::vector, если надо... |
| Автор: srd 7.11.2005, 04:05 | ||
В отличие от std::string, для вектора гарантируется стандартом последовательное расположение элементов в памяти. |
| Автор: maxim1000 7.11.2005, 14:52 | ||
упс... значит, ошибся... |