Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

Как лучше всего организовать что-то вроде общего свойства для   Найти похожие ветки 

 
miwa ©   (2004-07-08 22:43) [0]

всех объектов данного класса? Другими словами, в проектируемом классе аж выпирает одно, общее для всех свойство. Тоесть, значение у него будет общим для всех. Ну а поскольку это стринг, а объекты будут мерятся тысячами, то хотелось бы поэлегантнее секономить пару килобайт :о).


 
Гаврила ©   (2004-07-08 22:44) [1]

через глобальную переменную


 
KilkennyCat ©   (2004-07-08 22:46) [2]

Если значение общее для всех... то может, вынести его вообще за пределы данного класса? И в дальнейшем просто помнить, что у этого объекта есть недокументированный стринг с таким-то содержимым...


 
miwa ©   (2004-07-08 22:50) [3]


> через глобальную переменную

А поэлегантнее низзя?


> у этого объекта есть недокументированный стринг

Хэх... Не люблю я недокументированные возможности ;о)

Так что - нету "законных" методов? Тоесть, способов ;о).


 
Palladin ©   (2004-07-08 22:52) [4]

Читаем (где угодно) о наследовании...


 
Palladin ©   (2004-07-08 22:53) [5]

Фу... значение оказывается общее...
Const
CommonValueForSimpleClass=17;


 
miwa ©   (2004-07-08 22:57) [6]

А если оно не const - тогда, естессно, var? И оно не будет создаваться заново каждый раз при вызове конструктора?


 
Palladin ©   (2004-07-08 23:07) [7]

Зачем тебе его создавать если оно постоянное?


 
Гаврила ©   (2004-07-08 23:23) [8]

Ну нет у нас в паскале статических членов, нет.Только глоб. переменные. Под Implementation, чтоб снаружи видно не было.
Свойство на чтение и на запись обращается не к полю класса, а к глоб. переменной.


 
miwa ©   (2004-07-08 23:31) [9]


> Зачем тебе его создавать если оно постоянное?

Да не постоянное оно, а одиноковое для всех. И если изменится - то тоже сразу для всех.


> Ну нет у нас в паскале статических членов, нет.Только глоб.
> переменные.

Дык а я об чем. Я и спрашиваю - как это сделать правильно?


> Под Implementation, чтоб снаружи видно не было.

А вот как раз очень хорошо, если б было видно.

Нет, лучше сделаем так. Вот такой код:

type
tmyclass = class
procedure SomeMethod;
end;

implementation
var
globalvar: string;

procedure tmylcass.SomeMethod;
begin
 globalvar:="some value";
end;


Это правильно?
globalvar не будет плодится для каждого объекта?


 
Гаврила ©   (2004-07-09 00:11) [10]


> globalvar не будет плодится для каждого объекта?


Не будет


 
miwa ©   (2004-07-09 00:40) [11]

Вот и чудненько.
Всем ответившим спасибо.


 
Amoeba ©   (2004-07-09 11:13) [12]

Не плохо! Понадобилось еще дополнительных 9 постов, чтобы до автора вопроса дошел данный первым правильный ответ.


 
Digitman ©   (2004-07-09 11:20) [13]


> miwa ©   (09.07.04 00:40) [11]


чудненько-то чудненько, только вот в такой реализации объекты твоего чудненького класса не будут потокобезопасны как минимум в части мультипоточного вызова Somemethod() ... синхронизация мультипоточного доступа к globalvar напрочь отсутствует


 
REA ©   (2004-07-09 11:26) [14]

threadvar, но он про это не спрашивал


 
КаПиБаРа ©   (2004-07-09 12:07) [15]


> чудненько-то чудненько, только вот в такой реализации объекты
> твоего чудненького класса не будут потокобезопасны


VCL тоже потоконебезопасна, однако никто еще от этого не умер.


 
Digitman ©   (2004-07-09 12:13) [16]


> REA ©   (09.07.04 11:26) [14]
> threadvar, но он про это не спрашивал


threadvar к сабжу не имеет отношения - из другой оперы это


> КаПиБаРа ©   (09.07.04 12:07) [15]
> VCL тоже потоконебезопасна, однако никто еще от этого не
> умер.


мое дело - предупредить



Страницы: 1 вся ветка

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

Наверх




Память: 0.5 MB
Время: 0.058 c
11-1076449964
DDA
2004-02-11 00:52
2004.07.25
Тормаза


14-1089178875
Мазут Береговой
2004-07-07 09:41
2004.07.25
Расскажу я вам сказку...


14-1088749818
Dmitriy O.
2004-07-02 10:30
2004.07.25
Ура ! Сбылась мечта идиота ! (с) О.Бендер


3-1088673750
Relaxxx
2004-07-01 13:22
2004.07.25
Как мне в БД Оракл записать bmp-файл, в BLOB поле


1-1089362290
half_litre
2004-07-09 12:38
2004.07.25
Графический компонент для отображение отношений many-to-many