|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Захотел сделать класс отвечающий за работу с записью в таблице. Всё бы ничего, но столкнулся с такой проблемой - в таблице есть поле Name и ему должно соответствовать свойство Name в моём классе. Так вот, это свойство зарезервировано VFP для именование объектов и выполнение операторов типа Код: sql 1.
или Код: sql 1. 2. 3.
немедленно вызывает исключение VFP, хотя есть куча примеров, в которых авторы запросто манипулируют этим свойством. Сам-то я обошел это ограничение VFP добавив в определение класс защищенное свойство _name и два метода с суффиксами _ACCESS и _ASSIGN: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но меня гложет сомнение - почему в примерах якобы манипуляции со свойство Name якобы работают, а у меня нет ? Есть ли другое решение этой досадной заморочки ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 20:06 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
thunder2, а не было мысли попробовать класс Empty. Проще всего создать его объект командой SCATTER .. NAME ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 20:30 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
thunder2, правда, в классе Empty не предусмотрены методы, но ты можешь сделать объект Empty членогм класса с методами ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 20:33 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Rostislav D. Kudryashov, Была такая мысль, но тоже получаю ошибку. Я так понял Name без оберток вообще нельзя использовать, но я могу ошибаться, потому и пришел сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 20:37 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
thunder2, это уже чудо. Как тебе это удалось? У меня VFP9 SP2 отрабатывает без запинки o = NEWOBJECT ('EMPTY') ADDPROPERTY(o,'Name','') Хотя, SCATTER ... NAME ... в некоторых случаях предпочтительнее ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 20:44 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Дело в том, что свойство Name используется как некий внутренний идентификатор объектов. В силу этого, на его содержимое налагаются некоторые ограничения, свойственные для идентификаторов - Это свойство не может быть пустым - Это свойство не может содержать спец.символы. Только буквы и цифры. Причем начинаться должно с буквы. - Разные объекты на одном уровне вложенности формы не могут иметь одинаковое значение свойства Name Собственно, все ограничения соответствуют ограничениям на имена переменных (идентификаторов). Имя переменной не может быть пустым, не может начинаться с цифры, содержать спец.символы и быть одинаковыми в рамках одной области видимости Однако насколько я в курсе, к именам полей таблиц применяются точно такие же ограничения. Так что, особых проблем не вижу. Код: sql 1. 2. 3. 4. 5.
А вот если Вы попытаетесь присвоить имени пустое значение или добавите спец.символ (тире, точка, запятая и т.п.), то и получите ошибку или исключение. Код: sql 1. 2. 3. 4.
Другими словами, использовать можно, но помня о том, что не все значения допустимо туда записывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 22:35 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
ВладимирМ, Ну, вообщем, как я и предполагал ограничения на значения свойства Name есть и похоже использование методов - единственный способ обойти эти ограничения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 23:34 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Rostislav D. Kudryashovthunder2, это уже чудо. Как тебе это удалось? У меня VFP9 SP2 отрабатывает без запинки o = NEWOBJECT ('EMPTY') ADDPROPERTY(o,'Name','') Хотя, SCATTER ... NAME ... в некоторых случаях предпочтительнее Я почему-то делал через DEFINE CLASS MyClass AS EMPTY, но ничего хорошего не получилось. Да и такой способ меня не устраивает - NEWOBJECT("EMPTY"), по сути, создает структуру, а мне требуется полноценный класс ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 23:36 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
thunder2, если тебе нужно то чего нет, у тебя не будет ничего. Но человек более скромный мог бы ограничиться вложением объекта Empty в объект класса с методами. Это, кажется, называется делегированием обязанностей в высокоумной теории ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2013, 23:44 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Не корысти ради :)) ВладимирМ- Разные объекты на одном уровне вложенности формы не могут иметь одинаковое значение свойства Name Rostislav D. Kudryashovв классе Empty не предусмотрены методы все конечно так, но это же Fox и это таки в нем возможно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2013, 01:07 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
ЛДПР, а токмо ради святого и чистого Знания! Как воткнуть методы в объект класса Empty? Чтоб вызывать их набором имени переменной объекта и через точку - именем метода: Obj.Method(). Т.е., традиционно, без извращений. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2013, 08:52 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
Rostislav D. Kudryashov Чтоб вызывать ... без извращений. Вызвать Да, при создании и редактировании придется поизвращаться :)) Пример объекта на основе класса Empty Код: c# 1. 2. 3. 4. 5.
И это еще далеко не все извращения которые можно сделать с Fox(ом) :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2013, 13:19 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
ЛДПР, пытаюсь расшифровать содержимое библиотек _test.vcx. Предполагаю, что ты туда каким-то манером запихнул класс с именем pattern с базовым типом Empty. Не уверен, что все знают, как это сотворить. Я пока не догадался. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2013, 13:59 |
|
Обманка для свойства Name. Как бороться ?
|
|||
---|---|---|---|
#18+
ЛДПР, такой "уклончивый" ответ только усиливает интригу. И если есть охота её раскрыть, то лучше в той новой ветке, которую я открыл специально с этим вопросом "Как воткнуть метод в объект класса Empty" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2013, 14:22 |
|
|
start [/forum/topic.php?fid=41&msg=38410648&tid=1582902]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
225ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 331ms |
0 / 0 |