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

Вниз

В DLL не работает процедура со строковыми параметрами   Найти похожие ветки 

 
__oleg   (2005-02-07 13:49) [0]

Пишу DLL:

uses ShareMem ...

procedure Test(var S: string; var Res: string);
begin
 Res := S + S;
end;

Пытаюсь вызвать функцию в проекте:

procedure XXX;
var S, Res: string;
begin
 ...
 Test(S, Res);
end;

Вылетает Access violation.
Подскажите, как можно передавать строки в DLL и получать из DLL ?
Заранее спасибо.


 
Юрий Зотов ©   (2005-02-07 14:01) [1]

В EXE вставлено ShareMem тоже?


 
Digitman ©   (2005-02-07 14:01) [2]


> Пытаюсь вызвать функцию в проекте


Sharemem д.б. указан первой позицией в uses обоих dpr.

Либо Sharemem не д.б. указан ни там ни там, но тогда оба проекта д.б. собраны с опцией использования ран-тайм пакетов


 
__oleg   (2005-02-07 14:25) [3]

Уточняю: есть проект-dll:

library RCalc;

uses
 ShareMem, SysUtils,
 Classes, UnitsConv, uSymCodes, uRCalcTypes,
 Math, MyMath, MyFunc, uGasPP, uCalcErr;

{$R *.res}

procedure Test(var S: string; var Res: string);
begin
 Res := S + S;
end;

exports
 Test;
begin
end.

И есть основной проект:

program _test;
uses ShareMem, ...

В главном юните проекта пробую вызывать процедуру из DLL:

procedure TForm1.Button1Click(Sender: TObject);
var C, R: string;
begin
 ...
 C := "ab";
 R := "";
 Test(C, R); // Access violation
end;
...

В обоих проектах опция "Build with runtime...." выключена.


 
Владислав ©   (2005-02-07 14:39) [4]

В главном юните вот это откуда:
Test(C, R); // Access violation
?


 
Digitman ©   (2005-02-07 14:44) [5]


> __oleg


библ-ку RCalc как линкуешь ? динамически ? статически ?
покажи в коде ..


 
__oleg   (2005-02-07 14:50) [6]

Ой ! Забыл указать stdcall при описании процедуры. Каюсь...
Но все равно, спасибо всем !


 
Anatoly Podgoretsky ©   (2005-02-07 14:58) [7]

Это не обязательное условие, ты опять не привел полные данные, объявление процедуры в программе. Должно быть одинаковым и совсем не обязательно stdcall



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

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

Наверх




Память: 0.48 MB
Время: 0.051 c
1-1107339808
Igor_thief
2005-02-02 13:23
2005.02.20
ЧТо за компонент или как добавить крестик для развертывания?


14-1106744167
Cosinus
2005-01-26 15:56
2005.02.20
Вылетел комп с синим экраном и каким то непонятным сообщением...


3-1105975016
andrey111
2005-01-17 18:16
2005.02.20
Query.Open из DLL


1-1107406301
ТехникПТО
2005-02-03 07:51
2005.02.20
Как установить компонент NMHTTP в Delphi 6??


14-1107249320
Ozone
2005-02-01 12:15
2005.02.20
Настройка маршрутизаторов (Cisco)