Также вы можете использовать встроенный ассемблер и сделать это:

я есть DLL, в которой у меня есть функция, которая возвращает pchar. (чтобы избежать необходимости использовать borlndmm) Первоначально я делал приведение строки как pchar и возвращал

Result := pChar(SomeFuncThatReturnsString)

Но в 90% случаев я получал ожидаемые результаты, а в остальное время ничего не получал.

Затем я подумал, что мне нужно выделить память для pchar, и что при моем первоначальном подходе у меня была точка pchar в памяти, которая не всегда была той, что была при первоначальном вызове функции. Так что теперь у меня есть это

Result := StrAlloc(128);
Strcopy(Result,PAnsiChar(Hash(Hash(Code,1,128),2,128)));

Но это оставляет мне необходимость очищать выделенную память на конце программы, с которой я делаю

StrDispose(Pstr);    

Таким образом, вопрос за 64 доллара: нужно ли выделять память при возврате PChar из функции внутри DLL или я могу просто привести ее к PChar?

Ответы на вопрос(3)

Ваш ответ на вопрос