Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c