Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ReadOnly для переменной [D7, WinXP]


Страницы:   1 2 3

DukeArtem ©   (2007-11-21 10:58:00) 

Здравствуйте.
Вопрос такой, есть ли в Дельфях способ выставлять переменной  доступ(чтение/запись): тоесть, есть переменная i в неё и программа заносит данные, и пользователь заносит данные, но так что бы когда пользователь пытался бы занести данные, программа отвечали, что-то в духе ReadOnly(или как угодно, но не давала записать в неё). Сразу же говорю, программа не несёт практического применения, так что альтернативные решения типа не давать пользователю textbox и др. не подходят.
Спасибо, подумавшим.


homm   (2007-11-22 09:39:00) [21]

Отчет по лабораторному заданию №N
Тема: Защита переменной от изменения пользователем.

Данная задача полностью решается компилятором Delphi, который не дает пользователю возможности изменять значения переменных во врямя выполнения программы, защищая их от записи. Любые действия по изменению переменных ложатся на плечи программиста, и пользователь может изменить занчения переменных, которые ему не доступны лиш в результате грубой ошибуи в логике программы.

Ку?


DukeArtem   (2007-11-22 09:38:00) [22]


> > DukeArtem ©   (22.11.07 09:27) [31]
>
> Полностью текст задания можно посмотреть? Без приукрас и
> сокращений?
>

Дано: У нас есть класс с именем TestClass. Среди всего в нем в разделе Public присутствуют 2 переменные: year и count типа integer. С помощью первой переменной пользователь вводит свой год рождения в программу,а с помощью второй может узнать, сколько всего пользователей уже зарегистрировалось.
Задача1: Сделать так. что бы пользователь не мог изменить переменную Count, ведь её он должен только читать, а вычислять количество пользователей - дело программы а не человека.
От себя: устное условие, что это делается не через банальные ограничения такие как вывести в label или поставить не активный textbox
З.Ы. Если я всё усложнил, не пинайте сильно ногами.


turbouser   (2007-11-22 09:32:00) [23]


> DukeArtem ©   (22.11.07 09:27) [31]

Полностью текст задания можно посмотреть? Без приукрас и сокращений?


Сергей М.   (2007-11-22 09:32:00) [24]


> Я его обязываю


Ты не пользователь, ты - разработчик.
Разницу осюсяешь ?)


homm   (2007-11-22 09:32:00) [25]

> Ещё раз, значит есть class

Не ври тут, это не еще раз! Об этом нужно с самого начала говорить.

> [31] DukeArtem ©   (22.11.07 09:27)
и нам нужно что бы программа a.i+1 как всегда, а вот при нажатии ползователем кнопочки

Когда пользователь нажимет на кнопку, (о чудо!) именно программа делает a.i+1(что бы ты не имел ввиду).
Когда ты вызываеш метод класса a.i+1, он уже не в сосоянии определить, нажимал ли пользователь кнопку, или этот метод вызван в результате других действий, потому что не пользователь вызвал этот метод, а программа !!!


Сергей М.   (2007-11-22 09:31:00) [26]


> его можно решить(в реальной жизни) более рациональным путём


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


> преподу нужно именно так


То ли ты врешь, то ли вам вместе с преподом нужна путевка в ликбез)


DukeArtem   (2007-11-22 09:29:00) [27]


> Почему это "должно" ?
> Кто или что его обязывает ?

Я его обязываю, а мне нужно перехватить этот момент и запретить доступ.


DukeArtem   (2007-11-22 09:27:00) [28]


> homm ©   (22.11.07 09:21) [29]
>
> Ты пойми, пользователь тычит на кнопки, ему до переменных
> как до лампочки, он о них и не знает ничего, а уж изменить
> то тем более не может.
> А вот ты, как программист можешь назначить изменение переменной
> на кнопку, или не назначить.

ВОТ! Я поэтому столько и пытаюсь объяснить, что это всего лишь задание и его можно решить(в реальной жизни) более рациональным путём, но преподу нужно именно так.
Ещё раз, значит есть class(доп A), в нём некоторое кол-во переменных, одна из(нужная нам) это доп. i , и нам нужно что бы программа a.i+1 как всегда, а вот при нажатии ползователем кнопочки, выполнялось тоже самое событие ( a.i+1 ) но уже возвращало "ошибку"


Сергей М.   (2007-11-22 09:23:00) [29]


> как тогда называется


Это, если угодно, некое примитивное подобие технического заданияна проектирование и разработку программы, реализующей упомянутый тобой "маразм". Не более того.


> начение должно пытаться уйти в i


Почему это "должно" ?
Кто или что его обязывает ?


homm   (2007-11-22 09:21:00) [30]

Ты пойми, пользователь тычит на кнопки, ему до переменных как до лампочки, он о них и не знает ничего, а уж изменить то тем более не может.
А вот ты, как программист можешь назначить изменение переменной на кнопку, или не назначить.


homm   (2007-11-22 09:19:00) [31]

> из textbox значение должно пытаться уйти в i

Зачем? Она же ReadOnly.


homm   (2007-11-22 09:18:00) [32]

> пользователь берёт что-нибудь сам вводит в этот textbox
> и на кнопку, а программа должна вывести, что-то типо readonly

А изменение переменной где?

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage('readonly');
end;


DukeArtem   (2007-11-22 09:16:00) [33]


> Сергей М. ©   (22.11.07 09:10) [25]
>
>
> > DukeArtem ©   (22.11.07 09:07) [24]
>
>
> И где в этом "маразме" изменение пользователем переменной
> ?

Может я конечно что-то называю не своим именем, а как тогда называется:
...
>а есть ещё одна кнопка(доп. Изменить)  пользователь берёт что-нибудь сам >вводит в этот textbox и на кнопку, а программа должна вывести, что-то типо >readonly."
...
Ну если дополнить мысль, то после нажатия(кнопки изменить) из textbox значение должно пытаться уйти в i , и после этого он должен вернуть "ошибку"


Сергей М.   (2007-11-22 09:10:00) [34]


> DukeArtem ©   (22.11.07 09:07) [24]


И где в этом "маразме" изменение пользователем переменной ?


DukeArtem   (2007-11-22 09:07:00) [35]


> Ты лучше сажи, каким образом пользователь может изменить
> переменную?

На форме вынесен некоторый textbox, в который присваевается некоторый счетчик, по нажатии кнопочки (доп. Зарегистрировать) прибавляется к переменной i+1 и выводится в этот textbox, а есть ещё одна кнопка(доп. Изменить)  пользователь берёт что-нибудь сам вводит в этот textbox и на кнопку, а программа должна вывести, что-то типо readonly.
З.Ы. маразм, понимаю, но я сразу же написал, что "практического применения не несёт"


homm   (2007-11-22 08:50:00) [36]

> [22] @!!ex ©   (22.11.07 08:26)
> property Value read FValue; - это не то?

Да X: Integer;— это уже то!


@!!ex   (2007-11-22 08:26:00) [37]

property Value read FValue; - это не то?


homm   (2007-11-22 07:56:00) [38]

> [18] DukeArtem ©   (22.11.07 00:11)

Ты лучше сажи, каким образом пользователь может изменить переменную?


DukeArtem   (2007-11-22 07:34:00) [39]


> "Гложат меня смутные сомнения" (с) и.о. царя Бунша.
> А верно ли ты понял это задание?

Да, правильно. Просто описал его в общем виде(мне было интересно посмотреть, какие вообще есть варианты на эту тему), по заданию у нас действительно имеется class, а в нём две переменные, и одна из этих переменных должна изменяться вот таким вот образом. И если я всё правильно понял, то нужно рыть в сторону свойств классов.


Германн   (2007-11-22 01:25:00) [40]


> DukeArtem ©   (22.11.07 00:11) [18]
>
> Спасибо за подкинутые мысли, что-нибудь соображу. На вопрос
> "зачем" - ответ прост, такое задание получил в инсте.
>

"Гложат меня смутные сомнения" (с) и.о. царя Бунша.
А верно ли ты понял это задание?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо