Текущий архив: 2004.06.06;
Скачать: CL | DM;
Вниз
Передача строки в/из DLL Найти похожие ветки
← →
GEN++ © (2004-05-26 21:11) [0]Здравствуйте!
Приведенный ниже код, размещенный в одном модуле работает.
При переносе функции my_F в dll функция возврашает сильно искаженный текст.
Где прокалываюсь?
procedure TForm1.Button1Click(Sender: TObject);
var
Y:string;
begin
Y:=string(my_F(PChar(edit1.Text)));
edit2.Text:=Y;
end;
function my_F(S:PChar):PChar;
var
X:string;
begin
X:=string(S);
result:=PChar(X);
end;
← →
Гаврила © (2004-05-26 21:48) [1]При выходе из функции my_F локальная переменная Х выходит за область видимости, и соответственно, память, выделенная под нее, освобождается компилятором. Ты возвращаешь результатом указатель на уже освобожденный блок памяти. Такая функция не будет нормально работать ни в DLL ни в одном модуле
← →
Игорь Шевченко © (2004-05-26 21:49) [2]Ты возвращаешь мусор
← →
GEN++ © (2004-05-26 22:11) [3]>Гаврила
> Игорь Шевченко
В одном модуле как раз и сработало , что меня и сбило с толку,
конечно resul в данном случае возвращает указатель на память
и видимо в одном простом модуле занятие памяти другой
информацией не происходило.
Спасибо огромное, все нормально работает
Страницы: 1 вся ветка
Текущий архив: 2004.06.06;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.02 c