Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

проблема с DLL   Найти похожие ветки 

 
Al_jus   (2005-07-28 04:58) [0]

Здравствуйте.
Опять возникла проблема - пишу функцию в ДЛЛ которая должна разбивать строку на куски:

Код ДЛЛ:
uses
 ShareMem,
 SysUtils,
 Classes;

{$R *.RES}

function getTokens(text:String; separator:String; sl:TStringList):integer;stdcall;
var
count : integer;
begin
count := 0;
repeat
  if pos(separator,text)>0 then
      begin
        sl.Add(copy(text,1, pos(separator,text)-1));
        text:=copy(text,pos(separator,text)+1, length(text));
        count := count + 1;
      end else
      begin
        sl.Add(text);
        count := count + 1;
        break;
      end;
until false;
result := count;
end;

exports getTokens;


и вызываю из программы:

procedure TForm1.Button3Click(Sender: TObject);
var
sl:TStringList;
begin
sl := TStringList.create;
 @getTokens := nil;
 LibHandle := LoadLibrary("project2.DLL");
 if LibHandle >= 32 then
 begin
   @getTokens := GetProcAddress(LibHandle,"getTokens");
   if @getTokens <> nil then
     getTokens(Edit1.Text, Edit2.Text, sl);
 end;
 FreeLibrary(LibHandle);
showMessage(sl[strToInt(Edit3.Text)]);
sl.free;
end;


Кусок строки-то я получаю правильно, но когда я закрываю окно, вылетает ошибка InvalidPointerOperation и Runtime Error 116

Помогите разобраться в чем ошибка
Заранее спасибо


 
Джо ©   (2005-07-28 05:06) [1]

А ShareMem включил в файл проекта главной программы?


 
Al_jus   (2005-07-28 05:07) [2]

да


 
Джо ©   (2005-07-28 05:16) [3]


>  [2] Al_jus   (28.07.05 05:07)
> да

Надеюсь, первым в списке юнитов?
Проверь также как объявлен прототип функции в главной программе.
type
 TGetTokensProc = function (text:String; separator:String; sl:TStringList):integer;stdcall;

Так?
Кстати, stdcall тут ни к селу ни к городу ни в длл, ни в программе.



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1121835426
vajo
2005-07-20 08:57
2005.08.14
Помогите выбрать ноутбук


3-1120541834
paule
2005-07-05 09:37
2005.08.14
Отображение результата запроса ADOQuery в DBGrid


3-1120594101
Powerful
2005-07-06 00:08
2005.08.14
Ошибка EIBClientError при подключении к БД


1-1122470768
Juice
2005-07-27 17:26
2005.08.14
Директива-аналог "stop on delphi exceptions"


1-1122033841
Weberd
2005-07-22 16:04
2005.08.14
Являются ли .dcu файлы версионными?