![]() |
|
Модераторы: Akina |
![]()
|
|
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
помню там получаем адрес дескриптора стринговой переменной, из которого собсно выдираем адрес тела стринга... но вот вылетело - а найти что-то не могу...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
К примеру:
-------------------- Никогда не говори никогда |
|||
|
||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
или так
|
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Ты об этом???? Это сообщение отредактировал(а) Mephisto - 6.9.2005, 10:04 |
|||
|
||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
все зависит от того, что АПИ принимает:
- ОЛЕ-строку ( As String); - указатель на строку(As Long) Для последнего StrPtr(buf). |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Все намного хуже. Надо передавать буфер в API, причем ByRef, причем описанный как Any. Типа как lpBuffer в
Я помню, там получался дескриптор строки (StrPtr), а потом строился ее адрес при помощи Peek в переменной типа Long... вроде бы... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
да, еще байтовый массив
Добавлено @ 16:08 В ReadFile можно использовать и байтовый массив и выделить буфер с помошью String$ |
|||
|
||||
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: нет Всего: 3 |
Может быть это поможет!
|
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
когда делал DLL-ку на C++, там тоже надо было передать BYREF строковый буффер (использовал dll в Basic). Так вот. В функции dll заголовок такой
ExtendedEnumProcs(char* buff) для тех кто не в курсе char* - почти строка, это указатель на нулевой символ. Когда юзал в си, все норм, а когда перенес в баську, объявил так: [code=vb] (byref buff as string) [/code=vb] Испытал и вылетел нафиг... Еще раз... потом еще. Оказалось, что СТРОКУ передавать надо BYVAL - все равно передаст УКАЗАТЕЛЬ. ну и само собой ее надо заполнять перед передачей функцией Space... попробуй в декларации вместо [code=vb] lpBuffer as Any [/code=vb] поставить [code=vb] ByVal lpBuffer as string [/code=vb] Можа прокатит... --------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
пардон может я не так понял
но чем lstrcpy не устраивает в данном случае? -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Тем что VB про существование такой функции не знает -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
еше раз пардон а что разве в ВБ недоступны стандартные АПИ функции винды? п.с. я просто на ВБ ни разу ни того -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
так я не понял, как на счет байтового массива?
с ReadFile работает без проблем. показал бы код и какие ошибки вылазят, а то разговор уходит в неизвестное направление
char* - не почти строка можно так же сказать, что это указатель на первый символ строки. таким способом: "byref buff as string", ты передаеш адрес BSTR(т.е. указатель на массив символов в юникоде), тогда как твоя ф-ция на сях ждет АBSTR - указатель на массив ANSI символов. |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Байтовый массив не устраивает - нужно получать именно стринг, для последующей строковой обработки. А пережевывать байтовый массив в строку - долго.
Почему? доступны... только что и куда ты предлагаешь копировать? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
выдели буфер с помощью String$. так тоже работает. |
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Это РАБОЧИЙ код. Строка ВСЕГДА передается внешним функциям Byval! Че б там не было написано! ЕЕ имя УЖЕ указатель - на 0-й символ. Пример брал с USING ReadFile Это сообщение отредактировал(а) Kergan - 2.9.2005, 16:41 --------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
??????? rtlMoveMemory!!!!! Почему же долго? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Да по той же самой причине - ну избавился я от передачи строки в ReadFile... а в rtlMoveMemory опять-таки надо передавать строковый буфер. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Kergan |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.8.2005 Репутация: 3 Всего: 5 |
Пардон, Я че-то не секу, а чем вам не нравится использование функции readfile ВООООН в том примере повыше??? Там ведь буффер нормально передается, строкой???
--------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :( |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |