|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2010, 16:07 | #1 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
загрузка библиотеки DLL
Добрый день. Такая проблема, загрузка происходит, а вызов процедуры производит к ошибке
вот текст библиотеки library Kodirovanie; { Important ... } uses SysUtils, Classes; Type TmasS=array[1..255,1..255] of char; var masS:TmasS; function Kodirovka(text,parol:String):String ; StdCall; var i, schet: integer; begin schet:=1; for i:=1 to Length (text) do begin if schet>length(parol) then schet:=1; text[i]:=masS[(ord (parol[schet])),ord(text[i])]; schet:=schet+1; end; result:=text; end; function Dekodirovka(text,parol:String):Stri ng; StdCall var i,j, schet: integer; begin schet:=1; for i:=1 to Length (text) do begin if schet>length(parol) then schet:=1; for j:=1 to 255 do begin if masS[(ord (parol[schet])),j]=text[i] then begin text[i]:=masS[1,j];break; end; end; schet:=schet+1; end; result:=text; end; exports Dekodirovka, Kodirovka; {$R *.res} begin end. вот код в программе Type TmasS=array[1..255,1..255] of char; var Form1: TForm1; masS:TmasS; H: THandle=0; Kodirovka: function(text,parol:String):String; StdCall; Dekodirovka: function(text,parol:String):String; StdCall; ... ... ... procedure TForm1.Button1Click(Sender: TObject); var parol_v:string; begin parol_v:=Form1.Edit1.Text; Form1.Memo1.Text:=Kodirovka(Memo1.T ext,parol_v);//эта строчка вызывает ошибку end; Вот ошибка Project Project1.exe raised exception cIass EInvaIidPointer with message 'InvaIid pointer operation' , Process stopped. Use Step or Run to continue. Вот текст динамической загрузки библиотеки H:=LoadLibrary('Kodirovanie.dll'); if H<>0 then begin Kodirovka:=GetProcAddress(H,'Kodiro vka'); Dekodirovka:=GetProcAddress(H,'Deko dirovka'); end else ShowMessage('Не удалось загрузить DLL!'); |
10.01.2010, 16:08 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вы читали комментарий пустой ДЛЛ?
про тип string Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.01.2010, 16:27 | #3 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
А можете посоветовать, что делать в этой ситуации?
|
10.01.2010, 16:34 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
либо PChar либо как там написано.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.01.2010, 17:00 | #5 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
Использую библиотеку BorlndMM
по выходу из приложения, после освобождения памяти происходит ошибка "Исключение неизвестное программное исключение(0х0eedfade) в приложении по адресу 0x7c812a7b" |
10.01.2010, 17:06 | #6 |
Пользователь
Регистрация: 26.02.2009
Сообщений: 60
|
Через PChar:
Код:
|
10.01.2010, 17:18 | #7 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
PChar мне не подойдет. Там свои нюансы. Подскажите лучше какие процедуры использовать для работы с памятью при загрузке и выгрызет DLL из модуля ShareMem
|
10.01.2010, 17:48 | #8 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
Подскажите, пожалуйста, как изменить менеджер памяти
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с подключением dll библиотеки | Tan4ik | Помощь студентам | 7 | 01.03.2010 21:02 |
разработка DLL библиотеки | tibult | Фриланс | 5 | 03.12.2008 13:23 |
Библиотеки Dll | ivanesky | Общие вопросы Delphi | 9 | 10.03.2008 10:42 |
DLL библиотеки | Altera | Помощь студентам | 2 | 06.02.2008 06:13 |
Безопасность и DLL библиотеки | PAVEL315 | Безопасность, Шифрование | 3 | 10.03.2007 20:31 |