Главная страница
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.038 c
4-1119508902
Grief
2005-06-23 10:41
2005.08.14
Окошко из трея (не знаю как назвать)


3-1120523457
LF
2005-07-05 04:30
2005.08.14
Игнорируется EOleException


14-1121727913
pasha_golub
2005-07-19 03:05
2005.08.14
Пока меня не заставили работать


3-1120471682
Apachi
2005-07-04 14:08
2005.08.14
Как собрать строку в T-SQL


1-1122188529
Wistler
2005-07-24 11:02
2005.08.14
Сравнение записей