Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: 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 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
1-1105957716
MadSnake
2005-01-17 13:28
2005.01.30
Группировка в Excel


3-1103783316
stud
2004-12-23 09:28
2005.01.30
использование Action


1-1105960029
sasha-bumer
2005-01-17 14:07
2005.01.30
Flash


1-1106072354
W_h_i_t_e_
2005-01-18 21:19
2005.01.30
.txt в .Res


4-1102800675
Piter
2004-12-12 00:31
2005.01.30
Перехват функций