Вниз
Скачать: CL | DM;

PChar2   Найти похожие ветки 

← →
Muskat   (2003-06-11 14:40) [0]

function Test1(S: String): PChar;
begin
Result := PChar(Copy(S,2,Length(S)));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
c : PChar;

begin
c := Test1("*2");
ShowMessage(c);
end;

При вызове функции Test1,
с параметром "*2", результат = nil,
с параметром "*23", результат = "23",
с параметром "*234", результат = "23",
с параметром "*2345", результат = "2345",

Но если заменить тип результата на String, тогда все нормально:
с параметром "*2", результат = "2",
с параметром "*23", результат = "23",
с параметром "*234", результат = "234",
с параметром "*2345", результат = "2345".

В чем дело?


← →
han_malign ©   (2003-06-11 14:49) [1]

скажи спасибо что не AV - передаешь в результате адрес временной строки, которая неявно создается в Copy, и уничтожается при выходе из функции(поскольку Reference Counter = 0, т.к. нет присвоения другой строковой переменной)


← →
Юрий Зотов ©   (2003-06-11 15:22) [2]

> Muskat (11.06.03 14:40)

Это уже не первый Ваш эксперимент с PChar, верно? И каждый раз возникают вопросы. Но ведь так можно экспериментировать всю жизнь, не лучше ли просто почитать про указатели и работу с динамической памятью? Чтобы снять все вопросы навсегда.


← →
vv3 ©   (2003-06-19 00:11) [3]

А StrPCopy - нет?


← →
VMcL ©   (2003-06-19 01:34) [4]

>vv3 © (19.06.03 00:11)

Ещё один блеснул интеллектом.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
6-97773
_DarkSide
2003-04-24 16:34
2003.06.30
Локальные компьютеры


3-97487
VP
2003-06-05 10:05
2003.06.30
SQL разные форматы данных


14-97891
Knight
2003-06-13 23:02
2003.06.30
Diablo


14-97783
Кен
2003-06-12 07:51
2003.06.30
А есть ли программы, которые могут по фотографии воссоздать трёхм


11-97575
Sacred
2002-10-14 12:04
2003.06.30
ActiveX




   Наверх