Главная страница
    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.021 c
14-1122206843
Sim2
2005-07-24 16:07
2005.08.14
Paid


3-1120556071
Жук
2005-07-05 13:34
2005.08.14
Индексация поля


14-1121932792
armore
2005-07-21 11:59
2005.08.14
Составить regexp


11-1105368888
TeNY
2005-01-10 17:54
2005.08.14
А где сайт ?http://kol.mastak.ru/ дает 404!


9-1114359194
Yegorchic
2005-04-24 20:13
2005.08.14
Как сделать 2D вид в GLScene?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский