|
|
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые. Подскажите пожалуйста как мне определить адрес буффера? Поясняю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Собственно по коду понятно что массив ByteArr где-то расположен в памяти. Вопрос а как узнать адрес по которому в памяти расположен массив? М.Б. какую-нибудь API кто-нибудь помнит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:02 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Первый вопрос: для чего это потребовалось? Второй вопрос: зачем вы смешиваете в одной строке устаревший и сегодняшний способы декларирования ваших переменных? Для справки: посмотрите CopyMemory и VarPtr Здесь пример: http://www.tek-tips.com/viewthread.cfm?qid=1425974 Успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:34 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor > Доброго времени суток, уважаемые. > > Подскажите пожалуйста как мне определить адрес буффера? Поясняю: Я не совсем понял при чем здесь вопрос и код приведенный для примера :-[ Но твой код можно слегка "оптимизировать": Код: plaintext 1. 2. 3. 4. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:42 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor Кстати! Почту получила? -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:45 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
VladConnПервый вопрос: для чего это потребовалось? Второй вопрос: зачем вы смешиваете в одной строке устаревший и сегодняшний способы декларирования ваших переменных? 1. Потребовалось потому что надо определить адрес данных в памяти. Такая поставлена задача 2. Объявление по-старому и по-новому, это скорее всего вопрос привычки, т.е. я привыкла писать Dim temp_string$, а не Dim temp_string As String. Принципиальной разницы не вижу. CopyMemory по-моему как раз и отвечает за копирование данных с указанного адреса. А мне нужно узнать адресс. VarPtr, StrPtr - наверное это то что мне надо. Буду разбираться. Игорь Горбонос 1. Код приведен просто для примера, ну то есть как узнать адрес именно такого байтового массива не более 2. Почту не проверяла. На днях пойду проверю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:58 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Вопрос: Почему tempstr и tempstr2 различаются? Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 19:08 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
В общем с тем почему мне выдавало какую-то ерунду при копировании из памяти по указанному аддресу я разобралась. Если кому-нибудь будет интересно-поясняю. При конвертации не понимались русские буквы и строка разделена 0 символами, также строка получилась обрезанной из-за смещения, т.е. адрес на строку был ни разу не 32-разрядным. Вопрос: Как сформировать 32-разрядный указатель? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. т.е. собственно чтобы вместо 0 было смещение 4, как для long ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 19:45 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Kallandor, про русские буквы: надо учитывать, что кодировка Unicode в понимании Microsoft двухбайтовая. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Право слово, ничего личного, я позитивен и лучусь благожелательностью , но не оставляет впечатление, что Вы 1) настойчиво ломитесь в открытую дверь 2) не читаете советских газет... тьфу, хорошие статьи, на которые Вам дали ссылки 3) пользуетесь терминологией в своём, отличном от общепринятого, смысле 4) считаете, что форумчане в контексте Ваших частных задач и Ваших способов их решения. Это я к тому, что не понял фраз "Вопрос: Как сформировать 32-разрядный указатель?" и "т.е. собственно чтобы вместо 0 было смещение 4, как для long ?" И ещё я не понял, зачем эти фокусы вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 21:09 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
БенедиктKallandor, про русские буквы: надо учитывать, что кодировка Unicode в понимании Microsoft двухбайтовая. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Это я пыталась посмотреть что лежит в памяти по указанному мною адресу и надо чтобы обязательно смещение было 4 Бенедикт Право слово, ничего личного, я позитивен и лучусь благожелательностью , но не оставляет впечатление, что Вы 1) настойчиво ломитесь в открытую дверь 2) не читаете советских газет... тьфу, хорошие статьи, на которые Вам дали ссылки 3) пользуетесь терминологией в своём, отличном от общепринятого, смысле 4) считаете, что форумчане в контексте Ваших частных задач и Ваших способов их решения. 1. Если я вдруг оказалась хамкой - извините, вот что что, а хамить я точно не собиралась 2. читать то я читаю, только вот наверное до меня доходит не все что написано, или все но не с первого раза. Так что в этом вопросе я признаю свою туповатось 4. Ставить форумчан в контекст всей задачи считаю нецелесообразно. Потому как порой большая задача делится на мелкие подзадачи и ряд мелких подзадач уже решен, а одна какая-нибудь мелкая, зараза, ну никак не хочет решаться, и надо решить именно мелкую подзадачу БенедиктЭто я к тому, что не понял фраз "Вопрос: Как сформировать 32-разрядный указатель?" и "т.е. собственно чтобы вместо 0 было смещение 4, как для long ?" И ещё я не понял, зачем эти фокусы вообще. Одним из входных параметров в функцию, описанную в сторонней dll, является указатель на буфер в котором помещенны данные полученные с помощью вызова MTEGetSnapshot. Собственно, данные из буфера MTEGetSnapshot помещены в базу. Потом я формирую байтовый массив из этих данных или строку из байтов (еще не поняла до конца что надо команде) и потом указатель на буффер хочу передать в команду MTESetSnapshot. Собственно коды: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. Собственно это описание проблемы более подробно. Но все равно пока такой код выдает ошибку на этапе обращения к DF_SetSnapshot. То есть ErrorMsg заполнено ошибкой, присланной от ММВБ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 11:27 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
KallandorЭто я пыталась посмотреть что лежит в памяти по указанному мною адресу и надо чтобы обязательно смещение было 4А получилось вот что: создана автоматическая временная переменная, в которую помещён результат функции Len(). Затем в эту переменную функцией CopyMemory() занесены первые 4 байта (два символа) тела строки. Затем эта переменная автоматически уничтожилась.KallandorСобственно, данные из буфера MTEGetSnapshot помещены в базу.Хорошее решение. Не выложите базу (это .mdb?) (или дампов нескольких снэпшотов) вместе с кодом, помещавшим данные в базу, для того, чтобы было, что пощупать руками?KallandorПотом я формирую байтовый массив из этих данных или строку из байтов (еще не поняла до конца что надо команде) и потом указатель на буффер хочу передать в команду MTESetSnapshot.Может быть, стоит проверить на самом простом тесте: передать в MTESetSnapshot снэпшот, сохранённый в базе, без каких-либо изменений? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. P.S. Под ломлением в открытую дверь я имел ввиду, что Вы пытаетесь сделать какую-то простую, и многократно сделанную вещь. Сами, набивая все шишки, и без оглядки на то, как это делали другие. Больно на это смотреть. Но - Ваше право. (Сам такой Мы все такие) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 15:18 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Бенедикт, Один снапшот для примера я могу привести (посто на самом деле они все похожи, так как до второго снапшота я не могу дойти, к сожаленью). Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Собственно это байтовый массив, через chr(124) - вертикальная палочка, я сплитую это в байтовый массив просто через Cbyte() Пробовала посылать и ByRef сформированный массив - не выходит цветочек каменный Как формирую массив байтов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Мне кажется, что это из-за различной адресной арифметики между с++ и vb. Так как сторонняя dll написана на с++. Также посоветовавшись с разработчиками dll я поняла что если я им буду передавать строку, то в бейсике она будет в формате unicode, а они ожидают asciiZ строку, поэтому наверное лучше передвать массив. Осталось понять как определить адрес этого массива :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 15:57 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Бенедикт, Совсем забыла к SQL-серверу я коннекчусь через ADO. Снапшот никак не хочу преобразовывать, ну то есть осознанно менять какие-либо байты. Вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:00 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor > Также посоветовавшись с разработчиками dll я поняла что если я им буду передавать > строку, то в бейсике она будет в формате unicode, а они ожидают asciiZ строку, поэтому > наверное лучше передвать массив. А с чего ты взяла, что там будет юникод? А как тогда работает этот код? Код: plaintext 1. 2. 3. 4. 5. 6. 7. перетрубаций -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:14 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, Юникод там потому что когда я делала действия указанные в первом посте, только на примере строки, вытащенной из sql сервера, то возвращалась сторка с ноликом через символ. Вот. На основании этого я решила, что в бейсике по умолчанию юникод. Вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:18 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
BSTR пусть в c++ dll юзают и тебя и нас не мучают ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:20 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_One, это только мечты. Мне кажется сейчас они активно продвигают продажу уже сделанного продукта. И еще по-моему у них действует принцип - "Это не bug'а, это фича" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:27 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
грустно, тогда гуглите по проблеме передачи строк из бэйсика в C++ (BSTR->ansiiZ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:28 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Konst_One > грустно, тогда гуглите по проблеме передачи строк из бэйсика в C++ (BSTR->ansiiZ) По моему Бенедикт уже давал эту ссылку -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:34 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
невнимательно читал ветку, тогда автору надо все прочитать и сделать коррективы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:35 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Strings and Byte Arrays Of course, a byte array is just an array whose members have type byte, for instance: Dim b(1 to 100) As Byte To get a pointer to this byte array, we can use VarPtr: Dim lpsz As Long lpsz = VarPtr(b(1)) ' or rpiVarPtr(b(1)) (Even though it doesn't seem so, the letters lpsz stand for long pointer to null-terminated string.) Note that the address of the first member of the array is the address of the array. Remembering that an LPSTR is a pointer to a null-terminated character array, we should initialize the array to nulls: For i = 1 To 100 b(i) = 0 Next (It is true that VB does its own initialization, but it is not good programming practice to rely on this.) Translating Between Byte Arrays and BSTRs To copy a BSTR: Dim s As String to a byte array, we can proceed in a couple of different ways. For a strictly VB solution, we have: s = "help" Dim b(1 To 8) As Byte For i = 1 To 8 b(i) = AscB(MidB(s, i)) Next Another approach is: s = "help" Dim b(1 To 8) As Byte CopyMemory b(1), ByVal StrPtr(s), LenB(s) Note that (in both cases) we get: 104 0 101 0 108 0 112 0 showing that the bytes are reversed in each Unicode integer. In the other direction, to copy a byte array into a BSTR, VB gives us some help. If b is a Unicode byte array, we can just write: Dim t As String t = b For an ANSI byte array b, we write: Dim t As String t = StrConv(b, vbUnicode) Note, however, that the StrConv function does not recognize a null terminator in the byte array--it will translate the entire array. Any nulls that are encountered in the array become embedded nulls in the BSTR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:46 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
From BSTR to LPSTR The function to convert a BSTR to an LPSTR is similar, but requires a translation from Unicode to ANSI first: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:52 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_One, ага, я это тоже увидела. Только вот доходит до меня долго Тупенькая я Когда делаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. В tempstr2 какая-то фигня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:57 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
зачем вам tempstr2$ что вы хотите увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 16:59 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:03 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_Oneзачем вам tempstr2$ что вы хотите увидеть? "english word" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:03 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
оно вам не надо, см ответ выше. или читайте статью дальше, как преобразовывать обратно в BSTR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:05 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_One Код: plaintext 1. ех, все равно DF_SetSnapshot возвращает ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:12 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
а где C-шное описание DF_SetSnapshot? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:14 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:19 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor Может это поможет понять что и как происходит со строками. Заодно и оптимизацию проведёшь ;))) -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:26 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Описание(C language definition) int32 WINAPI MTESetSnapshot( int32 Idx, char * Snapshot, int Len, char *ResultMsg); Аргументы: Idx Дескриптор соединения, полученный с помощью вызова MTEConnect. Snapshot Указатель на буфер в котором помещенны данные полученные с помощью вызова MTEGetSnapshot. Len Длина данных в передаваемом буфере. ResultMsg Указатель на буфер размером не менее 256 байт, куда в случае успешного выполнения будет помещена строка текста с результатом обработки транзакции торговой системой. Возвращаемое значение: Один из кодов ошибки MTE_xxxx. Я думаю это из-за адресной арифметики. Ну то есть когда я на тестовом примере делаю, то мне вовращается практически правильное значение при смещении 2 (ну как для 16-разрядного указателя). А у них скорее всего нужно смещение 4 (32-разрядный указатель) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:27 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. а почему такое объявление? это вам разработчики dll так подсказали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:30 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Ой, как вы все сложно замутили... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:38 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:40 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
AntonariyОй, как вы все сложно замутили... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:43 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_One Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Даже если так. У них в dll есть проверки по ключевым символам. И видать передаваемая строка не проходит эти проверки. И ret ="-17" что в расшифровке означает "Неправильные параметры" Все же я думаю это именно из-за смещения, так как даже в функции BSTRtoLPSTR - CopyMemory b(1), ByVal lpsz, cBytes + 2 а мне надо 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:47 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Kallandor а мне надо 4 это откуда известно? Код: plaintext 1. 2. 3. 4. 5. и дальше пробуйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:52 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Konst_One, Это предположение, потому как когда я копирую данные пришедшие с их адресом в памяти, т.е. 32-разрядным указателем на строку (байтовый массив) то я указываю смещение 4. Остальные не действуют - проверяла. Также я думаю и им надо, чтобы указатель был 32 - разрядным, а не 16. Опять же это предположение. А как проверить посылая 4 я как-то не соображу. То есть про 2 вижу, а про 4 не соображаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 17:56 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:01 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Kallandor, вполне вменяемый дамп. Только надо в документации смотреть, что все эти поля означают. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:29 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Бенедикт, Я согласна что это вменяемый дамп. И даже если перевести его в chr то я знаю что какие байты означают. Основная проблема не в том что дамп не тот. А в том что он не передается. Опять же мне кажется из-за смещения. Как только я пойму как это сделать - значит я-герой , не пойму - лузер. Все просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:33 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Kallandor, почему у Вас опасение, что указатель 16-битный? StrPtr(), VarPtr(), ObjPtr() возвращают нормальные 32-битные указатели (хранящиеся в Long) для плоской (flat) модели памяти. Добавляйте нужное смещение (опять - почему опасение?), и передавайте ByVal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:39 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor > Бенедикт, > > Как только я пойму как это сделать - значит я-герой , не пойму - лузер. Все просто А вот тут не согласен, геро иней ты станешь тогда, когда хлопнешь себя по лбу и скажешь "Какая, я была (тут подставить что лучше подойдет), ведь можно было сделать все намного проще и быстрее". А пока, наверное ты права, примем и тебя в ряды героев. не проше сделать "прокладку" в виде dll, на том-же С++ или Дельфи??? -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:42 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Вах! Что-то мне подсказывает источник смущения:Описание(C language definition) int32 WINAPI MTESetSnapshot( int32 Idx, char * Snapshot, int Len, char *ResultMsg);В C нет типа "байт", а есть тип "символ". char * Snapshot может означать не только "указатель на ASCIIZ-строку", но и "указатель на массив байтов". Зависит от контекста применения. По дампу отчётливо видно, что он не строка. Это массив байтов. Поэтому в VB можно функцию описать как Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 18:59 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, Обидно то что я сейчас уже вижу места, которые можно сделать проще :( а я наваяла 2500 строк кода, причем компактного и очень осмысленного. Наверное это усталось, но я уже 3 недели сижу над этим проектом, а конца не видно только сделаешь одно - появляется другое. (ет я жалуюсь - просьба не воспринимать серьезно ) И я еще не герой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 19:01 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Бенедикт ret = DF_SetSnapshot(Idx, ByteBuffer( смещение ), _ UBound(ByteBuffer) - LBound(ByteBuffer) + 1, ErrorMsg)[/src] Не поняла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 19:05 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
Kallandor, поправлю код: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 19:19 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
"при раз" читать как "раз" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 19:20 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
> Автор: Kallandor > Игорь Горбонос, > > Обидно то что я сейчас уже вижу места, которые можно сделать проще :( а я наваяла > 2500 строк кода, причем компактного и очень осмысленного. См. ниже > Наверное это усталось, но я уже 3 недели сижу над этим проектом, а конца не видно > только сделаешь одно - появляется другое. (ет я жалуюсь - просьба не воспринимать > серьезно ) А вот это и есть "легкая работа программиста" и при том "непонятно за что, получают слишком много". У меня товарищ спрашивает периодически в аське, чем я сейчас занимаюсь, а я поддерживаю и развиваю внутрикорпоративную систему, и я занимаюсь только ей. Сегодня нужно расширить возможности в одном месте, завтра в другом, послезавтра сделать новый функционал, и так из-зо дня в день :) > И я еще не герой А ты уверенна? см. чуть выше фразы "См. ниже" ;)) Далеко не все решается блиц-кригом, а если и решается, то ОЧЕНЬ хорошо спланированным. А тебе для него не хватает немного знаний и времени, что-бы разложилось все по полочкам. Но за одного битого, двух не битых дают (с) пословица -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 19:26 |
|
||
|
Адресс буффера
|
|||
|---|---|---|---|
|
#18+
БенедиктKallandor, поправлю код: Код: plaintext 1. Не работает - собака. Да еще и я устала с ним бороться. Так что пойду домой. Спасибо за советы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 20:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2161723]: |
0ms |
get settings: |
14ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
6ms |
| others: | 223ms |
| total: | 411ms |

| 0 / 0 |
