Связка 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();

Как корректно присвоить значения полям структуры?
  • Вопрос задан
  • 3002 просмотра
Решения вопроса 1
@sba
Нельзя просто так взять и кастовать все подряд. Для начала необходимо хотя бы скопировать данные на которые указывает результат вызова GetText() . И да, struct RESPONSE это вовсе не с++.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А указатель, который Вы пытаетесь записать (вернуть) в основную программу, не указывает случайно на переменную где-то в сегменте данных самой DLL ?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы