![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача record по ссылке. [D7, XP]
brhrbr © (2007-08-12 11:25:00)
TMyRec = record
W1: Word;
B1: Byte;
end;
PMyRec = ^TMyRec;
function MyTest1(s: string): PMyRec;
var
Tmp: TMyRec;
begin
Tmp.W1 := StrToInt(Copy(s, 1, 1));
Tmp.B1 := StrToInt(Copy(s, 2, 1));
Result := @Tmp;
end;
function MyTest2(s: string): PMyRec;
begin
New(Result);
Result.W1 := StrToInt(Copy(s, 1, 1));
Result.B1 := StrToInt(Copy(s, 2, 1));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(InttoStr(MyTest?('12')^.B1));
end;
Что нужно использовать MyTest1 или MyTest2?
Юрий Зотов (2007-08-12 12:01:00) [1]> brhrbr (12.08.07 11:25)
После выхода из MyTest1 ее локальные переменные перестают существовать и адрес Tmp оказывается битым.
Плохиш (2007-08-12 11:41:00) [2]MyTest2.
Из MyTest1 возвращается недействительная ссылка.