|
|
|
Адресс буффера
|
|||
|---|---|---|---|
|
#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?fid=60&msg=35601638&tid=2161723]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 409ms |

| 0 / 0 |
