Страница: 1 |
Страница: 1 |
Вопрос: Проблема с COPYMEMORY
Добавлено: 13.08.05 14:56
Автор вопроса: VerhoLom
Это не то. чтоб совсем проблема, но немного достает. Я в своей проге делаю отдельную библиотеку под окна-справочники (т. к. предвижу, что часто буду менять там что-то). Работать с ней буду через позднее связывание (получается чтото типа плагина), т. к. перекомпилировать экзешник каждый раз нет охоты (а этих разов, видать, будет много). В эту ДЛЛку я передаю объект ADO.Recordset для заполнения окна-справочника и делаю это так:
Public Function FillDict(ByVal lngRecordset As Long) As Long
On Error Goto No
dim AdoR As ADODB.Recordset
[B] CopyMemory ByVal AdoR, ByVal lngRecordset, 4&[/B]
Set FormDict.MshFlexGrid.Recordset=AdoR
[B] ZeroMemory byVal AdoR, 4&[/B]
...
FillDict=0 'Все нормально, возвращаем 0
Exit Function
no:
FillDict=-1 'Ошибка какая либо
...
Exit Function
End Function
Вот ее вызов:
objFDict.FillDict VarPTR(MyAdoRecordset)
Ничего особенного тут нет, кроме одного ньюанса: в откомпилированном виде все работает без проблем, а вот в пошаговом (через Ф8) возникает ошибка:
RemoteProcedure Call Failed
У кого-то есть идеи, как это безобразие можно прекратить???
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 13.08.05 15:14
Это безобразие прекращается использованием средства отладки, позволяющим выполнять программу в пошаговом режиме. Т.е. какого-нибудь отладчика. Например OllyDbg.
Номер ответа: 2
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #2
Добавлено: 13.08.05 15:34
А средствами Бейсика????
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 13.08.05 15:42
Что средствами Бейсика? Произвести полноценную отладку? Нет такого. Как впрочем и "средствами" IDE.
Тот пошаговый режим, который предоставляет IDE, отладочным инструментом можно назвать с очень большой натяжкой.
У меня вот встречный вопрос: почему постоянно люди просят "средствами Бейсика". Они что, эти "средства", - лучше, удобней, гибче, надёжней или что-то ещё?
Имхо, кроме дополнительных неудобств и ограничений, ничего "средства Бейсика" не дают.
Номер ответа: 4
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #4
Добавлено: 13.08.05 15:44
Вообще то согласен!
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 13.08.05 16:50
Сначала объясни, почему передаётся varptr as long, а не просто as recordset.
Номер ответа: 6
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #6
Добавлено: 20.08.05 15:10
Для GSerg. когда в библиотеку (в ней находятся окна-справочники), которую создал через CreateObject, передаешь recordset, получается не совсем хорошая вещь: MSHFlexGrid (я нею пользуюсь для отображения справочных таблиц) не хочет видеть recordset, переданный таким образом в такую библиотеку. Может это глюк моей среды, но проверено временем. А если передать его как ЛОНГ и потом сделать так, как я описал, то Set MshFlexGrid.Recordset=AdoR прорабатывает нормально. Собственно все...