Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: 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 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
14-97884
$ergey
2003-06-13 17:24
2003.06.30
COM-порт


6-97772
Zhenya
2003-04-24 20:55
2003.06.30
ClientSocket???


7-97909
LikeLamer
2003-04-21 10:24
2003.06.30
Вызов свойства компонента из его контекстного меню


14-97862
Fly Iron Man
2003-06-11 20:33
2003.06.30
Программа, выводящая свой исходнй текст


7-97898
Intell
2003-04-20 20:25
2003.06.30
Как создать ярлык для своего приложения?