|
|
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Лис - 9 Есть функция для обработки параметров и запуска через определенное время выбранную пользователем функцию/или подсказку... Параметры могут быть типа N-C-A Название параметров toPar1...toPar7 При входе в функцию начинаю их обрабатывать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Дебагер показывает: EVALUATE('toPar'+ALLTRIM(STR(m.loI))) - массив ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),1) - строк 1 ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),2) - колонок - 17 а на саму строку loArrayRow = ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),1) Ругается что Function argument value, type, or count is invalid Почему тогда в дебагере видно результат выполнения данных функций... С Ув. Игорь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:03 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
всегда в дрожь бросает, когда передают не пойми что и затем ищут не мойми где за аллтрим вообще руки отбиваю сразу давай так тогда Код: plaintext 1. 2. 3. 4. 5. 6. 7. совет можете предать емпти или кастом и начитать ему уже св-ва? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:27 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
да и не loArrayRow, а именуем правильно lnArrayRow ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:28 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
В дискусию я вступать неХЦЮ... И что б что-то советовать надо проверять код... CLEAR LOCAL ARRAY aaa(1,17) aaa[1,1]='1' aaa[1,2]='2' loValue = EVALUATE('aaa') ?TYPE(loValue) ?TYPE(loValue,1) ?TYPE("loValue") ?TYPE("loValue",1) ?TYPE(aaa) ?TYPE(aaa,1) ?TYPE("aaa") ?TYPE("aaa",1) здеся меня ниКОГДА неБУДЕТ if type( "luValue", 1) = "A" А как обЪявлять переменные... Эт кто как Хтит тот так и Др... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:43 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
И надо еще внимательно читать вопрос... Почему дебагер отображает результат... А выполнить его нельзя.... С Ув. Игорь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:46 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
ну тогда сам разбирайся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 13:56 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:15 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Да как создать массив и потом его отдать я уже разобрался... Но я делал усе через отладчик... Он мне показывает че Усе Ок... А запускаешь ФИГА-тебе А работает оно и так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. NewArr - функция которая создает новое свойство массив ParamF ссылка на массив или сам параметр... Через Ж... Но работает как часы... Главное что б не нагружать функциями... Сейчас пока работает АвтоСохранение/ и самописный ToolTip... И ВСЕЖ вопрос так остался без ответа... ПОЧЕМУ ДЕБАГЕР ПОКАЗЫВАЕТ АЛЕКС ГУД... А ВЕРНУТЬ ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),1) В ПЕРЕМЕННУЮ НИЗЯ с Ув. Игорь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:41 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
еще раз для непонятливых я считаю, что проблема в реализ-и и работает оно у Вас действительно через .... макроподстановка зло - и нельзя завязывать реализацию на передачу или вычесление чего-то по именам даже если это работает. в Вашем случа, я уж не знаю, что за постановка и почему массив должен прилетать в неизвестный параметр, я пишу без макроподстновок, принимаю и передаю что нужно и куда нужно, поэтому нет проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:57 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. нет пробелов справа НИКОГДА !!! и это я Вам указал на самую малость, и точно так-же на пустом месте, скорее всего, Вы издеваетесь над лисой. вместо того, чтобы нормально реализовать какие-то алгоритмы, Вы занимаетесь созданием какого-то макро.... универс-го мех-ма, который все-одно будет работать через ..., если Вы его реализуете в том виде, в котором показали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:02 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
странно - но работает автор = acopy("tu"+ltrim(str(lnParam)), toObject.MyArray) так, что дукейс не нужен в моем примере и в Вашем случае достаточно проверки Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:16 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:27 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
IgorProgrammerЛис - 9 И вот с какой фичей столкнулся.... Дебагер показывает: EVALUATE('toPar'+ALLTRIM(STR(m.loI))) - массив ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),1) - строк 1 ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),2) - колонок - 17 а на саму строку loArrayRow = ALEN(EVALUATE('toPar'+ALLTRIM(STR(m.loI))),1) Ругается что Function argument value, type, or count is invalid Почему тогда в дебагере видно результат выполнения данных функций... С Ув. Игорь... Фича это. Причем именно дебагера. Ошибка должна была выскочить уже в отладчике. Если посмотреть HELP по фунуции ALEN(), то первым параметром должно стоять имя массива. Не может там стоять выражение . А ведь Evaluate() - это именно выражение. Функция. Необходимо подсунуть функции ALEN(), то, что она просит. Имя. Точнее, выражение имени. Код: plaintext 1. Чтобы было понятнее, напишу отдельно Код: plaintext 1. 2. По сути, все то же самое, только удалить само слово EVALUATE, но оставить его скобки. Скобки - это и есть выражение имени. Особый вид макроподстановки, который как раз и предполагает возвращение имени чего-либо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:31 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
12345вышелзайчикпогулятьеще раз для непонятливых я считаю, что проблема в реализ-и Тогда предложите свою версию... Как запускать определенную функцию(не зная какую, когда, сколько и какие у нее парамтры) Например раз в 10 мин... У меня повешен таймер с массивом функций и их параметров(или указатель на массивы-параметры)... Когда срабатывает таймер, он бежит по массивам и если времяПоследнегоВыполнения+ВремяЧерезСикокоВыполнить больше или равно ТекущемуВремени то выполняем данную строку массива... 12345вышелзайчикпогулятьнет пробелов справа НИКОГДА !!! Есть некоторые привычки (например alltrim, а не разбивать где RTrim, где LTrim) авторlocal loArray =ACOPY('toPar'+LTRIM(STR(m.loI)),loArray) * и размер смотреть уже у loArray Интересный подход... Вы хотите обсуждать данный код... Или хотите помочь в данной ситуации ВладимирМФича это. Причем именно дебагера. Ошибка должна была выскочить уже в отладчике. Я так и подумал... Вот только описания данных прибамбасов НЕТУ... ВладимирМALEN((m.lcArrayName),1) Спасибо я так и сделал... Вот только остался амперсант loArray = '.ParamArray1' Но вот ACOPY('toPar'+ALLTRIM(STR(m.loI)),&loArray.) работает только через амперсант... так как второй массив это свойство объекта и на ACOPY('toPar'+ALLTRIM(STR(m.loI)),('.ParamArray1')) идет ругань ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:54 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
авторЕсть некоторые привычки (например alltrim, а не разбивать где RTrim, где LTrim) ужОс макроподстановка я так понимаю - это так-же привычка и уже никак без нее потерянный для общ-ва программер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:58 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
12345вышелзайчикпогулятьужОс макроподстановка я так понимаю - это так-же привычка и уже никак без нее потерянный для общ-ва программер Я же вроде написал... Код: plaintext 1. 2. 3. 4. То ПЛЗ... поделитесь опытом С Ув. Игорь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:00 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. это работает? но только почему массив должен прилетать в неизв-й параметр? что это за блуждающий тип, повед-е которого не зависит от программиста?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:04 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Пример не соответствует данной проблеме... Тем более че надо писать кучу ненужного... Есть Объект (без массивов-параметров) Есть массив-свойство с указанием времени/процедуры/параметров(указатель на массив) Есть входящие параметры(которые могут быть массивами) Если в параметрах встречается массив... Добавляем обЪекту параметр-массив с размерностью входящего параметра Код: plaintext 1. Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Может Вы продложете что-то лучше... Или скажите как правильно ACOPY() если ArraName1='toPar1' ArraName2='.ParamArray' или ArraName2='This.ParamArray' ACOPY((ArraName1),(ArraName2)) выдает ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:17 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:54 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Особенно мне понравилось &lcCmd... :) Так я и не увидел ACOPY без амперсанта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:38 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
а что Вам нравится, я ведьсказал - это зло и ноги растут от Вашей реализации правильно передавать что нужно, ловить где нужно и присваивать кому нужно я не ссылаюсь по именам, а передаю и ловлю куда нужно и создаю что нужно и где нужно у Вас иная реал-я - вот и думайте откуда ног растут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:41 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
В данном случае, видимо, без макроподстановки не обойтись. Здесь проблема именно в том, что массив - это свойство объекта. Т.е. выражение имени возвращает не вполне имя, а некую ссылку. Нет имени как такового, только опосредовано через имя другого объекта. Для "обычных" массивов выражение имени нормально работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 18:40 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
ВладимирМВ данном случае, видимо, без макроподстановки не обойтись. Здесь проблема именно в том, что массив - это свойство объекта. Т.е. выражение имени возвращает не вполне имя, а некую ссылку. Нет имени как такового, только опосредовано через имя другого объекта. Спасибо... Вы не знаете где можно почитать/преобрести что-либо где б были описаны тонкости фичи и баги Лисы-9ой... С Ув. Игорь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2008, 11:33 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
IgorProgrammerТогда предложите свою версию... Как запускать определенную функцию(не зная какую, когда, сколько и какие у нее парамтры) Например раз в 10 мин... Оберни все функции в объекты производные от одного базового класса. Назовем например clsJob, пусть все лежит в joblib.vcx. В производном классе от clsJob прописывать методы: Set(lnInstance) для настройки параметров InitInstance(lnInstance) установка значений начальных параметров в свойства объекта Run() выполнение функции (все параметры в свойствах объекта) где lnInstance - номер объекта чтобы можно было создать несколько наборов параметров. При запуске задания: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2008, 19:39 |
|
||
|
Фича ли ЭТО с Evaluate
|
|||
|---|---|---|---|
|
#18+
Dima TОберни все функции в объекты производные от одного базового класса. Назовем например clsJob, пусть все лежит в joblib.vcx. В производном классе от clsJob прописывать методы: Set(lnInstance) для настройки параметров InitInstance(lnInstance) установка значений начальных параметров в свойства объекта Run() выполнение функции (все параметры в свойствах объекта) где lnInstance - номер объекта чтобы можно было создать несколько наборов параметров. При запуске задания: lpara tcClassName, tnInstance loObj = NewObject(tcClassName, 'joblib') loObj.InitInstance(tnInstance) loObj.Run() ... Я бы примерно так сделал. Макроподстановок никаких не надо. Есть небольшое но... 1) Изначально этот класс создавался для навороченной подсказки... Даже забито место для димонстрации работы комплекса... Мол сиди и смотри(правда нету времени чеБ привести в порядок)... 2) Функции постоянно добавляются... Да и аппетит как говорится приходит во время ЕДЫ... 3) Кроме меня ЭТ фигней НИкто заниматся НЕбудет... Да и у меня на ЭТ фигню нет времени... А тута просто пользователи нелетели со своими приблудами... Мол хотим управлять ХОТ-чем либо... Типа задания по расписанию в Виндах...(в пределах работающего комплекса) Вот я и пытаюсь прикрутить к существующему классу...(кое-че прикрутил :) ) А то терзают меня смутные сомнения, что ЭТИ навороты в скором времени отпадут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2008, 20:01 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35198247&tid=1588014]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 312ms |

| 0 / 0 |
