|
|
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Народ, Нужна помощь, Есть DLL в которой есть функции и процедуры к которым обращаюсь из VFP... Проблема возникла из-за процедуры, которая возвращает значение в переменную типа Record: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Всем огромное спасибо за оказанную помощь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 15:08 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Строка с последующим ручным разбором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 15:16 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Ну и если она написана на Delphi, Вы просто так не отделаетесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 16:56 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
проходящий.Строка с последующим ручным разбором. ну как заполучить эту строку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 17:41 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Точно также, как и другие строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 18:10 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
проходящий.Точно также, как и другие строки. А по-конкрентней можно? DECALRE STRING FRegG_StatPRN IN FuckingLib.DLL String @ReturnString ??? Можно пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 18:32 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Valerii проходящий.Точно также, как и другие строки. А по-конкрентней можно? DECALRE STRING FRegG_StatPRN IN FuckingLib.DLL String @ReturnString ??? Можно пример? Неужели никто не сталкивался с такой проблемой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 20:26 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
DECALRE STRING FRegG_StatPRN IN FuckingLib.DLL String @ReturnString А что, процедура возвращаетс строку? Тогда почему она объявлена строковой? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 21:09 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Sergey Sizov DECALRE STRING FRegG_StatPRN IN FuckingLib.DLL String @ReturnString А что, процедура возвращаетс строку? Тогда почему она объявлена строковой? Код: plaintext Вот именно, она должна возвращать переменую тип Record (Pascal, Delphi), в фоксе такого типа нет, я создал класс Custom c аналогичными свойствами, но прога вылетает... DECLARE STRING FRegG_StatKKM IN Libs\gepard.dll STRING a FRegG_StatKKM(a) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:21 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
А Вы не путаете возврат значения с изменением переданного параметра? procedure FRegG_StatPRN(var StPRN_:StatusPRN); stdcall;type StatusPRN = record DSPReadyStatus:Boolean; BoxStatus:integer; TehMode:Boolean; PrnError:Boolean; // Ошибка принтера (Да/Нет) (True/False) PrnKnifeEnable:Boolean; EndPaper:Boolean; // Конец бумаги (Да/Нет) (True/False) PrnReadyStatus:Boolean; // Готовность принтера (Готов/Нет) (True/False) PrnErrorStatus:Boolean; // Принтер занят, выключен, или произошла ошибка (True/False)end; Где здесь указание на возвращаемое значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:29 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
проходящий.А Вы не путаете возврат значения с изменением переданного параметра? procedure FRegG_StatPRN(var StPRN_:StatusPRN); stdcall;type StatusPRN = record DSPReadyStatus:Boolean; BoxStatus:integer; TehMode:Boolean; PrnError:Boolean; // Ошибка принтера (Да/Нет) (True/False) PrnKnifeEnable:Boolean; EndPaper:Boolean; // Конец бумаги (Да/Нет) (True/False) PrnReadyStatus:Boolean; // Готовность принтера (Готов/Нет) (True/False) PrnErrorStatus:Boolean; // Принтер занят, выключен, или произошла ошибка (True/False)end; Где здесь указание на возвращаемое значение? Здесь не возврат значения, а в передваемый параметр / переменную, записывается состояние девайся. Переменная тип Рекорд.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:19 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Действительно, в фоксе не поддерживаются структуры (или, по Паскалю, записи). Поэтому результат выполнения функции помещается в строку: Код: plaintext Перед вызовом функции переменная ReturnString должна быть объявлена и иметь необходимую длину, равную длине структуры (записи) в байтах. Тип Int - это четыре байта, тип Boolean - это, скорее всего, тоже четыре байта. Поэтому длина структуры - 8 * 4 = 32 байта. Пишете код: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:07 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Здесь не возврат значения, а в передваемый параметр / переменную, записывается состояние девайся. Вот именно! Так почему Вы объявляете свою функция как строковую? DECALRE STRING FRegG_StatPRN Переменная тип Рекорд Да какая разница? Не важно какого типа переменная, важно то, что такого типа в фоксе нет! Но в любом случае это последовательность байтов. Которую в фоксе можно обработать как строку. Но как строку, а не переменную типа Рекорд. Вам теперь уже два раза написали: Код: plaintext Теперь Вам еще и расшифровали авторСтрока с последующим ручным разбором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:38 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
ВБДействительно, в фоксе не поддерживаются структуры (или, по Паскалю, записи). Поэтому результат выполнения функции помещается в строку: Код: plaintext Перед вызовом функции переменная ReturnString должна быть объявлена и иметь необходимую длину, равную длине структуры (записи) в байтах. Тип Int - это четыре байта, тип Boolean - это, скорее всего, тоже четыре байта. Поэтому длина структуры - 8 * 4 = 32 байта. Пишете код: Код: plaintext 1. 2. Появилось вот это: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 14:30 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
ValeriiПоявилось вот это: Cannot find entry point "name" in the DLL (Error 1754) Ну здесь Вам, батенька, никто не сможет помочь - если речь идёт о функции с именем "name". Или вместо "name" в сообщении что-нить другое? Тут есть один момент: имя API функции зависит от регистра символов. Т.е. оно должно выглядеть именно так, как было написано на Си, Паскале и пр. Проверьте правильность! Если и это не поможет, то уже ничего не поможет, кроме авторов этой библы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:49 |
|
||
|
DLL Type Record
|
|||
|---|---|---|---|
|
#18+
Для начала стоить выполнить: dumpbin.exe /exports FuckingLib.DLL >> Report.txt Потом посмотреть Report.txt Должно поулчиться что-то типа: ============================================ Microsoft (R) COFF/PE Dumper Version 7.10.6030 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file XDll.dll File Type: DLL Section contains the following exports for XDll.DLL 00000000 characteristics 465C1EFA time date stamp Tue May 29 16:39:22 2007 0.00 version 1 ordinal base 6 number of functions 4 number of names ordinal hint RVA name 1 0 00001000 GetSum 2 1 000021F0 InitSocket 6 2 00001020 Send_Message 5 3 00001010 Socket_Close 3 00002000 [NONAME] 4 00001850 [NONAME] Summary 2000 .data 3000 .rdata 2000 .reloc A000 .text ================================================= Внимательно посмотреть секцию ordinal hint RVA name И узнать как же все-таки правильно называется Ваша функция. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:11 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34633270&tid=1589065]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 380ms |

| 0 / 0 |
