• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Ошибка при загрузке?

  • Автор темы Baton77
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Baton77

Написал DLL
Код:
library replace;


uses
ShareMem, SysUtils, Classes;

{$R *.res}

function StringReplaceAll (text,byt,mot : string ) :string;
...
...
end;

function Vasya2Petya (text : string) : string;
begin
text := stringreplaceall (text,'Вася','Петя');
result := text;
end;

exports
Vasya2Petya;

begin
end.

В программе вызываю так :

Код:
implementation

{$R *.dfm}


function Vasya2Petya (text : string) : string; external 'replace.dll';

...
...

procedure TForm1.PreviewBtnClick(Sender: TObject);
const BR = '<br>';
var
plats : integer;
begin
for plats:=0 to Memo.Lines.Count-1 do
ConvertMemo.Lines.Add(Vasya2Petya(Memo.Lines.Strings[plats]+ BR));
ConvertMemo.Lines.SaveToFile('Program/Temp.html');
ConvertMemo.Clear;
Form4.Show;
end;

Под дельфи отказывается работать - вместе виснут. :p

А без дельфи работает, но выскакивает ошибка "Invalid pointer operation."

Что делаю не так? :D
 
K

Kuljok

Написал DLL
Код:
library replace;
uses
ShareMem, SysUtils, Classes;

{$R *.res}

function StringReplaceAll (text,byt,mot : string ) :string;
...
...
end;

function Vasya2Petya (text : string) : string;
begin
text := stringreplaceall (text,'Вася','Петя');
result := text;
end;

exports
Vasya2Petya;

begin
end.


Что делаю не так? ;)

Нельзя просто так использовать строки в качестве параметров для экспортируемых функций. Или используй PChar для передачи параметров и возврата результата. Или используй ShareMem.
 
B

Baton77

Разобрался... ;)
Почему-то нигде не находил информацию о том, что модуль ShareMem необходимо добавить и в
uses файла проекта программы - .DPR. :)
Код:
program BBcodeViewer;

uses
ShareMem,
Forms,
...
...

Ещё вот вопрос возник... :)
Обязательно ли наличие в папке с программой библиотеки borlndmm.dll ?
 
B

Barmutik

Обязательно её нахождение в одном из путей где её может найти система...
 
B

Barmutik

Да и этот менеджер работает на 20% в среднем быстре чем стандартный менеджер памяти от Борлянда...

В BDS 2006 они сделали его стандартным в поставке Дельфей...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!