Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Создал пророект на Delphi 7 "Мастер DLL" Написал код: library Shortcut; uses SysUtils, ComObj, ActiveX, ShlObj, Registry, commctrl, windows, Classes; {$R *.res} function NameFromLink(LinkFileName: string): string;stdcall; var MyObject: IUnknown; MySLink: IShellLink; MyPFile: IPersistFile; FileInfo: TWin32FINDDATA; WidePath: array[0..MAX_PATH] of WideChar; Buff: array[0..MAX_PATH] of Char; begin Result := ''; if (fileexists(Linkfilename) = false) then exit; MyObject := CreateComObject(CLSID_ShellLink); MyPFile := MyObject as IPersistFile; MySLink := MyObject as IShellLink; StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath)); MyPFile.Load(WidePath, STGM_READ); MySLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY); Result := buff; end; exports NameFromLink; begin end. На простом проекте Delphi 7 все работает. При вот таком вызове,написанной функции: Private Declare Function NameFromLink Lib "c:\My_DLL.dll" (ByVal F As String) As String Private Sub Command1_Click() MsgBox NameFromLink("c:\Ярлык.lnk") End Sub Происходит зависание программы, почему? Пожалуйста,кто может,помогите сделать DLL при помощи которой извлекается путь к запускаемому файлу,так что бы она запускалась из VB. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 07:40 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Если "function NameFromLink(LinkFileName: string): string;stdcall;" написать без "stdcall;",тоесть "function NameFromLink(LinkFileName: string): string;" программа на VB пишет что неправельные параметры вызова... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 12:11 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K, 1) несколько наивно полагать, что у VB и Delphi одинаковые соглашения по передаче строковых параметров. Переделай прототип функции на API-стиль: function NameFromLink(LinkFileName: PChar; ResultStrBuf: PChar; ResultStrBufLen: DWORD): DWORD; stdcall; Т.е. функции передавать подготовленный буфер результата и его длину, возвращает она количество скопированных символов. См. также тему. 2) Сдаётся мне, для выполнения этой задачи DLL не нужна вовсе. Сравни: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 13:34 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
БенедиктP.R.O.M.A.R.K, Переделай прототип функции на API-стиль: function NameFromLink(LinkFileName: PChar; ResultStrBuf: PChar; ResultStrBufLen: DWORD): DWORD; stdcall; Т.е. функции передавать подготовленный буфер результата и его длину, возвращает она количество скопированных символов. Я тут пытаюсь это сделать,у меня ничего не получается... Пожалуйста,кинь 2 простых исходника на VB и Delphi, В DLL на Delphi будет функция GetMyText. Если из VB ее вызвать так: GetMyText(5,sString),то в переменной sString будет текст "aaaaa" Если ее вызвать так: GetMyText(10,sString),то в переменной sString будет текст "aaaaaааааа" Ты мне очень поможешь,если сделаешь их,я уже несколько дней пытаюсь сделать функцию для работы с текстом и ничерта не получается... Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:30 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.K Давненько я не брал в руки "шашки". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 23:04 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
БенедиктP.R.O.M.A.R.K Давненько я не брал в руки "шашки". Бенедикт,большое спасибо,ты мне очень помог. Я реньше что-то похожее писал,но Delphi ругался на синтаксис и разные неправельные написания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 04:14 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Бенедикт 2) Сдаётся мне, для выполнения этой задачи DLL не нужна вовсе. Сравни: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Скачал библиотеку типов,все работает,большое спасибо,очень помог. Долго искал,ничего найти не мог. Скажи ты с Delphi на VB сам перевел ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 04:19 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Бенедикт Для того, чтобы эта функция откомпилировалась, нужна вот эта библиотека типов. Я скачал эту библиотеку,разархивировал. Открыл VB>Свойства проекта>Выбрал olelib.tlb Все работало. Скопировал папку с olelib.tlb в папку своего проекта. Открыл VB>Свойства проекта>Выбрал olelib.tlb olelib.tlb не активируется из новой папки,только из старой Бенедикт,помоги,в чем дело я перепробовал все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 08:37 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
P.R.O.M.A.R.KСкажи ты с Delphi на VB сам перевел ?Сам. Это механический процесс, размышлений почти не требует . По библиотеке типов: значит, не всё попробовал. Можно поправить вручную в реестре, можно взять утилиту отсюда . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 11:27 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Бенедикт P.R.O.M.A.R.KСкажи ты с Delphi на VB сам перевел ?Сам. Это механический процесс, размышлений почти не требует . По библиотеке типов: значит, не всё попробовал. Можно поправить вручную в реестре, можно взять утилиту отсюда . Спасибо за утилитку,все работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:12 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
DLL Delphi 6 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вызов этой DLL из того же Delphi Код: 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. Вот VB 6 Код: 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. В VB ничего не происходит. К томуже нельзя зарегить Regsvr32.exe /u ksuaw.dll пишет про невозможность найти точку входа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2009, 11:07 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
Проблема была в передаче параметров с VB в DLL. Большое спасибо всем за помощь в решении этой проблемы, со своей стороны я поступлю также. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2009, 10:42 |
|
||
|
VB:Использование DLL написанных на Delphi
|
|||
|---|---|---|---|
|
#18+
wildrainПроблема была в передаче параметров с VB в DLL. В чем там подвох? Я уже вторые сутки над этим бъюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2010, 16:50 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=127&tid=2159738]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 182ms |

| 0 / 0 |
