Главная страница
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.018 c
3-97552
rosl
2003-06-07 10:35
2003.06.30
сортировать записи, вставить дату


8-97754
Dark Hunter
2003-03-14 15:50
2003.06.30
Быстро прочтитать значения пикселей канвы в массив??


3-97475
Goga
2003-06-04 14:14
2003.06.30
Событие WillChangeField


1-97699
Стражник
2003-06-18 08:45
2003.06.30
Экспорт в WORD2000 данных из Парадоксовской БД


6-97769
Nigger
2003-04-25 02:25
2003.06.30
WInSock API???