Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Библиотека и передача строкового параметра


Автор: Gwire 17.3.2009, 22:37
Всем доброе время суток.
smile Есть некая библиотека Lib1 с процедурой:
Код

procedure GetInfo(Title, Hint: String);
begin
    Title:= 'The Title';
    Hint:=  'The Hint';
end;

Если ее использовать внутри библиотеки Lib1 то все замечательно.
Но мне нужно применить ее из отдельной программы, где я пишу:
Код

procedure GetInfo(Title, Hint: String); external 'Lib1.dll';

И при ее вызове программа матерится на невозможность доступа к памяти.
Пробовал с PChar вместо Srting. Дела обстоят лучше но результат - иероглифы в Title, Hint.
smile 
Код

// Вызываю процедуру просто, без заморочек.
// Но подозреваю, что что-то здесь нужно сделать с "T" и "H".....
GetInfo(T, H);

..... но что? Помоготе разобраться.

Автор: kami 17.3.2009, 22:56
А что тут думать?
Создайте чистый проект dll и прочитайте, что там написано борландом. На всякий случай процитирую с переводом:
Если предполагается передача строк между программой и dll, то и в той и в другой ПЕРВЫМ модулем в uses должен стоять ShareMem. В этом случае вместе с разработанной dll в обязательном порядке должна идти BORLNDMM.DLL.

Цитата(Gwire @  17.3.2009,  22:37 Найти цитируемый пост)
Пробовал с PChar вместо Srting. Дела обстоят лучше но результат - иероглифы в Title, Hint.

код в студию.

Автор: Gwire 18.3.2009, 11:49
Для kami
Код

procedure GetInfo(var T, H: PChar);
begin
    T:= 'The Title';
    H:= 'The Hint;
end;

Код

var T, H: PChar;
begin
    GetInfo(T, H);
    ShowMessage( T );
    ShowMessage( H );
end;

smile Это работает.
smile Я, предыдущий раз, var забыл поставить.
У модераторов есть 2 варианта: удалить тему или оставить как наглядный пример о банальности ошибок

Автор: Демо 19.3.2009, 02:01
Цитата(Gwire @  18.3.2009,  11:49 Найти цитируемый пост)
 Это работает.


Не будет это работать.
kami ведь написал, что нужно сделать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)