Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.023 c
3-1084499272
Shade_
2004-05-14 05:47
2004.06.06
Компонент TDBLabeledEdit


14-1084813569
Nomolos
2004-05-17 21:06
2004.06.06
Кто-нибудь имел опыт профессиональной работы с AudioCD


1-1085124432
Anton
2004-05-21 11:27
2004.06.06
Наследование форм


8-1080179392
Driver
2004-03-25 04:49
2004.06.06
Вращение


14-1084964113
blackweber
2004-05-19 14:55
2004.06.06
ВЕСНА. СКОРО ЛЕТО, ОТДЫХ, ПРИРОДА.....