Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
1-1122114838
olorint
2005-07-23 14:33
2005.08.14
Хранение данных больших размеров


3-1120885666
lelik
2005-07-09 09:07
2005.08.14
вопрос по IB DataSet


3-1120454140
ANB
2005-07-04 09:15
2005.08.14
Как грамотно выполнить асинхронный ExecSQL в ODAC (Oracle)


9-1114243463
Trof
2005-04-23 12:04
2005.08.14
Стычки между ботами. Glscene


3-1120805389
dreamse
2005-07-08 10:49
2005.08.14
Проблема в добавлении записи через хранимую процедуру





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский