Вниз
Скачать: CL | DM;

Свойство типа "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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
1-1106179977
_Дельфин_
2005-01-20 03:12
2005.01.30
String и Char


1-1106128654
Автор333
2005-01-19 12:57
2005.01.30
Месяц прописью?


14-1105530696
YurikGL
2005-01-12 14:51
2005.01.30
Ищутся форумы по средствам связи


9-1097069654
.cpp
2004-10-06 17:34
2005.01.30
Создание анимации для управляемого спрайта


11-1087941220
NiceSC
2004-06-23 01:53
2005.01.30
Char & Error




   Наверх