grbdv
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AndVGri Цитата: Сиречь о Вашем коде. Сравнение ячеек на листе - не лишняя сущность (скорость только маловата будет)? | Нет. Не лишняя. А, наоборот даже, уже существующая. Изначально данные в строке хранились, в строку же возвращались. Поэтому использование строки для промежуточного хранения вполне естественно, не противоречит общей идеологии и не надстраивает уже имеющуюся конструкцию объектом уникальной природы. И даже, если бы лишняя - это что, делает применение класса более обоснованным? Я не гордый, второй раз спрошу - какой практический-то смысл этой конструкции? Может я чего-то и не углядел... Цитата: Можно и массивами обойтись - если религия не позволяет. Приведённый мной код - пример, требующий конечно детализации, только ТУ автором не заявлено. | Причем тут религия? Позволяет, не позволяет... Не надо передергивать - мое решение через служебную строку возникло до твоего класса, и до засветки примера. И лишь потом я предложил дополнительный массив, забыв про строку. И не надо себе льстить - отнюдь не в противовес классу (лишь бы что-то другое), а исключительно из - см. абзац выше, заменив понятие "строка" на "массив". И что значит обойтись? Массивами я не обходился - решение с ними возникло позже, - после знакомства с кодом, алгоритмом и квалификацией автора. А до знакомства, будучи еще не в курсе, я предложил вариант, основанный на механизмах, которые, теоретически, должны были бы уже быть реализованы. Применительно к массивам, кстати, это тоже справедливо. И хочу напомнить, что на тот момент и у меня не было ни ТЗ, ни образца проекта. И хоть я уже отказался от него, решение через строку, кстати, сразу заработало. А сколько пришлось бы класс с коллекцией встраивать в проект, а? Цитата: А что есть проблема с недобавлением в коллекцию, например по именам? | Я что-то не пойму, что это я распинаюсь-оправдываюсь изо всех сил? Оттянусь, пожалуй, малехо :) Сам напросился... Итак (сиречь :), если ты не видишь проблем с исключением некоторых контролов из проверки по имени, значит не видишь их и в передаче значений как в контролы, так и обратно. Имена контролов ужЕ используются минимум в двух местах в коде. Ты предлагаешь еще и третий раз это сделать (см. про "не плодите..."). А потом по всему коду сбиться с ног, искать в случае изменений? Чую, щаз речь зайдет про эффективные методы поиска-замены в редакторе и навыки использования регэкспов :) Я позже хотел обратить внимание kandi на эту проблему, чтобы не сбиваться с курса. Придется сделать сейчас. Применительно к примеру, я бы создал служебную таблицу соответствия полей контролам. Что-то типа: Cell_Column, Control_Name, Control_Type, Check_Exclude_Flag еще какую-нибудь хрень можно в нее загнать... Потом занес бы соответствующий индекс в св-ва каждого контрола. Например в св-во .Tag. И/или к имени можно добавить суффикс/префикс. Вобщем, место есть для фантазии. Далее, при загрузке формы проверял бы все контролы с .Tag <> 0 на соответствие .Type и .Name данным в таблице соответствия. Тогда любые несинхронизированные изменения в структуре таблицы, формы или в коде сразу вылезут. Далее этот индекс можно использовать в циклах загрузки данных в форму и выгрузки обратно. Тем самым окультурим и разгрузим процедуры LoadRecord() и PreSaveRecord(). Да и защита от дурака некая появится на этом скользком участке. |