Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизСвойство типа "record" Найти похожие ветки
← →
ilya39 © (2005-01-20 11:14) [0]В отдельном модуле пишем:
unit2;
type
TSomeType = record
p1: string;
p2: string;
end;
TSomeClass = class(TObject)
private
FSomeType: TSomeType;
public
property SomeType: TSomeType read FSomeType write FSomeType;
end;
В модуле главной формы:
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
var tmp: TSomeType;
begin
with TSomeClass.Create do
begin
tmp.p1 := "что-то"; //так работает
tmp.p2 := "еще что-то"; //так работает
SomeType := tmp; //и так работает
tmp.p1 := SomeType.p1
SomeType.p1 := "что-то";//А так не работает: Left side cannot be assigned to
Free;
end;
end;
Почему поля свойства-записи получаются read-only и как тогда правильно их объявлять?
← →
Skier © (2005-01-20 11:17) [1]SomeType := tmp;
← →
Style © (2005-01-20 11:23) [2]Что-то я не видел такого чтобы из record делали property.
Не понимает такого..
либо так
type
PSomeType = ^TSomeType;
...
PSomeType(@SomeType)^.p1 := "Что-то";
либо так
type
TSomeType = record
p1: string;
p2: string;
end;
PSomeType = ^TSomeType;
TSomeClass = class(TObject)
private
FSomeType: PSomeType;
public
property SomeType: PSomeType read FSomeType write FSomeType;
end;
← →
ilya39 © (2005-01-20 11:26) [3]Можно конечно ... но для того что бы изменить SomeType.p1 не меняя других полей записи надо:
tmp := SomeType;
tmp.p1 := "что то";
SomeType := tmp;
Сразу-то никак нельзя?
← →
Amoeba © (2005-01-20 11:28) [4]
> ilya39 © (20.01.05 11:26) [3]
Как ты хочешь нельзя.
← →
TUser © (2005-01-20 11:31) [5]Можешь объявить TSomeType классом и прописать его создание при создании формы (лучше всего - в конструкторе).
← →
ilya39 © (2005-01-20 11:38) [6]
> Style © (20.01.05 11:23) [2]
> TUser © (20.01.05 11:31) [5]
Спасибо. Понравилось.
← →
PVOzerski © (2005-01-20 12:15) [7]И вот так можно (D3, по крайней мере):
with SomeClass.SomeType do
p1:="Hello!";
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c