Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Библиотека и передача строкового параметра 
V
    Опции темы
Gwire
Дата 17.3.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



Всем доброе время суток.
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);

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

PM MAIL   Вверх
kami
Дата 17.3.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



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

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

код в студию.
PM MAIL WWW   Вверх
Gwire
Дата 18.3.2009, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



Для 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 варианта: удалить тему или оставить как наглядный пример о банальности ошибок

PM MAIL   Вверх
Демо
Дата 19.3.2009, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



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


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


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.