Задать вопрос

Связка Delphi 7 и С++(DLL). Изменение структуры по ссылке

Есть структура в Delphi:

type
RESPONSE =packed Record
		datetime:PChar;
		code:PChar;
		response_string:PChar;
end;

var 
resp:RESPONSE;


и в с++
struct RESPONSE {
		char *datetime;
		char *code;
		char *string;
	};

Описание функции в Delphi
function getResponse(resp:PRESPONSE):Integer; cdecl ; external 'TestDLL.dll' name 'EF_getResponse';


Описание функции в C++
DLLEXPORT void getResponse(RESPONSE *resp);

Вызываю из Delphi функцию в DLL
getResponse(Addr(resp));

В DLL должно происходить изменение указателей на строки в структуре.
Вот такой код рабочий
resp->datetime="Test datetime";

А с таким кодом беда
resp->datetime=(char*)element->GetText();

Описание функции GetText()
const char * GetText();

Как корректно присвоить значения полям структуры?
  • Вопрос задан
  • 3014 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Решения вопроса 1
@sba
Нельзя просто так взять и кастовать все подряд. Для начала необходимо хотя бы скопировать данные на которые указывает результат вызова GetText() . И да, struct RESPONSE это вовсе не с++.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А указатель, который Вы пытаетесь записать (вернуть) в основную программу, не указывает случайно на переменную где-то в сегменте данных самой DLL ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 ₽
ITK academy Нижний Новгород
от 75 000 до 125 000 ₽