Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.041 c
8-1097922688
GlavBOTan
2004-10-16 14:31
2005.01.30
Большой Bitmap и маленький A4 (или любой другой)


3-1103943993
Guitar
2004-12-25 06:06
2005.01.30
Ошибка Key column information is insufficient or incorrect ... ?


14-1105518621
Tornado
2005-01-12 11:30
2005.01.30
Помогите с PHP


3-1103890350
_student
2004-12-24 15:12
2005.01.30
Как вывести bmp из mdb


6-1099919063
syte_ser78
2004-11-08 16:04
2005.01.30
Мониторинг доступа к расшареной папке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский