Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
of63 : - lulgu, все тут более-менее владеют макросами lcParam,&lcParam, и Empty-обьектами. Про 26 параметров (принципиально максимальное количество параметров). Чего нового-то им скажешь? - Владеть то владеют, но напомнить лишний раз не грех. Цитата: Сначала я как-то прибалдел, но сегодня в норме и без допинга. Здорово! По украински "це щиро та й відверто" И многое можно простить. За стремеж к знаниям Исправлено 10 раз(а). Последнее : Ydin, 09.12.17 19:41 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
По той фигне, что я кинул. Я там чисто лоханулся. Говнекод, кот. работает.
На печати документа в Фреймворке - вставляем код в методе "Before", т.е. перед работой макета (в основном Иксел). В нем определяем Empty объект, скажем, loParams, в нем собрание реквизитов, которые, в основном в шапках страниц - даты, периоды (дата1-дата2) в разных форматах, всякие реквизиты предприятия, может, реквизиты партнера и еще воз без маленькой тележки. За 26, порой переходит. Такое собрание констант/переменных. Потом, там в макете их можно использовать по имени через точку. Например, .MFO Если говорить, что параметры передаются по значению (не по ссылке), то можно представить Сфинксу, такое priv loParams m.loParams = <определяем и заполняем простой объект его свойствами> WITH loParams do SomeFunc with <то, что не вошло в объект> ENDWITH А там в этой SomeFunc через точку есть все, кто в объекте, даже, если их 260, а не 26 А те, кто передается по ссылке - через Do SomeFunc with @Some1,@Some2,... Но я так не делал. У меня параметров больше 8, может и нет Исправлено 5 раз(а). Последнее : Ydin, 09.12.17 21:26 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
С чего это вы так красочно забалдели. Просто напомнил ИК, что циклы возможны не только с массивами. К тому же akvvohinc тут же предложил более развитую версию. |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Нет, читай внимательно. У тебя еще все впереди, я в это верю.
Но наивность в таких напоминаниях надо как-то устранять. Скажи себе, что эти ребята на Форуме, может, это и так знают. Просто, по-мелкому, не пишут. Может смеются в ответ или, наоборот... Если ИК вот так учить на уровне "дважды два", то лучшее - это не получать ответы. Исправлено 3 раз(а). Последнее : Ydin, 11.12.17 10:07 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Нервы железные или просто очень отзывччивый Но это когда-то кончается Исправлено 4 раз(а). Последнее : Ydin, 10.12.17 11:03 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Я ведь медали за былые и иные заслуги не выдаю. И пятерки за "знают" в дневники не выставляю. Что читаю, то и комментирую. Исправлено 1 раз(а). Последнее : lulgu, 09.12.17 21:46 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Цикл используется для обработки однородного массива информации ("массив" не буквально - это и коллекция, и в фоксе тот же курсор). Если информация НЕ представлена в таком виде, то использовать цикл невозможно. Смысла же запихивать таким образом предоставленные параметры в массив/коллекцию - ну крайне маловероятно что это хорошее решение. Я ещё раз повторюсь - массив/коллекция БУДЕТ нормальным вариантом, если исходные данные будут СРАЗУ поступать не в виде набора разрозненных параметров. Перегонять же непойми что в массив только для того чтобы затем использовать цикл - занятие безрассудное. Если "параметры" это формализованно названные объекты (скажем, динамически добавленные на форуму контролы - с "шаблонными" именами - так что можно применить те или иные методы для косвенных ссылок - GETPEM, EVALUATE, макро в конце концов) - то в принципе, конечно, можно и цикл использовать - только для него не нужно никаких массивов/коллекций сооружать. Если бы была озвучена ВСЯ задача, можно было бы что-то разумное предложить, а так - гадать бессмысленно, а в "чистом" виде такой костыль (перегонять "параметры/переменные" в массив/коллекцию) попросту является убогим куском кода. ------------------ WBR, Igor |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Сильно подозреваю, что в данном случае речь идет не о решении конкретной задачи, а о создании некоего общего механизма. Исправлено 1 раз(а). Последнее : spinz, 10.12.17 14:30 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Тем более - прописать сразу в спецификации что именно "массивами" сей механизм кормится, а не p1,p2,...p100500
------------------ WBR, Igor |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Не в этом вопрос. Вопрос в том, как ты умудрился получить 100 параметров вне какой бы то ни было гомогенной коллекции. |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Паша, да ладно тебе. Я уже написал, что "проблему" решил, красиво (хотя все равно говно-код, ну да ладно).
Но чисто спортивно все же хочется понять, как красиво сделать, если в коде программы тебе надо в какую-то функцию передать значения "String_1", "String_2", "String_10". Ну, я-то все в ИНИ-файле держу, вычитаю без проблем. А если надо? (Ну мало, ли.. те же вопросы совместимости с чужим кодом, чтобы не писать новую идеологию). Если засунуть в массив - то да, тогда и коллекция не нужна, перебор и так сделать можно по индексу в массиве. Вложение коллекции в коллекцию - это тоже костыль (ИК бы сказал порезче, он в последнее время всем диагнозы ставит). Передача через массив.. так если есть в массиве - занафига массив в коллекцию для этого перегонять? Через XML - ну это может для каких-то специфичных вещей, а так-то тоже костыль. И на эту тему писали здесь. Вот так хочется человеку - запрятать обработку нескольких значений в коллекцию. Так или иначе хорошего решения все же нет. А свою проблему, которая была изначально основана на его методе - я передала погибче. Но это все равно говнокод. Даже приводить его не буду. ;) ------------------ "Veni, vidi, vici!"(с) |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Рабочий говнокод по результату, т.е. по его соответствию назначению не отличишь от доброкода. Это секрет писателя.
Когда-то забил гол за нашу пенсионерскую команду, что для меня было редкостью. И признался, что "неудачно" отдал пас. Мне сказали, что в этом признаваться нельзя. Такое правило. Исправлено 3 раз(а). Последнее : Ydin, 11.12.17 20:57 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
В этом-то и дело. Даже если внешняя функция построена целиком на вызове подфункции с неким набором констант, нормальный программист рефакторит набор констант в какой-нибудь внешний файл (INI, DBF), без разницы. Причём это происходит гораздо раньше чем количество констант перевалит первый десяток. Собственно, ты к этому и пришёл, в конце-концов. Если я правильно понимаю по обрывкам информации. |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ересь какая-то. Если функа вызывается тысячи раз в секунду, то оверхед при чтении из файла будет запредельным |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
С ini-файлом никаких премудростей не нужно, достаточно одной процедуры.
Где этот файл обрабатывается как текстовый функциями низкого уровня (FOPEN ...) и значения в цикле сразу направляются куда нужно. Если структура файла проста, то можно через FILETOSTR() привести к виду, удобному для GETWORDCOUNT/GETWORDNUM, но из-за ограничений придется делать двойной цикл. Исправлено 2 раз(а). Последнее : lulgu, 11.12.17 23:51 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Задефайнить константы в отдельном заголовочном файле много проще и быстрей вычитывания их из файла.
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Неясно происхождение ini-файла, но в вашем варианте проще использовать .txt-файл "столбиком" без #DEFINE, тогда будет более удобна пара MEMLINES/MLINE. Потому что с .h-файлом нужна постоянная перекомпиляция проекта. Исправлено 1 раз(а). Последнее : lulgu, 12.12.17 00:32 |
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Какой смысл вычитывать константы из файла во время выполнения, если это можно сделать на этапе компиляции.
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
vic7tar Сообщений: 48 Дата регистрации: 27.02.2017 |
Уж если запихивать эти константы во внешние файлы, по-моему, лучше dbf-а не придумаешь.
|
Re: Как можно обойти ограничение в 26 параметров? | |
---|---|
sphinx Автор Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Весьма спорное утверждение. В INI-файле даже юзер может что-то поменять, если, допустим, в отпуске ты за три моря. А объяснять, чем открыть DBF-файл, где это скачать и как установить - тоже можно, но не в пример дольше. И там, и там есть свои плюсы, есть свои минусы. ------------------ "Veni, vidi, vici!"(с) |
© 2000-2024 Fox Club  |