|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Чтож, по просьбам откроем новую тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 19:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Объясните, пожалуйста, что вы имели ввиду под термином, вынесеным по вашей просьбе в заголовок темы? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 19:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Чтож, по просьбам откроем новую тему. Sergey Ch, пожалуйста, снесите в старой теме все, начиная с моего провокационного поста. Эту статью читали? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 20:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Я имел в виду хотя бы общее представление о том, как приложение должно отображать/изменять данные. Интерфейс с пользователем, программная реализация этого интерфейса, хранение данных, способы обработки. Обсуждение началось вот с этого sg12А здесь всего три процедуры "Добавить, Удалить, Изменить" в двух вариациях. Неужели нельзя было за десять лет написать одну универсальную обертку, где можно один раз отладить все проверки, и куда можно было бы просто передавать параметры из таблиц. И ошибка была бы только в строке вызова, и то при неправильном синтаксисе. Для начала примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Как Вы вообще представляете себе процесс модификации данных с использованием подобной процедуры? Пусть даже всего в одном проекте (приложении). Где, в каком месте, Вы будете вызывать этот код? Вот пользователь открыл приложение. Очевидно, вызвал некую форму. Далее ему надо изменить существующую запись. Что надо сделать пользователю, чтобы это произошло? Каким образом действия пользователя приведут к использованию Вашего Do Case? Где в приложении место для подобного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 20:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Эту статью читали? Читал. Статья хорошая, но в ней допущены серьезные недоработки, к которым мы еще будем возвращаться. Поэтому я прошу ВладимираМ предъявить реальный пример. ВладимирМ. У нас есть родной фоксовский Проект. Он вполне работоспособен, фокс заточен на него, но на этом его преимущества заканчиваются. Как вы думаете, что изменится, если из его главного модуля перенести процедуры добавления, удаления, редактирования, а также сохранения и восстановления в следующие процедуры объекта oTable, сменив строки их вызова: Процедура DoEdit LPARAMETERS tcCase DOCASE CASE tcCase == 'Add' *** CASE tcCase == 'Delete' *** CASE tcCase == 'Edit" *** ENDCASE Процедура DoSave LPARAMETERS tcCase DOCASE CASE tcCase == 'Update' *** CASE tcCase == 'Revert' *** ENDCASE ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 20:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Как вы думаете, что изменится, если из его главного модуля перенести процедуры добавления, удаления, редактирования, а также сохранения и восстановления в следующие процедуры объекта oTable Сместится точка возникновения ошибок. Ошибки будут происходить в этом коде. Сообщения об ошибках будут указывать на этот код и будет непонятно где реально ошибка. И как в любом универсальном коде не обойтись без макроподстановок. Как следствие такой код будет тормозить, поэтому будет неприменим в тех случаях где критично время выполнения. В остальном ничего не изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 21:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
И потом сам предлагаемый шаблон изначально ущербный. Например oTable.DoEdit('add') не сработает и ошибки не будет. Если уж городить огород то делать oTable.Add() ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 21:22 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T, Нет, мы будем делать так и только так. Эти коды отладим, один раз, и ошибки будут возникать только когда в эти процедуры будут передаваться неверные параметры. Строка вызова увеличится только на один параметр. И с макроподстановками разберемся, не надо преувеличивать. А в тех немногих случаях когда критично, ничто не мешает вам в приложении использовать свои процедуры, и только когда в этом возникнет необходимость. Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало. А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы. Или два класса - по 3 и 2, кому что по вкусу. Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 21:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Напишем еще одну процедуру DoNavigate: LPARAMETERS tcCase DOCASE CASE tcCase == 'Top' *** CASE tcCase == 'Bottom' *** CASE tcCase == 'Prior' *** CASE tcCase == 'Next' *** ENDCASE Перенесем туда существующие процедуры. Главный модуль похудеет аж на целый класс. Создадим аналогичный объект класса CommandGroup с четырьмя кнопками, разрисуем их и еще один вопрос снят. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 22:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Почитал Ваши рассуждения и не соглашусь с некоторыми из них. 1. Прежде всего, если исходить из понятия "таблица", как множества строк, то к таблице должны относиться только процедуры: Update/Commit - фиксирование изменений Revert/Rollback - откат изменений. Процедцры Add - добавление строки и Delete - удаление строки должны относиться к классу записи/строки таблицы (oRow или oRecord) Процедура Edit не может относиться к таблице: значения меняются не в абстрактной таблице, а в конкретной ячейке (на пересечнии конкретных столбца и строки). Поэтому процедура Edit должна относиться либо к классу поля (oField), либо к классу ячейки (oCell)... Хотя нет, обманываю... Edit может быть у таблицы. Но она, по логике ООП, должна относиться не к редактированию записей, а к редактированию структуры таблицы (что-то типа alter table...). По той же логике Add должно создавать таблицу / копию таблицы, а Delete - удалять таблицу. 2. Чем выше уровень абстракции, тем труднее решать с его помощью некоторые практические задачи. То есть, другими словами: что хорошо в теории не всегда выдерживает проверку практикой. Мне на практике приходилось сопровождать систему (биллинговая система оператора связи), написанную на Alaska xBase (потомок Clipper'а) с высоким уровнем абстракции - на макроподстановках. Да, она была компактна и, в чем-то даже изящна. Все ее программы ("скрипты") содержались в текстовых файлах. При работе программы из этих файлов читались строки и выполнялись через макроподстановку. Все, что когда-то было отлажено - работало четко. Но когда нужно было отладить новый алгоритм, тогда и начинались "пляски с бубном"... Синтаксические ошибки еще худо-бедно можно было отлавливать. А вот логические ошибки в макроподстановках искать - то еще удовольствие... Примерно такое же, как отлаживать сложный SQL запрос, динамически формируемый на клиенте, при помощи SQLEXEC()... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 23:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Рассуждения ваши интересны, но пока будем делать так. Пока мы просто перестраиваем существующие рабочие процедуры из родного фоксовского главного Проекта, сохраняя существующие функциональные возможности. Подождем, пока наши главные гуру переварят написанное и пойдем дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 23:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Напишем еще одну процедуру DoNavigate: LPARAMETERS tcCase DOCASE CASE tcCase == 'Top' *** CASE tcCase == 'Bottom' *** CASE tcCase == 'Prior' *** CASE tcCase == 'Next' *** ENDCASE Перенесем туда существующие процедуры. Главный модуль похудеет аж на целый класс. Создадим аналогичный объект класса CommandGroup с четырьмя кнопками, разрисуем их и еще один вопрос снят. Да ради бога... Сделайте себе набор классов, библиотеку... Кто запрещает-то? Хотите сделать что-то а ля Дельфийский Навигатор - нет проблем. Делайте... Я сейчас работаю на промышленном предприятии. ИТ в ней не главное подразделение, но и не то, о которое можно ноги вытирать... Разработка учетной системы ведется собственными силами на VFP8+PostrgreSQL более 10 лет, очень высокая культура разработки ПО. В начале разработки была создана библиотека классов, где стандартным компонентам FoxPro была добавлена нужная функциональность, а также разработаны новые компоненты. Например, у всех компонентов библиотеки есть способность "привязываться" к месту на форме. Таким образом, внешний вид формы остается неизменным при ресайзинге. Все, что нужно сделать, это указать точку привязки, скажем, грида... И написать пару строчек в методах формы... Как результат - никто из разработчиков не использует стандартные компоненты Фокса, только из "собственной" библиотеки... К чему я это говорю? Да к тому, что всегда надо думать, стараться учитывать нюансы, продумывать развитие на несколько шагов вперед. Если есть наработки - используй их для облегчения решения возникающих задач. Если нет - начинай коллекционировать решения... Свои или чужие... Главное, чтобы они полезными были.... И не важно: ООП ты используешь или без него обходишься... на Фоксе пишешь, на С# или на С(без плюсов) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 23:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кийК чему я это говорю? Да к тому, что всегда надо думать, стараться учитывать нюансы, продумывать развитие на несколько шагов вперед. Если есть наработки - используй их для облегчения решения возникающих задач. Если нет - начинай коллекционировать решения... Свои или чужие... Главное, чтобы они полезными были.... И не важно: ООП ты используешь или без него обходишься... на Фоксе пишешь, на С# или на С(без плюсов) Построение классов должно быть таким, чтобы автоматизировать наиболее трудоемкие операции или те, где чаще всего возникают ошибки. Если для того, чтобы работать с классом потребуется писать объем кода, сопоставимый с тем, что был без использования класса... Да еще ошибки отлавливать будет сложнее....Тогда нафиг такие классы.... Хотя, чего это я тут основы программирования тут рассказываю.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2013, 23:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Никто никому не мешает изобретать свой собственный велосипед. Только не надо свое творчество называть основами программирования. Продолжим. В том же объекте oTable создаем процедуры DoDatabase,DoTable,DoBuffer,DoIndex,DoFilter,DoSort,DoTransact. И по той же вышеописанной схеме через DO CASE переносим из главного Проекта все процедуры, связанные с таблицами. Останавливаться на этом подробно не будем - сейчас это не актуально, к ним можно будет вернуться позже. И с ужасом замечаем, что наш "страшный" Главный Проект на глазах стремительно худеет. Если вопросов нет, то можно перейти к более "страшному" объекту - oSetting. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 10:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12И с ужасом замечаем, что наш "страшный" Главный Проект на глазах стремительно худеет.ты че, придурок? - "Главный Проект" не похудеет, ибо все в нем и останется - exe тоже ну идиот! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 10:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало. А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы. Или два класса - по 3 и 2, кому что по вкусу. Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах. Я с этого начинал десять лет назад. На сегодня для создания простого справочника мне достаточно написать одну строку в командном окне. Просто вызвать функцию создания форм справочника и передать ей имя таблицы Код: sql 1.
Она создает и добавляет в текущий проект две формы: для просмотра и редактирования. Добавляет таблицу в DE формы, прописывет необходимые свойства формы и контролов, в форме просмотра прописывает грид (ставит таблицу источник данных, создает там одну колонку "Наименование", прописывает туда первое текстовое поле таблицы). В форме правки вытаскивает на форму все поля. Дальше остается только орудовать мышкой распределяя контролы по форме и прописывать Caption. Вот для примера сделал с нуля проект за 10 минут. Два справочника. Тут весь код для создания Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
На картинке скриншот того что получилось. Теперь о доступном функционале: Все формы немодальные. Можно открыть несколько записей справочника на правку. Автоизменение размера шрифта в зависимости от разрешения экрана и возможность задать свой размер. В форме с гридом все необходимое для работы без мыши: поиск по первым буквам, установка фильтра, "горячие" клавиши (Ins добавить, Del удалить и т.д.). В меню по правой кнопке мыши копирование в буфер обмена всего показанного в гриде. В форме редактирования прописана буферизация на случай отмены изменений. Еще раз подчеркиваю - не писал вообще ни одной строчки кода внутри форм. Осталось написать код создания меню, start.prg из десятка строк и прога готова. Как-то так должно быть как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 10:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T В этот раз согласен. Но даже не зная твоей проги, могу уверенно сказать, что она легко впишется в описываемый перестроенный главный модуль. И при этом значительно упростится, так как часть ее функционала уже будет сидеть в нем. К примеру кнопки - пара кнопок Сохранить и Отмена это стандартный объект на основе CommandGroup, пригодный куда угодно. Другую группу кнопок я уже описал. Твой текстбокс с кнопкой "..." тоже выносится в базовые классы в виде контейнера и его не надо будет писать в каждой проге. Автоизменение сам бог прописал решить универсально в классе на основе Custom, добавляемым в формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 11:37 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Продолжим перестройку главного модуля VFP9. В объект oSetting из него переносятся многочисленные процедуры, выполняемые при запуске и при закрытии программ. Они группируются попарно - то, что открыто, по идее должно быть закрыто. Структура этих процедур едина: LPARAMETRS tcCase DO CASE CASE tcCase == 'Otkr" * Выполняется при запуске CASE tcCase == 'Zakr' * Выполняется при выходе из программы. ENDCASE Примерный перечень этих процедур, при необходимости он дополняется: DoGlobal,DoCheck,DoEnvironment,DoSystToolbars,DoProectWindow,DoScreen,DoSplash,DoTable,DoToolbar,DoMenu,DoForm ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 13:09 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TВот для примера сделал с нуля проект за 10 минут. Два справочника. ... Все формы немодальные. Можно открыть несколько записей справочника на правку. ... Вот с этого места по подробнее: - что является базовым классом для пары форм ФормаСправочник-ФормаРедактирование, form или formset ? - как пара ФормаСправочник-ФормаРедактирование связаны с данными, те 'эта пара разделят одну сессию данных или у каждой своя? - как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы? Как это реализовано? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 14:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Чтож, по просьбам откроем новую тему. Sergey Ch, пожалуйста, снесите в старой теме все, начиная с моего провокационного поста. а что за старая тема (да фиг с ней) и об чём тут речь ? не, ежели чо, я Изю тудым пошлю, он всё принесёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 15:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Закончим первый этап, а то похоже на сворачивание на базар. Добавим объект oFoxObj. В нем создадим процедуры DoForm,DoForms,DoToolbar,DoMenu,DoMenuShortcut, при необходимости можно добавить новые. Перенесем в него соответствующие процедуры аналогично объекту oTable, к их отладке можно вернуться позже. Взглянем на Главный проект, в нем осталось совсем немного и его "страшнота" куда-то подевалась. Создадим шаблон приложения, назовем его "Test". В нем создадим дочерние объекты и из него отладим Новый Главный модуль. Уберем в нем шереховатости, причешем, добавим функциональности. И после отладки удивимся - шаблон-приложение почти пустой, но он прекрасно работает. ВладимирМ, как видите, простая перестройка Главного модуля перечеркивает ваши основы построения goApp. Вы в свое время спасовали перед этим вопросом и совместно с несколькими гуру создали взамен эту свою теорию создания альтернативного главного модуля в приложении. Которую защищаете не всегда корректно и не только со мной. И вреда от нее достаточно много. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 17:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T В этот раз согласен. Но даже не зная твоей проги, могу уверенно сказать, что она легко впишется в описываемый перестроенный главный модуль. И при этом значительно упростится, так как часть ее функционала уже будет сидеть в нем. Хочешь делать oTable - делай. Мое мнение он нафиг не нужен. Это что-то из серии когда с паскаля пересаживаются на Си и дефайнами прописывают замену сишных { } на паскальный BEGIN END. Только чтобы по привычке пользоваться BEGIN END в коде. Кстати ты бы хоть просвятил что это за такой главный модуль. Я как-то пропустил где его обсуждали. sg12К примеру кнопки - пара кнопок Сохранить и Отмена это стандартный объект на основе CommandGroup, пригодный куда угодно. Другую группу кнопок я уже описал. В фоксе все завязано на формах, поэтому рекомендую начинать с именно с построения своего класса формы. Сама пара кнопок "Сохранить и Отмена" без формы не используется, поэтому можешь конечно сделать их отдельно, но этим только разработку себе усложнишь. Часть кода в одном классе часть в другом, а используются всегда вместе. Да и две пары таких кнопок на одну форму тоже не потребуются. sg12Твой текстбокс с кнопкой "..." тоже выносится в базовые классы в виде контейнера и его не надо будет писать в каждой проге. Он так и сделан как отдельный контрол с текстбоксом и кнопкой внутри. sg12Автоизменение сам бог прописал решить универсально в классе на основе Custom, добавляемым в формы. Универсально не всегда удобно. Лично я это все прописал в классе формы. Я предпочитаю укрупненные классы "ФормаПросмотр", "ФормаПравка" и т.д. у меня десяток классов форм на разные случаи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 19:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima TВот для примера сделал с нуля проект за 10 минут. Два справочника. ... Все формы немодальные. Можно открыть несколько записей справочника на правку. ... Вот с этого места по подробнее: - что является базовым классом для пары форм ФормаСправочник-ФормаРедактирование, form или formset ? Базовый класс "БазоваяФорма". От нее унаследованы ФормаСправочник, ФормаРедактирование и вообще все классы форм. Вобщем все построено на классе БазоваяФорма. formset никогда не использую. Если честно так и не понял зачем он вообще нужен. PaulWist- как пара ФормаСправочник-ФормаРедактирование связаны с данными, те 'эта пара разделят одну сессию данных или у каждой своя? У каждой формы своя. Form.DataSession = 2 Private Data Session PaulWist- как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы? Как это реализовано? После вызова дочерней формы ей передается ссылка контрол родительской формы куда вернуть фокус. По закрытию дочерней фокус возвращается на этот контрол родительской если она существует. Если родительской формы не существует - никуда не вернет. В данном примере две ситуации: 1. ФормаСправочник вызывает ФормаРедактирование. Передается ссылка на форму ФормаСправочник. По закрытии вызывается метод ФормаСправочник куда передается ID записи которая была добавлена/исправлена. ФормаСправочник обновляется и текущая запись ставится на полученный ID, а фокус на грид. 2. Контрол ввода из справочника на ФормаРедактирование вызывает ФормаСправочник. Передается ссылка на Контрол ввода из справочника. По окончании выбора ФормаСправочник вызывает метод контрола передавая ID в параметрах. Дальше контрол сохраняет ID в таблицу, меняет отображаемый текст и устанавливает фокус на себя. Я думаю уже понятно что длина цепочки ничем не ограничена. Можно открыть хоть сотню ФормаРедактирование одного справочника. ФормаСправочник тоже, но во избежания бардака ФормаСправочник у меня всегда одна для одного справочника. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 20:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWist- как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы? Как это реализовано? После вызова дочерней формы ей передается ссылка контрол родительской формы куда вернуть фокус. По закрытию дочерней фокус возвращается на этот контрол родительской если она существует. Если родительской формы не существует - никуда не вернет. В данном примере две ситуации: 1. ФормаСправочник вызывает ФормаРедактирование. Передается ссылка на форму ФормаСправочник. По закрытии вызывается метод ФормаСправочник куда передается ID записи которая была добавлена/исправлена. ФормаСправочник обновляется и текущая запись ставится на полученный ID, а фокус на грид. 2. Контрол ввода из справочника на ФормаРедактирование вызывает ФормаСправочник. Передается ссылка на Контрол ввода из справочника. По окончании выбора ФормаСправочник вызывает метод контрола передавая ID в параметрах. Дальше контрол сохраняет ID в таблицу, меняет отображаемый текст и устанавливает фокус на себя. ... Про базовые классы - ОК, понятно. Про связку ФормаСправочник вызывает ФормаРедактирование ссылка на ФормаСправочник передаётся непосредственно форме ФормаРедактирование или через посредника МенеджерФорм, код схематично покажи? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 20:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Закончим первый этап, а то похоже на сворачивание на базар. Добавим объект oFoxObj. В нем создадим процедуры DoForm,DoForms,DoToolbar,DoMenu,DoMenuShortcut, при необходимости можно добавить новые.. Простой вопрос: ты планируешь писать хэлп по результату своего творчества? По сути ты замахнулся на создание новой среды разработки. А без описания она понятна только ее разработчику. Все эти объекты это набор абстрактного кода, который очень не просто сходу понять непосвященному человеку. Иногда даже сам не понимаешь почему на ровном месте что-то работать перестало после вроде бы незначительного изменения в конечном коде. Оказывается просто забыл про некоторые незначительные ограничение своих же классов. Так что советую по минимуму отходить от штатных возможностей фокса. Выводить в классы то что действительно необходимо, а не все подряд. Хотя бы просто из уважения к тем кто будет сопровождать этот код после тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 20:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistПро связку ФормаСправочник вызывает ФормаРедактирование ссылка на ФормаСправочник передаётся непосредственно форме ФормаРедактирование или через посредника МенеджерФорм, код схематично покажи? Никаких МенеджерФорм. А это что такое вообще? Какой-то объект управляющий работой всех форм? Вызов справочника из контрола editTovar.sprGroup.OpenSpr() Код: sql 1. 2. 3.
Переданное запоминается в sprGroup.oParent При возврате обратно из sprGroup Код: sql 1. 2. 3. 4. 5.
Это схематично. На самом деле все немного сложнее. Я догадываюсь к чему ты ведешь. Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Поэтому у меня добавлен механизм уничтожения ссылок. В данном случае форма sprGroup получив ссылку на объект формы editTovar делает встречное обращение на editTovar и регистрирует себя как хранителя ссылки. editTovar запоминает ссылку на sprGroup. по закрытии sprGroup сообщает что ссылка удалена и editTovar удаляет sprGroup из списка хранителей ссылок на него. Если пользователь хочет закрыть editTovar до sprGroup, то editTovar вызывает метод sprGroup для удаления ссылки на него в sprGroup.oParent. Перечитал, мудрено, извиняюсь если написал инструкцию по взрыву мозга :) Механизм уничтожения ссылок встроен в класс БазоваяФорма. Реализовано примерно так: есть массив ThisForm.oChildLink[100] куда запоминаются ссылки на все формы хранящие ссылки на объекты данной формы. В вышеописанном это editTovar editTovar.Destroy() Код: sql 1. 2. 3. 4. 5.
PS Код схематичный. Возможно еще какие-то ньюансы забыл, давно писал. Много чего у меня в классах понаписано, старался показать только необходимое. Если не заработает, готов помочь в создании работающего примера. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 21:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TПростой вопрос: ты планируешь писать хэлп по результату своего творчества? По сути ты замахнулся на создание новой среды разработки. А без описания она понятна только ее разработчику. Все эти объекты это набор абстрактного кода, который очень не просто сходу понять непосвященному человеку. Иногда даже сам не понимаешь почему на ровном месте что-то работать перестало после вроде бы незначительного изменения в конечном коде. Оказывается просто забыл про некоторые незначительные ограничение своих же классов. Так что советую по минимуму отходить от штатных возможностей фокса. Выводить в классы то что действительно необходимо, а не все подряд. Хотя бы просто из уважения к тем кто будет сопровождать этот код после тебя. Извините, встречный вопрос, не с целью обидеть - вы понимаете, что с умным видом написали ерунду? Неужели вы всерьез думаете, что способный создать среду разработки стал бы спрашивать мнение человека, который даже не знает, что это такое и где это находится. Вместо того, чтобы заявки принимать по переводу с FPD на VFP9. Большинство этих вопросов я решил еще семь-восемь лет назад. А сейчас просто сдул пыль с чудом сохранившихся кусков архивов и чуток подправил. Действительно, время в Фоксе словно остановилось. И не собираюсь я никому запрещать с гордым видом изобретать велосипед, если кому-то не жалко тратить на это годы своей жизни. Дело в том, что этот ваш путь ведет в тупик, и вопрос только времени, когда вы в этом тупике окажетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 21:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЭто схематично. На самом деле все немного сложнее. Я догадываюсь к чему ты ведешь. Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Поэтому у меня добавлен механизм уничтожения ссылок. В данном случае форма sprGroup получив ссылку на объект формы editTovar делает встречное обращение на editTovar и регистрирует себя как хранителя ссылки. editTovar запоминает ссылку на sprGroup. по закрытии sprGroup сообщает что ссылка удалена и editTovar удаляет sprGroup из списка хранителей ссылок на него. Если пользователь хочет закрыть editTovar до sprGroup, то editTovar вызывает метод sprGroup для удаления ссылки на него в sprGroup.oParent. Перечитал, мудрено, извиняюсь если написал инструкцию по взрыву мозга :) С мозгом действительно верно. А что мешает вам этот вызов делать через какую-либо обертку команды DO FORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 22:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Эту статью читали? Вернемся к этому вопросу, как договорились. Смотрим на дату создания статьи: Последние обновление: 2005-02-13 17:20 Опубликовал: Максимов Владимир Извините, первый вопрос - а где вы были восемь лет? Быстро пробежимся взглядом - главный файл, процедурное программирование, TasTrade ... Набираем в хелпе TasTrade ... Второй вопрос - о чем это? Вы в каком году живете, друзья? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2013, 18:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Теперь вернемся к вашим вопросам. Вы спрашивали, как я собираюсь реализовать ... да много что вы поднаписали. Насколько я понял, вы надеялись, что я ринусь разгребать ваши перечисления. Нет, пока все также остается, только меняется строка вызова. К примеру, было: oTable.Add() Стало: oTable.DoEdit("Add") Понадобится небольшая перестройка параметров. Использование DO CASE это довольно мощный механизм и не я его придумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2013, 23:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Эту статью читали? Вернемся к этому вопросу, как договорились. Смотрим на дату создания статьи: Последние обновление: 2005-02-13 17:20 Опубликовал: Максимов Владимир Извините, первый вопрос - а где вы были восемь лет? Быстро пробежимся взглядом - главный файл, процедурное программирование, TasTrade ... Набираем в хелпе TasTrade ... Второй вопрос - о чем это? Вы в каком году живете, друзья? 1. Ну а теперь смотрим на дату производства самого фокса 9-ой версии, ... VFP 9 (выпущен в производство 17 декабря 2004 г.) , и сравниваем с датой статьи,... теперь ответьте на вопрос что кардинально поменялось в фоксе с выходм SP1, SP2 да так, что бы это повлекло изменение "стартового" файла? 2. Действительно "пробежался" взглядом А теперь прочтите внимательно, что там написано: Код: plaintext 1. 2. 3.
По сути, если опустить некоторые детали, содержимое главного файла в этом случае будет выглядеть примерно так: Код: sql 1. 2. 3. 4.
В чем тут "фокус"? А "фокус" в том, что в момент создания объекта на базе класса TasTrade выполняется его событие Init. А уже из события Init этого класса осуществляется вызов всех тех методов, которые необходимы в данном приложении в момент загрузки приложения Метод goApp.Do() содержит собственно команду READ EVENTS, что и обеспечивает "точку останова" всего приложения. Команда CLEAR EVENTS дается в одном из методов класса goApp. В данном случае - это метод goApp.CleanUp2() Методы, которые необходимо выполнить при закрытии приложения можно вызвать в том же методе goApp.Do() после команды READ EVENTS или в событии goApp.Destroy() Все те процедуры, которые были описаны в данной статье, оформляются как отдельные методы класса TasTrade. И вызываются в соответствующем месте класса. Обратите внимание, что собственно класс TasTrade из библиотеки классов Main.vcx является наследником другого класса Application из библиотеки классов TSGen.vcx. Такая "иерархия" вовсе не случайна. В этом случае Вы можете использовать класс Application во всех Ваших приложениях, создавая на его основе собственный класс, например, MyClass в собственной библиотеке классов MyClass.vcx. Т.е. Вы получите некую общую библиотеку классов вообще для всех ваших проектов, как заготовку для класса конкретного приложения. Несколько слов о том, чего не должно быть в классе goApp. Дело в том, что возникает большое искушение "впихнуть" в класс goApp вообще все глобальные методы, переменные памяти и разные обработчики. Так вот, не надо этого делать. Цель класса goApp - это организовать корректную загрузку и выгрузку вашего приложения. Все! Все что "сверх" этой задачи должно быть выделено в отдельные классы. Например: Объект - обработчик ошибок Объект - стек активных объектов (форм) приложения Объект, содержащий глобальные настройки приложения Список можно продолжать. Но основной принцип: не смешивать в одном объекте разные задачи. Будьте осторожны с использованием класса из проекта TasTrade.pjx. Он достаточно далек от идеала. Его следует рассматривать скорее как учебное пособие, но не как объект готовый к использованию. Не надо слепо копировать его в свое приложение. Лучше напишите свой собственный класс. Да, это займет больше времени, но Вы лучше поймете что это такое и для чего это используется. Всего лишь приводится пример учебного пособия с разбором ошибок и предложением как делать "правильно". Так о чём Вы хотели сказать своим постом? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 10:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tdo form &lcSprForm name loform Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Из хелпа: Включите ключевое слово LINKED для установки ссылки формы на переменную, ассоциированную с ней, для того, чтобы форма высвобождалась, когда переменная уходила из области видимости. Если вы не включите LINKED, форма останется активной, несмотря на то, что не имеется объектной переменной, ассоциированной с формой. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 10:13 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tdo form &lcSprForm name loform Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Из хелпа: Включите ключевое слово LINKED для установки ссылки формы на переменную, ассоциированную с ней, для того, чтобы форма высвобождалась, когда переменная уходила из области видимости. Если вы не включите LINKED, форма останется активной, несмотря на то, что не имеется объектной переменной, ассоциированной с формой. И что это изменит в моем случае? Что-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 10:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist, Спасибо за пост, но могли бы вы писать более короткими строками? Читать не очень удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 11:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Фокус в том, что смотрим на название темы. Свои интерпретации устаревших версий VFP3-VFP5 на примере учебного пособия вы выдаете за эти "Основы". Хотя в VFP9 уже "17 декабря 2004г.", где проекты строятся на несколько иным приципах, без них обошлись и даже не включили в хелп. И очень бы хотелось, чтобы ваши "основы" хотя бы к десятилетнему юбилею соответствовали девятой версии, RS. Что поменялось, чем отличаются версии - это у вас, у гуру надо спросить. RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге. RS3. Уточняю - я ничего не имею против простых и понятных решений Tastrade. Только не надо их выдавать за основы VFP9. Тем более, что в перестроенную структуру Главного модуля они прекрасно вписываются. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 12:31 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЧто-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода. Что мешает вам сохранить вашу переменную хотя бы где-нибудь в Главном проекте в массиве. В VFP9 этот механизм встроен, можете оттуда выдернуть необходимое. RS. Не хочу вас обидеть, но с вашим примером я не вижу причин для гордости. Если точнее, не вижу даже приложения. Набор типовых решений, выполненных в собственном изготовлении и собранных в одну корзину. Если не ошибаюсь, по памяти - у Алексея Климова в его запутанном Smart-е подобный вызов форм редактирования в единой сессии вообще был решен мимоходом, между строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 12:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima TЧто-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода. Что мешает вам сохранить вашу переменную хотя бы где-нибудь в Главном проекте в массиве. В VFP9 этот механизм встроен, можете оттуда выдернуть необходимое. Задлянафига? Писать LINKED потом хранить его в каком-то самопальном массиве, когда без LINKED все произойдет автоматом. Для этого есть коллекция _screen.forms PS Ответа не надо. Не хочу тебя отвлекать от написания oTable. А то боюсь мы так и не узнаем чего там внутри CASE :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 12:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЗадлянафига? Почему обязательно нужно "так, но не так". У любой задачи может быть несколько решений. Вы же все равно их изобретаете заново в каждом приложении. Да и на чужие решения не грех порой взглянуть. Соберите их в главном модуле, а из приложения только вызывайте, по вкусу. Они ведь кушать не просят. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 13:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 Фокус в том, что смотрим на название темы. Свои интерпретации устаревших версий VFP3-VFP5 на примере учебного пособия вы выдаете за эти "Основы". Хотя в VFP9 уже "17 декабря 2004г.", где проекты строятся на несколько иным приципах, без них обошлись и даже не включили в хелп. И очень бы хотелось, чтобы ваши "основы" хотя бы к десятилетнему юбилею соответствовали девятой версии, 1. Да не вопрос, приведите пример своего framework-a, приаттачте к сообщению. sg12RS. Что поменялось, чем отличаются версии - это у вас, у гуру надо спросить. 2. Сервиспаки никаких кардинальных изменений не внесли, поэтому статья написанная сразу после выхода фокса актуальна и сейчас. sg12RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге. 3. Готов "пробежаться", ... учиться никогда не поздно. sg12RS3. Уточняю - я ничего не имею против простых и понятных решений Tastrade. Только не надо их выдавать за основы VFP9. Тем более, что в перестроенную структуру Главного модуля они прекрасно вписываются. 4. Если бы Вы внимательно прочли цитату из статьи: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 13:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima TЗадлянафига? Почему обязательно нужно "так, но не так". У любой задачи может быть несколько решений. Может быть. Но прежде чем предлагать альтернативное решение будь готов обосновать его плюсы. А так непонятно почему вместо пары строк кода надо городить какие-то массивы? sg12Вы же все равно их изобретаете заново в каждом приложении. На чем данное утверждение основано? Я выше продемонстрировал обратное - показал свою возможность быстро создать почти готовое приложение без написания кода. sg12Да и на чужие решения не грех порой взглянуть. Я не против. Думал тут увижу код oTable. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 13:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Вы невнимательно читаете. 1. Речь шла о родном framework от VFP9, а не моем. 2. Речь шла о версиях, а не сервиспаках. Напомню, VFP9 это не VFP3. 3. Если вы решили учиться, то запустите для этого какой-нибудь учебный проект согласно хелпу VFP9. Он на русском языке. 4. Предложение не знающим куда как тыкаться новичкам написать собственный Главный модуль вообще глупость. Надо быть "семи пядей во лбу", чтобы прочитав вашу статью, каждый смог бы начать изобретать свой framework. Учебный пример вам надо было предоставить восемь лет назад, до сих пор его нет, и вы опять предлагаете написать его самим новичкам, чтобы у каждого был свой паровоз. Надеюсь, хотя бы к десятилетнему юбилею VFP9 вы напишете подобный образец. А потом вы покажете, как в него вписать многочисленные решения с форумов, среди которых немало и находок. ДимаТ, на эти ваши вопросы я уже отвечал, зачем повторяться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2013, 18:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Вы невнимательно читаете. Ну что же давайте внимательно читать. sg12 1. Речь шла о родном framework от VFP9, а не моем. Дык, где поправленный Вами "родной" framework, который Вы хотите использовать, приводите код, пока вижу только одни "общие" слова? sg12PaulWist 2. Речь шла о версиях, а не сервиспаках. Напомню, VFP9 это не VFP3. Хорошо, тогда приведите кардинальные отличия VFP3 от VFP9, что в 3-ке не было обьектов, не было событий или обработчик событий был иным? sg12PaulWist 3. Если вы решили учиться, то запустите для этого какой-нибудь учебный проект согласно хелпу VFP9. Он на русском языке. Стоп-стоп, не надо уходить от ответа, вот Ваши слова: sg12RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге Я готов пройтись построчно. Начинайте, что конкретно Вам не нравится в статье и какие на Ваш взгляд необходимы решения. sg12PaulWist 4. Предложение не знающим куда как тыкаться новичкам написать собственный Главный модуль вообще глупость. Надо быть "семи пядей во лбу", чтобы прочитав вашу статью, каждый смог бы начать изобретать свой framework. Учебный пример вам надо было предоставить восемь лет назад, до сих пор его нет, и вы опять предлагаете написать его самим новичкам, чтобы у каждого был свой паровоз. Надеюсь, хотя бы к десятилетнему юбилею VFP9 вы напишете подобный образец. А потом вы покажете, как в него вписать многочисленные решения с форумов, среди которых немало и находок. Понимаете в чём дело, что бы научиться надо "потыкаться", нельзя по книжке написать прогу,... или Вы хотите использовать готовый framework, ... тогда это надо смотреть коммерческие продукты, там и описалово и техподдержка. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 09:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Не хитрите. Вы обошли одну фразу: "запустите какой-нибудь учебный проект согласно хелпу VFP9". Базу данных можете взять из Tastrade. Сделайте это и выложьте его сюда, пожалуйста. Тогда вы увидите и код, и что он не коммерческий, и что в VFP3 такого нет, и в вашей исторической статье о нем не строчки. И что даже особо не "потыкаясь", вы получили работоспособное приложение. И все это было решено еще в вашем 2005 г. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 11:37 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist RS. И заодно выложьте образец того, что вы советуете новичкам в своей статье. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 12:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Давайте уточним. Вот коды Главного модуля приложения, что у меня получилось. А у вас что? *-- Class: app_application (c:\zz\libs\zz_app.vcx) *-- ParentClass: _application (c:\program files\microsoft visual foxpro 9\wizards\_framewk.vcx) *-- BaseClass: container *-- Time Stamp: 10/25/04 06:55:08 PM * DEFINE CLASS app_application AS _application Name = "_application" cusError.Name = "cusError" cusDataSession.Name = "cusDataSession" cusWindowHandler.Name = "cusWindowHandler" cusTableSort.Name = "cusTableSort" cusTableNav.Name = "cusTableNav" tmrRefresh.Name = "tmrRefresh" cCaption = "zz" cProjectName = "zz" cgomenufile = "zz_go" cstartupmenu = "zz_main" cmetatable = "zz_app" caboutboxclass = "app_aboutbox" cerrorviewerclass = "app_errorlogviewer" cstartupformclass = "app_favoritepicker" cnavtoolbarclass = "app_navtoolbar" cstartuptoolbarclass = "app_standardtoolbar" cnewopenclass = "app_newopen" coptionsdialogclass = "app_options" creportdialogclass = "app_reportpicker" cuserloginclass = "app_userlogin" cchangepasswordclass = "app_changepassword" lAboutbox = .T. lStartupForm = .T. lUserPreferences = .F. lFavorites = .T. lStartupToolbar = .T. ENDDEFINE *-- EndDefine: app_application ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 12:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Вот как смотрятся эти коды Главного модуля приложения после того, как я вынесу все параметры в отдельный глобальный класс как свойства класса: goSet = CREATECLASS('EMPTY') DEFINE CLASS app_application AS _application ENDDEFINE А что у вас, дела подвигаются? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 13:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Вот как смотрятся эти коды Главного модуля приложения после того, как я вынесу все параметры в отдельный глобальный класс как свойства класса: goSet = CREATECLASS('EMPTY') Вы сами-то попробовали запустить предложенную строчку с фоксе, и чЁ в итоге создалось библиотека классов, обьект ... поясните пожалуйста :) sg12А что у вас, дела подвигаются? Если интересно, прочтите ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 13:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist К вашим SQL-печалям еще вернемся, будет время. Зачем все в кашу перемешивать. За ошибку извиняюсь, поторопился: Глобальный объект goSet = CREATEOBJECT('EMPTY') Остальное в силе, жду. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 13:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist К вашим SQL-печалям еще вернемся, будет время. Зачем все в кашу перемешивать. За ошибку извиняюсь, поторопился: Глобальный объект goSet = CREATEOBJECT('EMPTY') Остальное в силе, жду. 1. ОК 2. У меня всё скромнее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 14:45 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist2. У меня всё скромнее И что из этого. Создали объект класса Custom и все готово. Вот новичкам-то радости. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 15:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Что-то ваш ГУРУ притих, а то все молнии метал - и про HELP, и про DOS, чуть не весь алфавит перебрал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 15:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Мы просто все запаслись попкорном - и... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 15:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Да-да, продолжайте. Может, в конце более понятно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 16:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
IgorNGsg12, Да-да, продолжайте. Может, в конце более понятно будет. Вопрос этот нелегок, так как давят годами накопленные стереотипы. Попробуем зайти с другого бока. ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 17:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. Поищи по форуму. Показывал где-то. Правда боюсь тебя мой код сильно расстроит. Я FSO в функцию обернул, на вход маска с путем, на выходе курсор со списком файлов подпадающих под маску. Но как я понял (по твоим репликам выше) тебе не надо вдумываться и вникать суть написанного, достаточно просто выдернуть строку из моего поста и развернуть его критику на полстраницы. Поэтому ищи по форуму, дергай сюда и критикуй. Я не против. А я как все ... с попкорном посижу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 20:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Попробуем разобраться сами. Речь ведь не идет о какой-то отдельно взятой крутой функции, словно о какой-то невидали. В FSO, кроме возможности непосредственной работы с самим объектом FSO, есть еще коллекции Drives,Folders,Files и объекты Drive,Folder,File,TextStream со своими свойствами и методами. В основном функции работы с ними сами по себе несложные, хелп по ним доступен. Чтобы не заморачиваться на названиях, для краткости пронумеруем их условно так: Процедура 1,2,3... и т.д. У большинства наберется немало программ, где функции FSO могут применены, порой они могут оказаться весьма полезны. Работа с ними происходит примерно так: К примеру, в программе 1 используются Процедуры 1,7,22, В программе 2 - Процедуры 3 и 15, В 3 - Процедуры 1,2,11,17 И т.д. Т.е. каждый программист в каждый программе каждый раз решает заново все вопросы работы с этими функциями. Чем иной раз круто гордится. Или ищет примеры решений. И не всегда всегда вопрос решается удачно. Но ведь есть и другой путь. В глобальном объекте собрать все обертки функций FSO в одну процедуру через то же ненавистное DO CASE. Процедура будет большая, но вполне терпимая. Функции отлаживаются один раз. А в приложениях пишется только их вызов с соответствующими параметрами. И тогда FSO станет "карманным" объектом VFP. А ведь есть WSH, WMI, Winapi ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 20:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Кажется кое-кто получил задание - написать курсовик на тему "хоть_какая_нибудь_обертка_хоть_над_чем_нибудь"! И теперь хитростью пытается заставить уважаемых людей сделать за него эту задачу!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 21:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Redrik Давненько вас не было ... Насколько помнится, вы клятвенно клялись не троллить больше со мной. Понимаю вас, в этот раз решили узнать, что такое "обертка", а то помнится, при слове "классы" у вас округлились от удивления глаза. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 21:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Привет, sg12! Клятву я не нарушил - я лично к Вам не обращался, а ляпнуть чего-нибудь - святое право каждого! Просто я делаю жалкие попытки привлечь остальных к своей, данной Вам, клятве! P.S. Глаза округлятся у кого-хошь! Это ж надо - молиться на "классы", а агитировать за процедуру с миллионом CASE'ов!!! Хотя, конечно, новичку простительно - уж больно хочется получить нечто абсолютно универсальное: скачал и думать не надо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 09:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Redrik Я уже думал, что в прошлый раз вы все свои восклицательные знаки израсходовали. RS. Сколько новостей порой узнаешь на форуме. Очередной хит - "CASE несовместим с классами!". Это надо же - увидав новое незнакомое слово, человек полночи ДУМАЛ, чтобы ЛЯПНУТЬ такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 10:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 Если Вы пытаетесь доказать, что создание неких "оберток" всегда и для всего - есть светлое будущее программирования, то так и надо было называть тему Однако пока Вы так и не привели ни одного сколько-нибудь убедительного примера правильности Вашего вывода. Почему-то "обертки" оказываются более ограниченными в применении, чем прямое использование команд и функций. Каждый, абсолютно каждый, без исключения (!), новичек в программировании начинает с того, что пытается создать нечто универсальное. На все случаи жизни. Пока ни у кого не получилось. Все время что-то "выпирает" и "не влезает" в эту самую "универсальную штуку". Как правило, после длительных попыток приходят к разумному компромису. Да, "универсальное", но при выполнении ряда дополнительных условий и ограничений. PS: Ваша идея насчет глобальной процедуры с DO CASE для выбора принципиально разных операций - мягко говоря, не разумная. Даже в рамках процедурного программирования, не говоря про ООП. Это просто лишний посредник. DO CASE используется при выборе однотипных операций. Например, разных алгоритмов расчета. Но использовать DO CASE для анализа того, что именно будем делать (добавить/удалить) - бессмысленно. Мы уже ДО вызова DO CASE знаем это. Зачем же "переспрашивать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 11:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМЗачем же "переспрашивать"?Чтобы вместо add() или remove() писать mycoolproc('add') или mycoolproc('remove'), это же очевидно PS. Прекратите уже его кормить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:22 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Тема названа так, как вы хотели. Это ВАШ термин и не надо придумывать новые термины. Об обертках, на последнем примере о FSO. Вы еще с тех старых времен хорошо знакомы с циклом статей Ю.Шутейко. Покажите реализацию этих функций. Всех. И не так, как любят ГУРУ: "Ищи!", а так: "Коды в студию, пожалуйста". На чем основано ваше утверждения про DO CASE, да еще с приплетением не к месту красивых бантиков типа "процедурное программирование,ООП"? К примеру, вот цитата из вашей статьи: "Проблематично написать парные процедуры загрузки-выгрузки, если они требуют некоторого "внешнего" по отношению к этим процедурам хранилища данных. Например, восстановление исходных настроек среды FoxPro требует где-то сохранить эти самые настройки." Чуть выше я показал, что таких проблем нет. Чтобы вы и этот вопрос не заболтали - выложьте свой учебный пример. Ваше утверждение об однотипности операций с DO CASE вообще глупость. Вот краткий пример: WITH объект DO CASE CASE !_SCREEN.Visible MESSAGEBOX(2*2) CASE tcCase == 'Свойство1' RETURN .свойство1 CASE LEFT(tcCase,5) == 'Метод' .метод() ENDCASE ENDWITH Этот прием позволяет в одной процедуре компактно собрать необходимое для работы с конкретным объектом, а не расписывать для этого целые классы. Об универсальности - непонятно вообще, что вы имееете ввиду. У вас какие-то абстрактные рассуждения, о чем-то своем, наболевшем. К примеру, если я заготовлю заранее парные кнопки "OK и Отмена", то их нельзя будет применять по вашей теории универсальности? А если покнопочно рисовать их в каждой форме приложения, то пожалуйста. Вы наизусть выучили HELP к фоксу, все его команды и функции, но плохо изучили сам девятый VFP - в нем почти все МОЖНО И НУЖНО выносить в универсальные базовые классы. А в приложениях оставлять только специфику, для каждого приложения она своя. VFP9 так заточен и если у вас это не получилось, отсюда не следует, что это плохо. В VFP9 имеется свой механизм работы с проектами, причем довольно мощный. Убедиться в этом может каждый, запустив учебный проект. Вы в свое время перепутали понятия механизм и его реализация. Сам механизм встроен в VFP, а его реализация выполнена в директориях FFC и Wizards. Причем очень плохо, да и устарело. Смените реализацию на свою и в вашем распоряжении окажется этот мощный механизм для работы с приложениями, позволяющий их создавать заново или переделывать старые. И еще использовать кучи готовых решений, которые лежат мертвым грузом по той простой причине, что их некуда внедрять. Но спасовав однажды перед этим вопросом, вы уже восемь лет продолжаете проповедовать идеологию, что в VFP9 надо писать как в VFP3-VFP5, приводя в качестве образца Tastrade. Когда все, что можно и что нельзя, делается в приложениях. И у каждого свой паровоз, каждый изворачивается как может. На чем основана эта ваша уверенность, непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 18:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Извините, а Вы можете хотя бы одну тему довести до логического конца? Без "потока сознания"? Или Вам главное просто поболтать, а о чем - не имеет значения? С чего началось обсуждение и родилась данная тема? sg12А здесь всего три процедуры "Добавить, Удалить, Изменить" в двух вариациях. Неужели нельзя было за десять лет написать одну универсальную обертку, где можно один раз отладить все проверки, и куда можно было бы просто передавать параметры из таблиц. Т.е. Ваш исходный посыл: Существует некая универсальная процедура (обертка) для операций "Добавить, Удалить, Изменить" Для начала, Вам показали на примерах, что это не так. Не существует. Всегда есть "что-то", что не укладывается в эту самую "универсальную" процедуру. Далее я заметил, что в одном DO CASE обычно не делают выбор принципиально разных процедур. Это не значит, что это нельзя сделать в принципе. Это всего-лишь значит, что ТАК не делают в виду бессмысленности подобной операции. Вы можете объяснить ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case. Остановимся на этих двух вопросах: отстутствие универсальности и бессмысленность "переспрашивания". Все остальное у Вас крутится вокруг этого. Ответы будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 18:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, забей на него. Стандартный психологический прием троля: обратится к конкретному человеку. Подстава в том что любой нормальный человек считает что должен отвечать раз к нему обращаются. Считает неправильно, т.к. если изначально понятно что спрашивающий ждет не ответа а продолжение диалога. Поэтому надо просто помолчать, какой бы бред не писался. То что это бред понимают все. Так что пусть пишет. Не будет ответов, сам исчезнет отсюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 19:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Извините, но я только пунктуально ответил на вопросы, которые ВЫ затронули. Прочитайте свой пост. И насколько я понял, ответы "новичка" застали вас врасплох. На каких примерах вы что показали? Ваш компаньон морочил мне этим голову, теперь вы. Повторяю - вы хоть можете не на пальцах, а хоть что-то показать, хоть примитивный проект для новичков, соответствующий вашей теории? И покажите мне ваше туманное "что-то". Свою фразу: "ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case." переведите на нормальный русский язык, пожалуйста. Об универсальности я достаточно четко и однозначно сформулировал предложения, куда уж дальше. Что у вас вызывает затруднения? Может быть то, что "универсальность" оказалась для вас неожиданностью? RS. Кстати, к вам и подмога подоспела, вовремя. ДимаТ Если человек не может ответить на вопросы, то лучше не пытаться отвечать, а то попадешь в глупое положение. Если человек, двадцать лет изучающий FoxPro, не может ответить на вопросы "новичка", то вдвойне. И речь идет об ответах, а не поучениях, на что горазды многие ГУРУ, пока дело не доходит до конкретики. Я лично стараюсь отвечать на все вопросы, в том числе и ваши. И если что непонятно, всегда готов уточнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 19:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12RS. http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D1%82%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%83%D0%BC] P S сокращение от P ost Scriprum . sg12Я лично стараюсь отвечать на все вопросы, в том числе и ваши. Не вижу ни одного ответа по существу. Ни на мои вопросы, ни на чужие. Вижу только вопросы и использование ответов для продолжения монолога. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 20:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Теперь вернемся к вашей коронному номеру: "Добавить,Удалить,Изменить". Приведите комплект ВАШИХ кодов этих функций, и я покажу ВАМ, как их переделать их через DO CASE. И объясню вам, почему в вашем случае модернизация приложений вызывает известные затруднения, а после перестройки их в главный модуль нет. ДимаТ. Ладно, можете повторить вопросы, если что непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 20:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМWord - это текстовый редактор. Предназначен для ввода/отображения текста . Для него таблицы - это вспомогательный инструмент отображения того же текста. И именно в небольших объемах. Порядка нескольких десятков записей. Если речь идет об отображении тысяч и десятков тысяч записей, то текстовый редактор для этого мало пригоден. Нужно использовать инструмент, специально для этого и предназначенный. Т.е. табличный редактор Excel. Гораздо проще нарисовать некую шапку в Excel, чем мучиться с выводом большой табличной части в Word. Хороший совет. Но возникает новый вопрос - а что мешает в этот раз эти коды вам сделать универсальными? Хотя бы из курсора для начала и без шапки, ее потом можно будет пристроить. Т.е перенести их в глобальный базовый модуль, и тогда ни новичок, ни опытный программист не будут больше постоянно тыкаться с такими вопросами, а просто в эту процедуры будут передавать параметры. Вы можете это объяснить на конкретном примере, а не на пальцах? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 23:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
"Универсализм кодов"... "Классы-наше всё"... "Давайте свернём Гланый Модуль"... Начинает напоминать мантры и некие братства Вот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD... Убедите меня, что мой подход неверен ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 01:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMВот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD... Убедите меня, что мой подход неверен А в чем проблема? Кто мешает вам написать эти строчки кода, пишите на здоровье. Но логические ваши ошибки в рассуждениях могу отметить: Главный модуль (а не проект) вам не надо создавать, он у вас уже на флешке, вместе с dll-ками. Если уже не на компе. Вполне вероятно, что ваша задача не так уж сложна и она уже есть в Главном проекте. И возможно вам остается только на худой конец скопировать нужные вам коды, а не писать их заново. А в тестовом шаблоне-проекте она вообще может оказаться только строкой вызова с параметрами. На календаре 2013 г, 9-ка загибается, а вы сидите на 8,6,FPD ..., это говорит о вашем уровне. Где уж тут речь вести о Главном модуле. И посмотрел бы я, как вы будете мыкаться с переносом этих ваших FPD на что-то другое, а здесь системная часть у вас уже готовенькая. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 10:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, не думаю, что кому-то из участников, имевших неосторожность вступить с тобой в полемику, что-либо мешает писать. Проблемы, похоже, у тебя. Озвучивать суть их не буду, т.к. это противоречит правилам форума, отмечу лишь то, что явно наличествует в твоих "простынях" - клинический случай резонерства. А вообще - забавно, когда на форуме появляется очередной апологет какой-либо сверхценной идеи, так что -давай, пиши еще! P.S. А "R.S" - это что обозначало-то: "Rectum scriptum" что ли? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 11:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Про то, на чём я сижу (или не сижу) я уже, вроде, упоминал - не надо за меня выражаться И мысль, которую я вам пытаюсь донести с момента вашего появления в теме "Чем заменить..." - я лично не буду искать где-то чей-то готовый код (который ещё неизвестно, решит ли именно ту задачу, что требуется), если я вижу, что мне проще и быстрее написАть несколько собственных строк. Если же я вижу, что для решения требуется что-то, что я писАть буду долго и нудно - да, я найду и встрою. Кроме того, возможно, я уже знаю и видел нужные мне части реализации, поэтому я искать не буду, а сразу воспользуюсь, либо решу вопрос с автором функционала. В общем, кредо примерно таково - не "эффективность" кода, а эффективность трудозатрат. И не надо мне говорить, что сборка из "конструктора" быстрее и качественнее. Всё познается на опыте, и мне мой вопит (в противоположность всему нынешнему маркетингу от разработки продуктов), что где-то в чём то я намного более прав, нежели дипломированные (и наслушавшиеся их) "розроботчики". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM С чего вы решили, что речь идет о "сборке из конструктора"? С чего вы решили, что "трудозатраты" увеличиваются, а не уменьшаются?. С чего вы решили, что код придется искать? На самом деле опытные программисты этот Главный модуль имеют, только называют его по другому, к примеру так - "наработанные решения". Только хранится он вразброд и при необходимости процедуры перекопируются в программы с небольшими корректировками. Чем хуже собрать их и только вызывать их из приложения. К примеру, зачем переписывать код вывода отчета в Word или Excel в каждом приложении в каждом отчете, если будет возможность использовать универсальный код, который можно написать. Свежий пример, кусок кода из соседней темы: LParameters tnID if type("m.tnID") <> 'N' or m.tnID <= 0 m.tnID = 0 endif Убейте меня, ну не пойму я - почему лучше в каждой форме нужно героически сочинять эти коды, если эти вопросы можно решить один раз в базовом модуле для всех форм. И такое впечатление, что слово ООП употребляется только для красного словца. Вот пример универсального кода передачи собственно объекта и сессии, написанный для Init А.Климовым лет восемь назад: LPARAMETERS toForm WITH THISFORM DODEFAULT() IF PCOUNT() = 1 AND UPPER(VARTYPE(m.toForm)) == "O" AND UPPER(m.toForm.BASECLASS) = "FORM" .pForm = m.toForm ELSE IF VARTYPE(_SCREEN.ACTIVEFORM) == "O" AND UPPER(_SCREEN.ACTIVEFORM.BASECLASS) = "FORM" .pForm = _SCREEN.ACTIVEFORM ENDIF ENDIF IF VARTYPE(.pForm) == "O" AND UPPER(.pForm.BASECLASS) = "FORM" SET DATASESSION TO (.pForm.DATASESSIONID) ENDIF ENDIF Чем он плох, зачем нужно заново открывать Америку в каждой форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:43 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Ну так и я о том же, в принципе. То есть "наработанные решения", естественно, не переписываю каждый раз заново. Вот только мы с вами разошлись в оценке того, какой код нужно "унифицировать". Вы утверждаете, что нужно сделать универсальным всё вплоть до операций обслуживания базы. Я же говорю, что одно дело - отчеты, обработка ошибок, интерфейс. И другое - работа с БД. Не нужно (и даже вредно) делать универсальной работу с данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM В этот раз не спорю, при работе с базами данных в Фоксе достаточно проблем. Да и с отчетами порой тоже, иной раз такие навороты бывают. Но что мешает именно в приложении решать именно эти конкретные проблемы. А где их нет, использовать наработанные решения, собранные в Главном модуле. До вплоть я не "утверждал, может быть где неясно выразился. Да и в Tastrade, да и в самом VFP9 работа с базами данных достаточно унифицирована. Поэтому меня и удивил перенос этих вопросов в формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:09 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Свежий пример, кусок кода из соседней темы: Код: sql 1. 2. 3. 4.
Убейте меня, ну не пойму я - почему лучше в каждой форме нужно героически сочинять эти коды, если эти вопросы можно решить один раз в базовом модуле для всех форм. Насколько я понимаю, именно в этом и заключается Ваша проблема. Вы действительно считаете, что ответ на вопрос вроде "как передать параметр в форму?" должен начинаться с объяснения того, как создать класс? Ну, то, что Вы называете "базовым модулем всех форм". Вы вообще понимаете, чем различаются такие вопросы: - Как "в принципе" можно решить данную проблему? - Как написать собственный FrameWork? Обычно в данном форуме задается вопрос вроде: Как, какой командой/приемом, сделать то или иное. Вы же вместо ответа на этот вопрос начинаете объяснять про построение собственного FrameWork. Причем проблема в том, КАК Вы это объясняете. Само слово FrameWork или аналогичный ему термин (пусть и Ваш собственный) Вы вообще не применяете. Вы строите ответ таким образом, как будто факт построения FrameWork позволит решить частную (конкретную) задачу. Ну, построю я его. А как проблему-то решить? А вот именно про это Вы как раз ничего и не говорите! - С чего Вы вообще решили, что никто из программистов не имеет собственного FrameWork? - С чего Вы вообще решили, что никто из программистов не понимает, что повторяющиеся куски кода следует выносить в некую общую библиотеку? - С чего Вы вообще решили, что для объяснения способа решения той или иной задачи необходимо СНАЧАЛА предложить построить FrameWork? - С чего Вы вообще решили, что кем-то созданный FrameWork подойдет для решения ЛЮБОЙ задачи? Построение собственного FrameWork в FoxPro - это дело сугубо частное. Можно сказать, интимное Никто и никогда не возьмет чужой FrameWork для создания собственного приложения. Разве что, отдельные приемы. Вот Вы активно рекламируете собственный FrameWork. Но даже те куски, которые Вы показываете, вызывают недоумение, поскольку совершенно не понятно, при каких условиях получился именно ТАКОЙ FrameWork. Что же у Вас за задачи-то такие, что нужно писать именно ТАКОЙ код? Это вовсе не значит, что то, что у Вас сделано - плохо. Это всего-лишь означает, что Ваш FrameWork "заточен" под решение определенных задач. Для этих задач, вероятно, он хорош. Но ведь у других людей и задачи совсем другие! Зачем же им "впаривать" заведомо неприемлимые решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 15:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет. Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться. Если мне ни изменяет память, они уже и в Tastrade были. Открыв эту библиотеку, вы лично можете убедиться, что там действительно имеется базовая форма. Дочерние от него объекты уже можно специализировать - для работы с таблицами в основном через грид, для справочников, диалогов, модальных форм и т.д. Термин FramеWork я не применяю оттого, что у вас известныеt затруднения с этим объектом и перешел на ваш термин - Главный модуль. У кого в заначке какой FrameWork я не знаю. Разве что на своем сайте Urfin пытался, но вышло очень тяжеловесно и непрактично. Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия. Примеров выноса в общую библиотеку я не видел - наоборот, годами новички постоянно тыкаются с базовыми вопросами. О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже. Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы. Никакой собственный FrameWork я не рекламирую - несколько кусков кода погоды не делают. Если вы намекаете на _application, то у меня там всего несколько простых процедур, в кармане фиги нет: OnShutdown - ничего нового, DoApp - для поочередного запуска вышеуказанных процедур из oSetting при Otkr/Zakr, Utils - сборник часто вызываемых небольших процедур. Чем они вас так напугали, что они могут вам "впарить" - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 17:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ВладимирМ Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет.Не обольщайтесь... Он не сбавил - он решил пообщаться на вашем языке и уровне Остальное ваше словописание - ни о чём. На таком уровне общаться никто не будет, и обсуждать "поднимаемые вами вопросы" - тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 18:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMsg12ВладимирМ Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет.Не обольщайтесь... Он не сбавил - он решил пообщаться на вашем языке и уровне Остальное ваше словописание - ни о чём. На таком уровне общаться никто не будет, и обсуждать "поднимаемые вами вопросы" - тоже. А я и не обольщаюсь. Все эти застарелые догмы восьмилетней давности меня нисколько не удивляют. И не думаю, что мои несколько постов по делу, которые я успеваю вставлять между ответами на наезды и глупые поучения, что-то изменят. И этот уровень не мной установлен, он был до меня. Также как и безрезультатность большинства обсуждений на фокс-форумах. В фоксе ничего никогда не меняется, это прописная истина. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 20:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет. Тон я и не менял. Это Вы почему-то читаете не то, что написано. Постоянно "перевираете" и как-то странно интерпретируете написанный текст. Я все-таки пытаюсь разговаривать с Вами исходя из предположения, что Вы сюда не просто поболтать заскочили. А все-таки хотите что-то понять/узнать/уточнить. sg12Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться. Если мне ни изменяет память, они уже и в Tastrade были. Открыв эту библиотеку, вы лично можете убедиться, что там действительно имеется базовая форма. Опять не понятно о чем Вы вообще говорите. Да, есть библиотека FFC. Да, в этой библиотеки все классы созданы на основе специализированной библиотеки классов с именем _Base. Вероятно, основываясь на имени библиотеки Вы и использовали термин "базовые классы". И что из этого следует?... Замечу, что в данном случае Вы именно что "придумали" термин. "Придумали" в том смысле, что никому кроме Вас не пришло в голову ассоциировать данный термин с библиотекой FFC. В FoxPro "базовыми" называются классы, которые не были унаследованы от каких-либо других классов. Т.е. это классы Form, Custom, TextBox и т.п. Базовые классы в Visual FoxPro Обратите внимание, что все классы в библиотеке _Base именно что унаследованы от других классов. Т.е. "базовыми" с точки зрения FoxPro - не являются. Хотя, разумеется, подобную библиотеку можно назвать базовыми классами приложения FFC. sg12Дочерние от него объекты уже можно специализировать - для работы с таблицами в основном через грид, для справочников, диалогов, модальных форм и т.д. Да. Это стандарт создания иерархии классов. Очевидно настолько, что непонятно, зачем такую тривиальную мысль вообще озвучивать. sg12Термин FramеWork я не применяю оттого, что у вас известныеt затруднения с этим объектом Не понял, о каких затруднениях и с каким объектом Вы говорите. Термин FramеWork - это общеупотребительный термин, описывающий некий набор "заготовок" для разработки собственных приложений sg12и перешел на ваш термин - Главный модуль. Я такого термина не употреблял. Если Вы говорите о главном ФАЙЛЕ приложения (о котором была статья), то никто и никогда не использует ОДИН файл как целую библиотеку. Нет, разумеется, ТАК тоже можно. Но я как-то с трудом представляю процесс модификации подобной "простыни". sg12У кого в заначке какой FrameWork я не знаю. Разве что на своем сайте Urfin пытался, но вышло очень тяжеловесно и непрактично. Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия. Проблема как раз в том, что я то пытаюсь пояснить о чем я говорю, а вот о чем Вы говорите - неизвестно. А FrameWork - это довольно устоявшийся термин. Некий "каркас" того, как Вы создаете все свои приложения. Фреймворк sg12Примеров выноса в общую библиотеку я не видел - наоборот, годами новички постоянно тыкаются с базовыми вопросами. Еще раз. Если новичек спрашивает о том, как передать параметр в форму, то ЧТО Вы ему ответите? Какое отношение "общая библиотека" имеет к подобному вопросу? sg12О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже. Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы. Разве не Вы это написали для кнопок "Добавить, Изменить, Удалить" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
А когда я Вас попросил привести практический пример того, когда подобный код действительно понадобился бы для кнопок , Вы скромно промолчали. В своей практике я не встречал задач, когда ТАКОЙ код был бы уместен именно для кнопок . Однако Вы его используете. По крайней мере, он Вам кажется вполне уместным. Значит, Ваша задача как-то принципиально отличается от тех задач, с которыми сталкиваюсь я. Вот я Вас постоянно и спрашиваю, какие же у Вас задачи, чтобы использовать подобный код кнопок? sg12Никакой собственный FrameWork я не рекламирую - несколько кусков кода погоды не делают. FrameWork - это прежде всего ИДЕЯ того, как "надо". Как "правильно" с Вашей точки зрения. Вот Вы настойчиво пытаетесь всех убедить, что НАДО делать некий общий метод для кнопок в который передавать параметр Add/Delete/Edit. А подобный подход соответственно заставляет строить и все остальное приложение. С моей точки зрения для кода кнопок ТАК делать не имеет смысла. Соответственно моя структура приложения, мой FrameWork, примет принципиально другой вид. sg12Если вы намекаете на _application, то у меня там всего несколько простых процедур, в кармане фиги нет: OnShutdown - ничего нового, DoApp - для поочередного запуска вышеуказанных процедур из oSetting при Otkr/Zakr, Utils - сборник часто вызываемых небольших процедур. Чем они вас так напугали, что они могут вам "впарить" - непонятно. Про них я вообще ничего не говорю. Я просто в очередной раз пытаюсь понять о чем Вы вообще говорите. Имеет смысл дальше с Вами продолжать разговор или нет. Есть вообще предмет для дискуссии или Вам лишь бы "себя показать"? Вы готовы слушать других или слышите только себя? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 20:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться. Убедился. Только их придумал микрософт. Им и предъявляй свои претензии. Все воспринимают эту поделку как пример кода, из которого при желании можно чего-нибудь позаимствовать. Если же ты думаешь что это надо воспринимать как единственно возможный способ разработки, то тебе прямая дорога в 1С. Там все как ты хочешь: объекты-обертки, шаг в сторону он них невозможен, т.к. ничего другого нет. Все просто и однозначно - либо так как решила 1С, либо никак. sg12Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия. ... О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже. Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы. У тебя нет опыта разработки на фоксе. Поэтому тебе непонятно разницы между теорией и практикой. Вот топик такого же чудо-кодера только перешедшего на Си. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 20:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM Вот вы тут же получили подтверждение, как ответ на ваш вполне серьезный вопрос - сразу два поста. Много ли среди этой писанины вопросов, заслуживающих внимания и решение которых принесет хоть какой-то, но результат. Придется опять выискивать крупицы. И если мои ответы у кого хоть немного пошатнут веру в авторитеты и стереотипы, то этого достаточно. И даже если я всерьез засяду на несколько месяцев, чтобы показать этот "чудо-фреймворк", от этого ничего не изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 21:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
А оно и не нужно - кому-то что-то показывать. Всё равно все останутся при своём мнении. Я своё уже высказал - я не буду "унифицировать" код, не требующий повторного использования. Поскольку сейчас не занимаюсь постоянным решением однотипных задач в одной предметной области... В случае же, если такое произойдёт - сначала будем думать, а затем уже кодить. Или воспользуемся готовыми или совместными разработками. В любом случае, полная (или стремящаяся к таковому) унификация - это область приложения сил коллективов разработчиков, направленная на продвижение продукта в несколько областей - что, по определению, не может требоваться от программистов, не работающих в крупных проектах или корпорациях... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 21:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, Услышал я вас. Хорошо, пусть будет по-вашему - не так и не то, да что-то, да и все, я назвал. Что от этого изменится. Если вы за восемь лет не сумели написать даже учебный пример - вы сейчас это сможете сделать? Вот вы дали ссылку на Википедию, блеснули - вы сами читали эту статью? Теперь вы знаете, что это такое. Уважаемый ГУРУ, хоть после этого вы сможете написать этот фреймворк? Где как раз и будет решение - "как передать параметр в форму", я вам распишу этот ваш LPARAMETERS. Эти "Добавить, Изменить, Удалить" для вас уже как красная тряпка для быка. Опять я конкретно - выложьте свои решения, и я покажу вам, как их оставить так, как вы хотите. Ни одной вашей буковки не трону, обещаю. Нашли проблему, детсад какой-то. О каких своих "секретных" задачах вы все время морочите мне голову? Посмотрите, в теме сколько конкретных вопросов я вам задал, могу их повторить - когда вы сможете ответить хоть на один из них? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 22:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться. Убедился. Только их придумал микрософт. Им и предъявляй свои претензии. Все воспринимают эту поделку как пример кода, из которого при желании можно чего-нибудь позаимствовать. Если же ты думаешь что это надо воспринимать как единственно возможный способ разработки, то тебе прямая дорога в 1С. Там все как ты хочешь: объекты-обертки, шаг в сторону он них невозможен, т.к. ничего другого нет. Все просто и однозначно - либо так как решила 1С, либо никак. sg12Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия. ... О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже. Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы. У тебя нет опыта разработки на фоксе. Поэтому тебе непонятно разницы между теорией и практикой. Вот топик такого же чудо-кодера только перешедшего на Си. ДимаТ. Сами как думаете, что я должен ответить на эти ваши глупости. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 22:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TПеременная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода. Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform. По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 10:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform. По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М. Молодец. Только он мне не нужен. Я без него обхожусь. Оставь себе эти знания. Если кто из новичков спросит - поделишься. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 10:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform. По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М. Молодец. Только он мне не нужен. Я без него обхожусь. Оставь себе эти знания. Если кто из новичков спросит - поделишься. Показал бы, как обходишься. Или тоже "засекречено"? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 11:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Показал бы, как обходишься. Или тоже "засекречено"? я вроде уже показывал. Повторяю: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 16:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Показал бы, как обходишься. Или тоже "засекречено"? я вроде уже показывал. Повторяю: Код: sql 1.
Такими ГУРУ становятся скромными ... временами. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 17:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
off sg12, А отчего это фотомордочка у тебя на фотке вКонтактике такая тоскливая? Скорбишь о нелегкой судьбе "неправильных" программистов чтоль? ты бы хоть ник сменил, придурок :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 17:52 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЕсть объект ShellLink. Как пользоваться ищи в инете. Я на Сях его пользовал. http://msdn.microsoft.com/en-us/library/windows/desktop/bb776891(v=vs.85).aspx Надо же, такую толстую книгу осилили, да еще на английском, да еще на Сях ... Может блеснете эрудицией на русском, да в Фоксе. Хотя бы что-нибудь вроде небольшой учебной статьи ... для новичков. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 18:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Услышал я вас. Вы так ничего и не поняли. Тем более не услышали. Прежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов. Примерно таких: - Будут ли в качестве хранилища данных использоваться файлы DBF или "промышленная" СУБД (MS SQL, Oracle, MySQL и т.п.) - Будет ли приложение работать с модальными или не модальными формами - Будет ли управление осуществляться через кнопки на форме, ToolBar или системное меню - Будут ли записи редактироваться в отдельной форме или в форме со списоком - Будет ли навигация по записям осуществляться через формы со списком или при помощи кнопок Вперед/Назад - ... А теперь вопрос непосредственно Вам Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями? Очень большая просьба ответить только "Да, будут существенные отличия" или "Нет, в целом все одинаково". Никаких комментариев не надо. Просто Да/Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 18:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМsg12Услышал я вас. Вы так ничего и не поняли. Тем более не услышали. Прежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов. Примерно таких: - Будут ли в качестве хранилища данных использоваться файлы DBF или "промышленная" СУБД (MS SQL, Oracle, MySQL и т.п.) - Будет ли приложение работать с модальными или не модальными формами - Будет ли управление осуществляться через кнопки на форме, ToolBar или системное меню - Будут ли записи редактироваться в отдельной форме или в форме со списоком - Будет ли навигация по записям осуществляться через формы со списком или при помощи кнопок Вперед/Назад - ... А теперь вопрос непосредственно Вам Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями? Очень большая просьба ответить только "Да, будут существенные отличия" или "Нет, в целом все одинаково". Никаких комментариев не надо. Просто Да/Нет. Никаких этих проблем нет. Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде. В одних и тех же классах, только в разных процедурах. А из предложения они вызываются, меняется только строка вызова, на выбор. Без никаких ультиматумов "или-или", они друг другу не противоречат. Например, так: goApp.oObj.DoForm('Modal') goApp.oObj.DoForm('Dialog') goApp.oObj.DoToolbar() goApp.oObj.DoMenu() ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 18:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Извиняюсь, оговорился - "из приложения". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 18:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Можно рассмотреть на более простом примере - чуть выше я упоминал о процедуре DoNavigate. Она не зависит от того, откуда ее вызвали - из Toolbar, меню, группы кнопок CommandGroup или др. Вызов везде одинаков, примерно так: goApp.oTable.DoNavigate('Top'). И эти вызовы могут работать из разных мест, они не мешают друг другу. Эти объекты тоже универсальны (меню можно написать в виде процедуры), не зависят от таблицы, которая при необходимости может передаваться как параметр. И тоже могут реализованы в Framework. А в приложении создаются только необходимые дочерние объекты, с которыми и работает приложение. Хотя те же кнопки ничто не мешает установить на формы из фреймворка при необходимости. И также ничто не мешает в приложении создавать другие объекты с теми же вызовы. Точнее будет - подобную команду вызова можно дать откуда угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 22:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12...пропущено... Никаких этих проблем нет. Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде. В одних и тех же классах, только в разных процедурах. А из предложения они вызываются, меняется только строка вызова, на выбор. Без никаких ультиматумов "или-или", они друг другу не противоречат. Что-то эти высказывания мне напоминают концепцию сервера приложений в трехзвенной архитектуре... Тот же самый слой абстрагирования представления данных (тонкий клиент) от платформы хранения данных (сервер)... Плохо это или хорошо - не знаю... Но как "клиент-сервер", так и "трехзвенка" живут и развиваются... И так же идут споры о том, какая из технологий круче.... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 23:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Возможно, я был не совсем прав в моем предыдущем сообщении и Ваши "принципы" скорее чем-то напоминают паттерны (шаблоны) проектирования. Например, такой: Паттерн Mediator (посредник) Назначение паттерна Mediator Паттерн Mediator определяет объект, инкапсулирующий взаимодействие множества объектов. Mediator делает систему слабо связанной, избавляя объекты от необходимости ссылаться друг на друга, что позволяет изменять взаимодействие между ними независимо. Паттерн Mediator вводит посредника для развязывания множества взаимодействующих объектов. Заменяет взаимодействие "все со всеми" взаимодействием "один со всеми". Решаемая проблема Мы хотим спроектировать систему с повторно используемыми компонентами, однако существующие связи между этими компонентами можно охарактеризовать феноменом "спагетти-кода". Спагетти-код - плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа. Спагетти-код назван так, потому что ход выполнения программы похож на миску спагетти, то есть извилистый и запутанный. ... Только использовать паттерны (шаблоны) или нет - каждый решает сам. Они тоже не всесильны и у них есть слабые места... Все это обсуждается в специальной литературе... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 23:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T, Нет, мы будем делать так и только так. Эти коды отладим, один раз, и ошибки будут возникать только когда в эти процедуры будут передаваться неверные параметры. Строка вызова увеличится только на один параметр. И с макроподстановками разберемся, не надо преувеличивать. А в тех немногих случаях когда критично, ничто не мешает вам в приложении использовать свои процедуры, и только когда в этом возникнет необходимость. Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало. А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы. Или два класса - по 3 и 2, кому что по вкусу. Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах. Нашел интересную статейку: О повторном использовании кода цитата оттуда: О повторном использовании кода... Преждевременное обобщение Каждый уважающий себя разработчик знает цитату Кнута о злобной преждевременной оптимизации, которая может привести к невероятно быстрому коду (правда, обычно не в тех местах, что нужно), прочитать и понять который со временем не сможет и сам автор. Но поскольку сейчас наиболее затратной частью многих систем является не производительность, а эффективность разработки, то вместо преждевременной оптимизации все чаще можно столкнуться с проблемой «преждевременного обобщения» (premature generalization). По сути, преждевременное обобщение сводится к созданию более сложного решения в надежде на повторное использование или на «гибкость», которая позволит справиться с будущими изменениями. Но, как это обычно бывает, «гибкость» оказывается не такой и гибкой, требования начинают меняться не в ту сторону, в результате трудозатраты не оправдываются и команда получает более сложное решение, хотя могла бы обойтись и более простым. ... В результате, каждый проект обрастает кривыми библиотеками и фреймворками, использовать которые неудобно, а сопровождать – дорого. Проблема в том, что затраты на дизайн, реализацию и сопровождения публично доступного кода на несколько порядков выше стоимости сопровождения простого кастомного решения. Начинается все с того, что реюзабельный код требует более полной и подробной документации, лучшего качества и покрытия тестами, примеров использования и пользовательской документации. Даже если код предназначен для повторного использования внутри команды, то его качество и простота использования должны быть такими, чтобы программисту было экономически выгодно разобраться в вашем решении, а не городить свой собственный любимый огород. И я уже не говорю о необходимости культуры повторного использования, без которой вся идея «реюза» накроется медным тазом благодаря всеми любимому симптому NIH (Not Invented Here). ... Многие считают, что «обобщенное» решение (с кучей возможностей для расширения) является лучшим способом справиться с будущими изменениями. Возможно это и так, но практика показывает, что с этого пути очень легко скатиться к громоздкому коду, который сложно понять (ведь он может все) и сопровождать. ... программисты (и архитекторы) плохо угадывают, что именно будет изменяться в будущем и какие новые потребности появятся. А раз так, то нет ничего лучше простого решения, которое можно легко адаптировать под изменяющиеся требования путем его модификации. Все эти сложности не говорят о том, что заниматься повторным использованием глупо. Нет. Аналогично тому, как оптимизация производительности должна осуществляться после профилирования, так и обобщение должно осуществляться вОвремя: не во время разработки самой «фичи», а на более поздних этапах, когда команда понимает, куда будут направлены возможные изменения и, что нужно обобщать, а что – нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 00:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Все верно, интересная ссылка и хорошие цитаты. Осталось их реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 09:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Все верно, интересная ссылка и хорошие цитаты. Осталось их реализовать.То есть Вы так и не поняли, что и статья, и "цитаты" как раз и говорят о том, что именно сейчас реализовывать ничего не надо... Впрочем, мы уже давно знали, что вы пургу гоните ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 09:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMsg12Все верно, интересная ссылка и хорошие цитаты. Осталось их реализовать.То есть Вы так и не поняли, что и статья, и "цитаты" как раз и говорят о том, что именно сейчас реализовывать ничего не надо... Впрочем, мы уже давно знали, что вы пургу гоните То, что "ничего не надо", в Фоксе было известно с первого дня его существования. Огорчу вас, но порой попадаются и такие, которым "надо". На чьи решения вы порой с умным видом даете ссылки ... RS. И кто это "мы", не говорите за всех, говорите от себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 09:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ВладимирМПрежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов. Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями? Никаких этих проблем нет. Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде. В одних и тех же классах, только в разных процедурах. А из предложения они вызываются, меняется только строка вызова, на выбор. Без никаких ультиматумов "или-или", они друг другу не противоречат. Например, так: goApp.oObj.DoForm('Modal') goApp.oObj.DoForm('Dialog') goApp.oObj.DoToolbar() goApp.oObj.DoMenu() Вы хоть раз пытались прочитать то, что написано, а не то, что Вам показалось? Банально ответить Да/Нет не способны! По сути, я Вас спросил кто пишет ТЗ для НОВОГО приложения. Вы или заказчик? Из Вашего ответа видно, что мнение заказчика Вас не интересует. У Вас уже все есть Вы вообще-то хоть раз писали приложение "с нуля"? С создания собственного FrameWork. Или только на поддержке сидите? Простой пример добавления записи в файл DBF Код: sql 1. 2.
Простой пример добавления записи в SQL-сервере Код: sql 1. 2. 3. 4.
Вы всерьез считаете, что коды ничем принципиально не отличаются и будет одинаковый набор классов и методов в обоих случаях? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 20:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Я достаточно однозначно и подробно вам ответил, что вопросов в вашей интерпретации "или-или" нет. Вы можете взять любое серьезное приложение - там благополучно работают и меню, и тулбары, и кнопки. Так же, как и разные формы. Что еще я могу ответить на высосанные из пальца проблемы. FrameWork VFP9 вы можете посмотреть в его директории, я уже вам это предлагал. Никаких ваших ни мнений, ни ТЗ, ни заказчиков там нет. Повторюсь - откуда вы все это берете, я не знаю. Что можете предъявить для подтверждения своих взглядов - тоже. Ваши примеры находятся в разных классах. Для DBF свой, для SQL свой - это разные вещи. Друг другу они не мешают. И я нигде не утверждал, что они одно и тоже - вы это опять мне придумали. К тому же в своем учебном примере для SQL вы смешали в одно два понятия - подключение и команду, на самом деле они находятся в разных процедурах. Кстати, USE и APPEND BLANK тоже. Как вы с такими ошибками что-то написали - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 21:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Такое впечатление, что в этом вопросе у вас полный сумбур. Чего только не перебрали в своих постах, живого места нет. Надо заметить, что вы умеете до блеска доводить отдельные процедуры. И довольно смутно себе представляете, как эти процедуры работают в комплексе. Но это можно исправить. Вот сырой код из уже упоминавшейся проседуры DoApp. Попробуйте запустить его из дочернего тестового приложения. И тогда, отлаживая поочередно процедуры, вы сами убедитесь, что проблемы с FrameWork совсем иные. LPARAMETERS tcCase LOCAL lcString,lcStr,llSuccess,i *lcString = goApp.oList.StrList('StrSet') lcString = 'Global,Check,Environment,SystToolbars,ProjectWindow,Screen,Splash,Table,Toolbar,Menu,Form' DO CASE CASE tcCase == 'Otkr' FOR i = 1 TO GETWORDCOUNT(lcString,',') lcStr = 'goApp.oSet.Do' + GETWORDNUM(lcString,i,',') + '("Otkr")' llSuccess = &lcStr IF !llSuccess MESSAGEBOX('Ошибка') RETURN .F. ENDIF THIS.nSetApp = i ENDFOR READ EVENTS CASE tcCase == 'Zakr' IF THIS.lClear RETURN ENDIF THIS.lClear = .T. && Защелка FOR i = THIS.nSetApp TO 1 STEP -1 lcStr = 'goApp.oSet.Do' + GETWORDNUM(lcString,i,',') + '("Zakr")' llSuccess = &lcStr IF !llSuccess MESSAGEBOX('Ошибка') ENDIF ENDFOR CLEAR EVENTS ENDCASE ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2013, 11:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Ну ладно - уже понятно про qqq == "Otkr", и qqq == "Zakr". В сочетании с названиями типа "SystToolbars" - красиво, спору нет. Давай уже за прогрессивный интерфейс! А то BROWSE да BROWSE... Прошлый век какой-то. Даже заказчики носом крутить начинают! R .S. Еще хотел спросить - а правду говорят, что grid и browse разные вещи? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2013, 12:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Никак не пойму, что такое R.S. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2013, 20:52 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ИВП.Никак не пойму, что такое R.S. ?Начиналось с такого: sg12поскипано... RS. Кстати, к вам и подмога подоспела, вовремя.GermanGMпоскипано... P.S. А "R.S" - это что обозначало-то: "Rectum scriptum" что ли? :) А тут у нас, скорее всего, "Redrik Says" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2013, 22:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Ваши примеры находятся в разных классах. Для DBF свой, для SQL свой - это разные вещи. Ну, наконец-то Вы соизволили согласится, что существуют РАЗНЫЕ классы для разных задач. Существует РАЗНЫЙ FrameWork! Теперь, наводящий вопрос: Вас будет интересовать класс для работы с файлами DBF, если Вы работаете с SQL-сервером? Второй наводящий вопрос: Вы сможете по невнятному изложению постановки задачи новичком определить, какой именно класс (FrameWork) его интересует? Третий наводящий вопрос: Сколько FrameWork-ов Вы готовы написать, чтобы удовлетворить все возможные запросы новичков? Заметьте, что сами Вы эти FrameWork использовать не будете. Они нужны будут только для ответов новичкам. ================== Чтобы Вы прониклись проблемой, показательный пример Все, абсолютно все, новички, которые пришли из Delphi задают стандартный вопрос: Как убрать (скрыть) основное окно FoxPro? Им даже в голову не приходит тот факт, что по-умолчанию, основное окно FoxPro скрывать не надо. Оно используется как основное окно готового приложения. Однако проблема в том, что FoxPro позволяет написать приложение и со скрытым основным окном FoxPro. Теперь смотрим, как изменится интерфейс приложения в зависимости от того, скрыто или нет основное окно FoxPro? - Если основное окно FoxPro используется, то меню создается одно общее на все приложение. В формах меню нет. - Если основное окно FoxPro скрыто (не используется), то меню создается в каждой форме свое. В результате, для общего меню нет необходимости писать объектную "обертку". Меню создается один раз при старте приложения. Банальным вызовом процедуры. Если же меню свое для каждой формы, то, разумеется, необходимо озаботится некой "оберткой" для генерации этого меню для каждой формы. Тут, безусловно, Ваш пример с объектом будет уместен. Так вот, если до Вас до сих пор не дошло. В зависимости от ответов на те вопросы, от которых Вы так небрежно отмахнулись, Вам придется писать РАЗНЫЕ классы. Создавать РАЗНЫЕ FrameWork. Иногда ПРИНЦИПИАЛЬНО отличающиеся друг от друга. И дело даже не в количество вариантов FrameWork (хотя их достаточно много), а в том, что каждый FrameWork сам по себе требует значительного времени как на разработку, так и на понимание того, почему сделано так, а не иначе. Нет единого стандарта FrameWork для приложений FoxPro Более того, нет даже хоть каких-нибудь рекомендаций "как правильно" писать приложения на FoxPro. Каталог FFC на который Вы постоянно ссылаетесь - это ПРИМЕР. Вы можете его использовать, но можете и НЕ использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 16:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ1- Если основное окно FoxPro используется, то меню создается одно общее на все приложение. В формах меню нет. 2- Если основное окно FoxPro скрыто (не используется), то меню создается в каждой форме свое. 3 - Пишется одна широкая ( модальная ) форма с меню, и внутри нее остальные формы. Чем отличается от 1? Наверное тем, что так зачастую выглядят приложения НЕ на FoxPro. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 18:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, Откуда вы все это берете? На ходу, что-ли сочиняете. Теперь Топформы и FFC приплели, да еще FrameWork-и, словно кроликов, начали разводить. Я уже делал вам замечание, что вам надо получше изучить девятый фокс. Придется по-порядку. Найдите в директории wizards файлы _framewk.vcx/framewk.vct. Чтобы вы ненароком не испортили свой VFP, скопируйте их в свою рабочую директорию. После этого запустите VFP9. В меню найдите пункт Tools-Class Browser. У вас откроется окно Class Browser, что, судя по всему, будет для вас неожиданностью. Откройте в нем этот _framewk.vcx и вы наконец-то увидите его, Framеwork. В меню щелкните пункт New, в открывшемся окне выберите пункт Class. В новом окне в строке Class Name напишите _MySQL, в Based On выберите пока Custom, в Store In выберите ваш _framewk.vcx И вы увидите свой _mySQL. Появившийся пункт меню Class позволит вам работать с ним, подробности в хелпе, он на русском языке. Повторите то же самое с _myDBF и _myTopForm. Как видите, они совершенно спокойно уживаются в этом одном _framewk.vcx и кушать не просят. А теперь прочтите то, что вы поднаписали. После это соберите где-нибудь все свои познания по этим вопросам в одном месте. И тогда, средней руки программист, знакомый с ООП, переложит вам ваши познания в ваши _My... Что касается FFC, то переварите пока то, что есть. После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 19:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Как ботинки надевать, Вы написали, следущим шагом будете показывать как шнурки завязывать? А если по существу, то работать с классами в VFP9 тут не только Вы умеете. Думаете, что тут только prg-файлами да формами программируют? Что Вы пытаетесь показать? Хотите создать универсальный класс приложения? Думаю он у многих уже есть. Опять же, как он будет устроен и как работать будете знать только Вы, мне например вовсе неохота будет разбираться в Вашем коде. Да и не бывает универсального класса приложения, для разных задач нужен разный подход. В каждом приложении будет использоваться именно тот набор классов, который необходим. Для некоторых задач достаточно и одного prg-файла. Когда придет время искусственного интеллекта, тогда будет Вам один мозг для любой задачи, а пока продолжаю грызть попкорн и следить за темой... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 23:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ИМХО, приводя контраргументы. все же надо учитывать очевидное скудоумие автора темы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 23:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 00:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, Я уже делал вам замечание - вы еще восемь лет назад запутались в понятиях и работу без Framework называете разработкой FrameWork. Но так можно любую некомпетентность назвать FrameWork - мало ли кто какие огороды городит в своих программах, они резиновые. Не знает человек, что формы можно передавать как объекты и сочиняет идентификаторы - он разрабатывает Framework. Не знаком человек с опцией LINKED и нагородил в своих программах что и показать стыдно - это он изобрел свой Framework. Студент, вместо того, чтобы привести в порядок таблицы, строит трехэтажные SELECT-ы - это он себе Framework изобретает. С такой идеологией и любители попкорна, набежавшие к вам на подмогу с ПустоТрепа, становятся крутыми знатоками ООП и орут на форуме громче всех об основах программирования, потому что нахрустели себе FrameWork. Вам осталось только кошкин пук назвать этим понятием. В FP9 один FrameWork, и где он находится, я вам показал. Тем более, что не только вам он в диковинку. Описание в хелпе. Продолжим по-порядку. Создайте для приложения новую директорию, например Test. Запустите VFP9. Выберите File-New-Class. В Class Name наберите хотя бы tt_mySQL, в Based In найдите свой _framewk, а в нем свой _mySQL, в Store In - tt_framewk. Щелкните по полученному классу и вы увидите в нем все свои процедуры. Они работают, хоть и пустые. Можете ничего там не писать или написать DODEFAULT(), или "::" или свои коды - это зависит от специфики приложения. И вызываются эти процедуры из любой точки приложения. Как видите, строка вызова заменит вам "изобретение" в каждом приложении в каждой форме своих "FrameWork". Это и есть один из элементов ООП, которым не только вы так любите козырять. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 09:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 10:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
геолог Чой-та мне напомнило Посмотрел ссылку, посмотрел на даты. Самого решения не стал смотреть, но зато заметил, что в ответ одно балабольство. И мой нынешний оппонент и там в этом преуспел. Да и не только там. Это уж любимое занятие в фоксе во все времена было, начиная от новичков и кончая гуру. Специфика. А уж в foxclub-е и подавно - там чтобы путное что-то найти, надо кучу мусора перерыть, аж утонуло все там в нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 10:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Вот одна из ваших цитат оттуда: Дата: 18.10.07 10:39:33 Любой Framework жестко завязан под конкретную постановку задачи и личные предпочтения программиста. Хоть к десятилетнему юбилею VFP9 вы посмотрите его хелп, надеюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 11:10 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Не знает человек, что формы можно передавать как объекты и сочиняет идентификаторы - он разрабатывает Framework. Не знаком человек с опцией LINKED и нагородил в своих программах что и показать стыдно - это он изобрел свой Framework. Студент, вместо того, чтобы привести в порядок таблицы, строит трехэтажные SELECT-ы - это он себе Framework изобретает. Если Вы думали пошутить, то Вы ошиблись. На самом деле, так оно и есть. Если бы Вы дали себе труд посмотреть статью в википедии, то поняли бы в чем дело. FrameWork - это вовсе не название какого-либо класса или библиотеки классов. Это прежде всего идея (концепция) того, как следует строить приложение. Совокупность ответов на те вопросы, от которых Вы по прежнему отмахиваетесь. Если Вам так будет понятнее - это ТЗ (тех.задание) Если все приложение целиком, все классы, процедуры и функции исходят из некой идеи, пусть "кривой", ошибочной и дилетантской, но общей для всего приложения, то вся эта совокупность и есть FrameWork. Вне зависимости от степени образованности того, кто это приложение написал. А вот то, на что Вы постоянно ссылаетесь (wizards, FFC) - это всего-лишь один из возможных вариантов Framework. Реализация одной из возможных концепций. Вы так и не хотите понять, что в FoxPro можно реализовать МНОГО самых разных Framework-ов. И то, что приведено в примерах, во-первых, очень далеко от идеала, а, во-вторых, не является обязательным для исполнения. Это всего-лишь пример того, как можно написать приложение. Но вовсе не значит, что именно так и надо писать. Это один из возможных вариантов. Именно поэтому, Ваша постоянная апеляция к некоему коду вызывает, мякго говоря, недоумение. Вы сначала определитесь что именно делать собираетесь. А уж как именно это сделать - второй вопросы. Вы же постоянно пытаетесь "надеть штаны через голову". Сначала пишите код, а потом ищете к чему бы его приспобить. ======================== А теперь вторая часть, от которой Вы постоянно отмахиваетесь, считая ее не существенной sg12Не знает человек, что формы можно передавать как объекты и сочиняет идентификаторы А Вы уверены, что в данном конкретном приложении реализация идеи идентификаторов не является осознаным выбором, а не следствием незнания? Многие программисты стараются всячески избегать передавать объекты как параметры, опасаясь сопутствующих проблем. sg12Не знаком человек с опцией LINKED и нагородил в своих программах что и показать стыдно С чего Вы решили, что опция LINKED является необходимой для написания приложения? Каким именно образом использование или не использование опции LINKED связано с качеством кода? Многие программисты вообще не используют файлы SCX, считая их "оставленными для совместимости" и вообще "тупиковой идеей". sg12Студент, вместо того, чтобы привести в порядок таблицы, строит трехэтажные SELECT-ы С чего Вы решили, что таблицы не в порядке или студент имеет возможность модифицировать структуру базы данных? Вы опять бежите впереди паровоза. Вы не знаете какую именно задачу решает человек и в каких условиях (ограничениях), однако навязываете ему инструмент. Ну, условно говоря, надо гвоздь забить, а Вы предлагаете отвертку. Да, конечно, отвертка тоже нужный инструмент. Но для закручивания/откручивания. А вовсе не для забивания. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 12:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ВладимирМ Вот одна из ваших цитат оттуда: Дата: 18.10.07 10:39:33 Любой Framework жестко завязан под конкретную постановку задачи и личные предпочтения программиста. И по прежнему согласен с этой цитатой! sg12Хоть к десятилетнему юбилею VFP9 вы посмотрите его хелп, надеюсь. Вы уже "споткнулись" на библиотеке _base.vcx посчитав, что имя файла (библиотеки) и есть реализация концепции (идеи). Теперь Вы повторяете ту же самую ошибку в отношении библиотеки _framework.vcx. Вы вообще-то сами строите приложение с использованием Application Wizards? Или используете библиотеку _framework.vcx как пример? В смысле, с чем-то соглашаетесь, что-то используете, но что-то и отбрасываете (не используете). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 12:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Ваша фантазия неистощима, скоро уж весь словарь компьютерных терминов перелистаете. Теперь слово "идея" вытащили и ищете, куда бы его приткнуть. Цитаты из ВАШЕЙ ссылки на статью, которую вам самим не грех бы прочитать: Фреймворк (англ. framework — каркас, структура) — структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек. Фреймворк определяется как множество конкретных и абстрактных классов, а также определений способов их взаимоотношения. Из хелпа VFP9: Базовый класс разработки приложений (framework) _application, кроме основных свойств и методов включает пять (5) базовых объектов построения приложения пользователя: cuserror, cusdatasession, cuswindowhandler, custablesort, and custablenav. Рассматриваемый базовый объект построения пользовательского приложения содержит стандартные методы и свойства, обеспечивающие основные механизмы манипулирования данными, позволяют развивать и усиливать функциональность предложенных методов и составляющих объектов Application Framework данной версии Visual FoxPro. Рассматриваемый объект _application, вместе с вспомогательными объектами размещается в библиотеке классов ...home()\Ffc\ _framewk.vcx. Такое впечатление, что на эту терминологию вы смотрите как на новые ворота. У вас в ходу все тот же самопальный козырь: "многие программисты ...". Да мало ли кто что придумывает в своих программах - на то оно и программирование. Ну и называйте это на здоровье своим словом - "что-то придумал", и не надо будет никому морочить голову. Но различать FrameWork и приложения вам пора бы уже научиться. И уж тем более отличать его от различных примеров-самоделок. Тем более, что FrameWork абсолютно не мешает заниматься подобным творчеством. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 14:37 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Из хелпа VFP9: Базовый класс разработки приложений (framework) _application, кроме основных свойств и методов включает пять (5) базовых объектов построения приложения пользователя: cuserror, cusdatasession, cuswindowhandler, custablesort, and custablenav. Рассматриваемый базовый объект построения пользовательского приложения содержит стандартные методы и свойства, обеспечивающие основные механизмы манипулирования данными, позволяют развивать и усиливать функциональность предложенных методов и составляющих объектов Application Framework данной версии Visual FoxPro. Рассматриваемый объект _application, вместе с вспомогательными объектами размещается в библиотеке классов ...home()\Ffc\ _framewk.vcx. А теперь читаем оригинал (English), правда для VFP8... Но Вы же сами говорили, что визарды остаются неизменными начиная с VFP3... Visual FoxPro Framework Application ObjectThe enhanced framework _application class includes, aside from its properties and methods, five objects: cuserror, cusdatasession, cuswindowhandler, custablesort, and custablenav. The application object contains code for standard methods and includes a set of new methods that provide most of the enhanced functionality of the enhanced Application Framework in this version of Visual FoxPro. You can access the details of _application and its contained objects in _framewk.vcx. Здесь и слова нет о "базовых" классах. Речь идет только о расширенной функциональности.... Да и перевод, мягко говоря, оставляет желать лучшего... Как будто переводил какой-то школьник-"двоечник"... Или Google-переводчик... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 15:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Переведите сами. Но от этого ничего не изменится. Ведь каждый может сам щелкнуть по этому FrameWork и убедиться в его существовании. Разумеется, кроме ВладимираМ - его ничем не проймешь, восьмилетняя закалка сказывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 15:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ВладимирМ Ваша фантазия неистощима, скоро уж весь словарь компьютерных терминов перелистаете. Теперь слово "идея" вытащили и ищете, куда бы его приткнуть. При чем здесь фантазия? Я это говорил с самого начала. Я НИГДЕ и НИКОГДА не подразумевал под термином FrameWork некую конкретную, кем-то сделанную, библиотеку классов из папки VFP. Это исключительно Ваши домыслы, основанные на полном не понимании того, чем Вы вообще занимаетесь. Имею в виду программирование вообще. Не важно на каком именно языке программирования sg12Цитаты из ВАШЕЙ ссылки на статью, которую вам самим не грех бы прочитать: Фреймворк (англ. framework — каркас, структура) — структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек. Фреймворк определяется как множество конкретных и абстрактных классов, а также определений способов их взаимоотношения. Правильно. Именно ЭТО я и имел в виду. Да, Framework - это некий комплекс инструментов. Весь вопрос в том, КАКИХ инструметов? Предназначенных для решения КАКИХ задач? Вы почему-то свято уверены, что этот самый набор инструментов существует в единственном числе. Более того, подходит для решения любых задач. С чего это вдруг? sg12Из хелпа VFP9: Базовый класс разработки приложений (framework) _application, кроме основных свойств и методов включает пять (5) базовых объектов построения приложения пользователя: cuserror, cusdatasession, cuswindowhandler, custablesort, and custablenav. Рассматриваемый базовый объект построения пользовательского приложения содержит стандартные методы и свойства, обеспечивающие основные механизмы манипулирования данными, позволяют развивать и усиливать функциональность предложенных методов и составляющих объектов Application Framework данной версии Visual FoxPro. Рассматриваемый объект _application, вместе с вспомогательными объектами размещается в библиотеке классов ...home()\Ffc\ _framewk.vcx. Вы вообще понимаете такой термин, как КОНТЕКСТ? В смысле, к чему именно все это говорится? Для решения КАКИХ задач используется? С чего Вы вообще решили, что именно при помощи Wizard-ов создается приложение? Кстати, я так от Вас и не услышал ответа на вопрос, Вы сами-то ЭТО используете? sg12Такое впечатление, что на эту терминологию вы смотрите как на новые ворота. У вас в ходу все тот же самопальный козырь: "многие программисты ...". Да мало ли кто что придумывает в своих программах - на то оно и программирование. Ну и называйте это на здоровье своим словом - "что-то придумал", и не надо будет никому морочить голову. Но различать FrameWork и приложения вам пора бы уже научиться. И уж тем более отличать его от различных примеров-самоделок. Тем более, что FrameWork абсолютно не мешает заниматься подобным творчеством. Вот не надо перекладывать свои проблемы на других. Это именно Вы никак не можете отличить некий термин "общей теории" от примера использования этого термина. Вы увидели название файла и почему-то решили, что имя файла - это и есть вся "теория". Имя же совпадает, чего еще надо? Причем Вы ведь даже не пробовали запускать этот пример. Не говоря уже о том, чтобы смотреть его код. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 15:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Развозить вы мастер, не отнимешь ... Хорошо, теперь посмотрим, что вы подразумеваете и что вы имеете в виду вообще. Согласно вашим утверждениям этих разных FrameWork-ов - тыщи ... Только на этих пяти страницах вы на пальцах описали их порядка двухсот - вы ведь не фантазировали, не правда ли ... Предъявите хотя бы пару десятков из них, пожалуйста. Что касается ответов на вопросы, то я их начал давать с начала темы. Вам достаточно начать ее читать сначала, пропуская те места, где вы переводите вопросы в балабольство. Повторяться я не буду, но если вопросы возникнут, то пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 16:22 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Кстати, вы заметили, что я с вами проделал трюк - мимоходом подставил вам абстрактные цитаты. А вы продолжаете так же абстрактно молотить свои монологи, словно с кем-то спорите. И вы так же абстрактно придумываете мне какие-то точки зрения, на которые сами же и отвечаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 16:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Google в помощь. На вскидку www.foxtools.com/vfp/foxpro-frameworks Плюс к этому, почти каждый разработчик делает свой framework. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 17:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ReeseGoogle в помощь. На вскидку www.foxtools.com/vfp/foxpro-frameworks Плюс к этому, почти каждый разработчик делает свой framework. Интерсная ссылка. Но где вы там увидели "каждый"? И почему вы в каждой теме на вопросы типа "как" не даете эту ссылку, раз там так просто все решено. Заглянут, нарисуют себе FrameWork, и ответ им готов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 17:52 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Reese, возможно даже чуть больше. около 60-ти... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 19:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGM Совсем как в анекдоте, свежем: Муж перед женой хвастается: "У нас ... у меня в-о-о-о-т такой Фреймворк!" Жена заглядывает, а там пискарик бултыхается ... в ведерке. Ох, уж эти пискомерщики ... хлебом их не корми. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 20:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, да нее, мы про другое. Ты, это... пиши, не расслабляйся. Открываем мы, значит, _framevork, создаем класс... Дальше-то что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 20:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, Теперь вернемся к вашему козырной карте - новичкам. Новичкам этот вопрос не нужен - им на 1С нужно переходить, если они хотят на свой бутерброд масло намазывать. Студентам тоже - у них такие же преподы-старперы рулят и после сдачи они все это забудут, как дурной сон. Местным троллям да ходокам с ПустоТрепа вообще все это нафиг, даже ваши монологи они не в состоянии осилить. Хотя родственную душу чуют, засуетились. Но вообще без них скучно. Если же о настоящих гуру - так они еще пять лет вняли предупреждению и ушли в другие языки и теперь они только посмеиваются над этими страстями - фокс для них только хобби. Огорчу вас - в некоторой степени я тоже принадлежу к этой категории, хоть и не гуру. С этим FrameWork я разобрался еще тогда, когда вы него и взглянуть боялись. Эта перестройка FrameWork может пригодится тем, кто по жизни лет на пять-десять все еще завязан на VFP, да и на FPD - пока не оказались у разбитого корыта. Но у многих настолько низок уровень и столько гонора, что сомнительна вообще какая-либо перестройка. GermanGM, вам-то это зачем. Настроение будет, загляну в ваш ПустоТреп, поразвлечься и лясы поточить порой я тоже не против. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 20:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Какой фрамеворк? Какие классы? CASE + SAY, GET, READ, APPEND BLANK, SCATTER & GATHER - всё, что нужно для супер-пупер-универсальной "оболочки" для новичков! Клацнул "скачать", дописал нечто вроде oapp.case("say") и продал шЫкарный продукт за мешок денег! P.S. Кстати, а откуда у "умирающего" фокса постоянно появляются новички? P.P.S. Разориться можно на проклятой кукурузе, "разорванной изнутри". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 22:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, мне "это" и впрямь незачем: FoxPro-шное окошко у меня давным-давно "подогнано по фигуре". Владимиру Максимову - тем более. Но вы-то явно рассчитываете на более широкую аудиторию, причем выбрав наиболее невыгодный для вас же стиль общения. Каждый имеет право на свою личную радикальную точку зрения, но в сферах деятельности, рассчитанных прежде всего на результат, подобные идеи должны прежде всего выдержать проверку временем и доказать свою практическую ценность. Пока этого не случилось, на них прочно будет висеть ярлык прожектерства. Плюс к тому вязкая, безапелляционная и явно оскорбительная манера излагать свое заведомо "единственно правильное" мнение, непонятно чего ради. Бессмысленный глумеж самоутверждения для? Неразумному школию, у которого еще юношеский максимализм не выветрился, а уже где-то зачесалось и пора начинать отстаивать свое место в стаде, это еще было бы простительно, но вы-то вроде как из этого возраста вышли? Или нет? Завалить собеседников словесным мусором, добиться того, что вас здесь перестанут воспринимать всерьез и уползти на какой-нибудь другой форум, где все начать сначала... В таком случае не вы первый и не вы последний. И несть вам числа ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2013, 22:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12, мне "это" и впрямь незачем: FoxPro-шное окошко у меня давным-давно "подогнано по фигуре". Владимиру Максимову - тем более. Но вы-то явно рассчитываете на более широкую аудиторию, причем выбрав наиболее невыгодный для вас же стиль общения. Каждый имеет право на свою личную радикальную точку зрения, но в сферах деятельности, рассчитанных прежде всего на результат, подобные идеи должны прежде всего выдержать проверку временем и доказать свою практическую ценность. Пока этого не случилось, на них прочно будет висеть ярлык прожектерства. Плюс к тому вязкая, безапелляционная и явно оскорбительная манера излагать свое заведомо "единственно правильное" мнение, непонятно чего ради. Бессмысленный глумеж самоутверждения для? Неразумному школию, у которого еще юношеский максимализм не выветрился, а уже где-то зачесалось и пора начинать отстаивать свое место в стаде, это еще было бы простительно, но вы-то вроде как из этого возраста вышли? Или нет? Завалить собеседников словесным мусором, добиться того, что вас здесь перестанут воспринимать всерьез и уползти на какой-нибудь другой форум, где все начать сначала... В таком случае не вы первый и не вы последний. И несть вам числа ы затронули очень много вопросов. 1. Этот стиль общения не я выбирал, он был до меня, причем давно. Просмотрите старые темы - затюкивали и куда более тактичных. 2. К сожалению, я не вижу большую практическую ценность от этой идеи, иначе я спокойно нашел бы более практичный путь еще лет пять-шесть назад. Для этого не нужна аудитория. 3. Ярлык прожекторства в Фоксе висел всегда и на всем. Единственное, что сделано благодаря энергии нескольких энтузиастов - перевод хелпа. 4. "Вязкая, безапеляционная и явно оскорбительная манера" - именно мне нескольких пришлось от этого отучать, не только ВладимираМ. 5. Смеюсь, а то и глумлюсь я только над явной глупостью, когда она у авторитетов прет из щелей. 6. Уж в стадном чувстве меня обвинять несерьезно, это вы упомянули для порядка. 7. Что касается словесного мусора - покажите посты оппонентов, не подходящих под это определение и я вернусь к этим вопросам. Redrik. Вы забыли упомянуть такое достоинство, что в командах достаточно написать четыре буквы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 00:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Разговор опять зашел в дебри перехода на личности и принципов ведения дискуссии, не раз расписанных классиками литературы... В качестве одного из завершающих аккордов я мог бы предложить рассмотреть тему под таким углом - не бывает "чистого фокспрошника" (что бы нам уважаемый sg12 тут не втирал). Поскольку создавать работоспособный код на Фоксе (или изучать его "не для галочки") можно только уже зная основы программирования, а также параллельно изучая другие реляционные СУБД. Таким образом, можно ли рассматривать FP (вижуал, не вижуал) как парадигму? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 04:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
off AndreTM, хорошее предложение! Еще страниц этак на 10 в том же духе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 08:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Redrik. Вы забыли упомянуть такое достоинство, что в командах достаточно написать четыре буквы. Виноват!!! Как можно было забыть такое? Расслабил булки, подлец! В самом ведь деле - в старые-добрые времена дефицита, когда каждый байт был на счету, команды таки действительно сокращались до 4-х букв с целью экономии места на дисках... Наверное неспроста CASE - это даже в сокращенном виде те же 4 буквы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 09:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMВ качестве одного из завершающих аккордов я мог бы предложить рассмотреть тему под таким углом - не бывает "чистого фокспрошника" (что бы нам уважаемый sg12 тут не втирал). Поскольку создавать работоспособный код на Фоксе (или изучать его "не для галочки") можно только уже зная основы программирования, а также параллельно изучая другие реляционные СУБД. Таким образом, можно ли рассматривать FP (вижуал, не вижуал) как парадигму? Это вы загнули. У меня от слова "Идея" психика чуть не пошатнулась, когда узнал, как его к фоксовскому _framewk можно приклеить. А вы тут новое слово вбрасываете - "парадигма". Опасная затея, этого я не выдержу. Лучше уж на уровне "общая теория - это имя файла" притормозить - вам попкорн, мне валидол. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 10:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
RedrikКакой фрамеворк? Какие классы? CASE + SAY, GET, READ, APPEND BLANK, SCATTER & GATHER - всё, что нужно для супер-пупер-универсальной "оболочки" для новичков! Клацнул "скачать", дописал нечто вроде oapp.case("say") и продал шЫкарный продукт за мешок денег! Одно другому не мешает. Не секрет, что уже в средних проектах коды запуска приложений становятся довольно запутанными - большое количество переменных и констант надо рассовать. Но его несложно переделать в простой и прозрачный код. Сам main.prg прост, если без наворотов: CD LEFT(SYS(16,0),RAT('\',SYS(16,0))) ... goApp = CREATEOBJECT() IF !goApp.DoApp('Otkr') goApp.DoApp('Zakr') ENDIF Сам код goApp.DoApp я давал, описание гибкого объекта oSetting, где попарно группируются все процедуры запуска/выхода тоже. Осталось вынести все параметры настроек в отдельный объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 11:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12... Разумеется, кроме ВладимираМ - его ничем не проймешь, восьмилетняя закалка сказывается. Сарказм - не аргумент. Закалка - вещь хорошая. А ВладимираМ и не надо ничем "пронимать". Я лично считаю, что он прав... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 11:10 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
pioner-v "Я лично считаю ..." - это довольно слабый аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 11:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12... CD LEFT(SYS(16,0),RAT('\',SYS(16,0))) ... Месье не знаком с функцией JUSTPATH()? Жаль... А то строка легким движением руки преобразуется в "простой и понятный вид": Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кийsg12... CD LEFT(SYS(16,0),RAT('\',SYS(16,0))) ... Месье не знаком с функцией JUSTPATH()? Жаль... А то строка легким движением руки преобразуется в "простой и понятный вид": Код: sql 1.
Если честно, то нет. Эта строка у меня с Tastrade времен, когда этой функции не было. Только сейчас обратил на нее внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12pioner-v "Я лично считаю ..." - это довольно слабый аргумент. Ваш аргумент - это Ваш аргумент. И я его уважаю независимо от содержания. Я высказал свое мнение. И здесь мне безразлично Ваше мнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 14:31 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Многие почему-то считают, чем сложнее код, чем больше команд, функций, классов в нем задействовано, тем умнее программист. Ребята, не знаю как для Вас, а лично для меня написание FOX'овского приложения сводится прежде всего к двум вещам: 1) Нормализация баз данных 2) Оптимизация запросов Все остальное - это детали, они, конечно, важны, но не настолько, <ИМХО> виртуозное владение классами принципиального значения не имеет... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 19:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Pulsar_p1) Нормализация баз данных 2) Оптимизация запросовНу так архитекторы и сидят, треская попкорн... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 20:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Что-то без вас скучно стало ... Еще раз попробуем зайти с другого бока, попроще. Разумеется, вы знакомы с родными установками Фокса типа SET(). Вот в соседней теме в очередной раз про них, традиционные вопросы с десятилетней бородой. Как всегда, поднаторевшие ГУРУ все также гордо вытаскивают из своих "фреймворков" те же традиционные SET("PRINTER"), заканчивая традиционным пренебрежительным "В хелпе". Но что, кроме вашей религии, помешало вам за эти "...цать" лет написать довольно несложную глобальную процедуру, где собраны эти SET(). Где вы могли бы один раз и на вечные времена изложить свои познания как строчки комментария. Объясните мне, профану, почему вы считаете этот второй подход ущербным, а первый - основами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 20:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ВладимирМ Что-то без вас скучно стало ... Еще раз попробуем зайти с другого бока, попроще. Разумеется, вы знакомы с родными установками Фокса типа SET(). Вот в соседней теме в очередной раз про них, традиционные вопросы с десятилетней бородой. Как всегда, поднаторевшие ГУРУ все также гордо вытаскивают из своих "фреймворков" те же традиционные SET("PRINTER"), заканчивая традиционным пренебрежительным "В хелпе". Но что, кроме вашей религии, помешало вам за эти "...цать" лет написать довольно несложную глобальную процедуру, где собраны эти SET(). Где вы могли бы один раз и на вечные времена изложить свои познания как строчки комментария. Объясните мне, профану, почему вы считаете этот второй подход ущербным, а первый - основами.Такое уже написано :) Именно для всех сетов, да еще и в нотации C# :) Плохо матчасть знаете :) Но имеете наглость учить других. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 21:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :) Плохо матчасть знаете :) Но имеете наглость учить других. Давайте матчасть поучим, кто против. Начнем с того, что форум фоксовский, а не C#. Прочтите пост, там предварительно упоминаналось о соседней теме. Выложите свою матчасть сюда, чтобы больше никто не тыкался с этими SET() чуть не в каждой пятой теме. И объясните не только ГУРУ, что с ней надо делать в следующий раз. Потом продолжим. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 21:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :) Плохо матчасть знаете :) Но имеете наглость учить других. Давайте матчасть поучим, кто против.Начинайте. Начнем с того, что форум фоксовский, а не C#.Ну и что? Написано то на фоксе, ка и требовалось. Просто есть одна фишечка в виде использования нотации .Net :) Прочтите пост, там предварительно упоминаналось о соседней теме.Зачем? Там есть что-то про написание оберток?Выложите свою матчасть сюда, чтобы больше никто не тыкался с этими SET() чуть не в каждой пятой теме.Во-первых, что мне делать не Вам указывать и на Вам мной командовать. Поменьше повелительного наклонения. Во-вторых, это не мое и давно написанное и давно забытое автором. Он тоже вначале как Вы все в универсальные классы хотел запихать. Потом таки до него кое-что дошло. В отличие от.И объясните не только ГУРУ, что с ней надо делать в следующий раз.Гуру как раз ничего объяснять не надо, а хамам, постоянно тыкающим словом "ГУРУ", это и так не нужно и бесполезно.Потом продолжим.Да неужели? Опять за нас будете решать что нам делать? Не много чести? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 21:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Вы что, неграмотный? Я конкретно предложил вам выложить сюда свою матчасть, чем вы рисанулись. И вы сразу заскромничали - это у вас стало "не мое и давно забытое". Если не можете это сделать, то что выпендриваетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 22:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Вы что, неграмотный? Я конкретно предложил вам выложить сюда свою матчасть, чем вы рисанулись. И вы сразу заскромничали - это у вас стало "не мое и давно забытое". Если не можете это сделать, то что выпендриваетесь.Да мало ли какой хам мне тут чего-то говрит? С какого перепугу мне его слушать и бежать выполнять его указания? Да и рисуется тут кто-то другой. Вы грозились начать изучать матчасть? Ну так гугл вроде еще работает, Вам надо - Вы и ковыряйтесь. Вам же присписчило всех поучить и посвергать авторитеты? Свергайте. :) А я всего лишь сообщил аудитории про Ваши заблуждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 22:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Теперь гугл зовете на помощь. Вы от себя можете хоть что-то предъявить? Вы ведь сами хвастанулись своей матчастью, за язык вас никто не тянул. Вы хоть с этими SET-функциями знакомы, писали их сами когда-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 23:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Теперь гугл зовете на помощь.Кто зовёт? Где зовёт? Не умеет отличать зов от предложения воспользоваться чем-то?Вы от себя можете хоть что-то предъявить?Могу. Но не хочу. Кое-кто рылом не вышел и не умеет себя вести.Вы ведь сами хвастанулись своей матчастью, за язык вас никто не тянул.Пруфлинк в студию. Особенно про "свою". Как Вы там Максимова обвиняли в придумывании за Вас чего-то там? Ну так вот сами придумали про "свою", сами с ней и разбирайтесь.Вы хоть с этими SET-функциями знакомы, писали их сами когда-нибудь?Да что Вы, какие еще set? Кроме Вас же тут никто ничего не знает и не умеет, фокс увидели в первый раз. Продолжаем внимать новоиспеченному гуру от фокса :) и ниспровергателю остальных ГУРУ. Так что Вы там еще нам хотели сообщить и на что открыть нам глаза? А доказательства необходимости такого открытия приведете? Ну чтобы уж все было по порядку. И не надо больше меня ни о чем спрашивать. Вы завели эту тему, Вы тут нас "просвещаете" - Вам и отдуваться. Я всего лишь пытаюсь поймать смысл Вашей писанины. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 23:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Предлагаю не переходить на личности, думаю, многие уже составили свое мнение о ТС, хотелось бы все таки увидеть продолжение: sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность. Вдруг окажется, что действительно для того чтобы вытащить данные из дбф и быстренько сделать отчет будет мало одной прг, и надо будет задействовать весь механизм, что нам предлагает ТС. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 00:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :) Плохо матчасть знаете :) Но имеете наглость учить других. Подведем итоги: - с матчастью вы сблефовали, - по делу вы ничего путного сказать не смогли. По теме. По терминологии от ВладимираМ это и наз. "основами программирования". Хотелось бы все-таки увидеть им рекламируемые "тыщи" FrameWork. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TВ принципе можно самому написать, только не на фоксе. Надо использовать функцию EnumWindows() а фокс не умеет адреса функций передавать как параметр. Можно с этого места подробнее ... Хотелось бы знать мнение знатока Winapi о так так называемых Callback-фунуциях и с чем их едят. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300Вдруг окажется, что действительно для того чтобы вытащить данные из дбф и быстренько сделать отчет будет мало одной прг, и надо будет задействовать весь механизм, что нам предлагает ТС. :-) Почему вы решили, что вся программная жизнь состоит из "вытащить данные из дбф и быстренько сделать отчет"? И почему решили, что ТС вам мешает сделать так как вам нравится? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Здравствуйте! А подскажите, я что-то не пойму, вставляю этот код в окно команд нажимаю энтер в конце последней строки, и оно мне ошибку пишет Что я делаю не так? Или это другим способом надо выполнять? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
вверху не дописал одну строку кода Код: sql 1.
но и с ней эта же ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:52 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
это стандартный пример с сайта MS, а он у меня не работает :( http://msdn.microsoft.com/en-us/library/6bzt9fh1(v=vs.80).aspx как правильно выполнять циклы и условия в VFP? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
TёMochkiN, это надо выполнять не в командном окне, а в программе (prg) или методе класса/формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglir, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 10:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirTёMochkiN, это надо выполнять не в командном окне, а в программе (prg) или методе класса/формы. Правильно. Но если очень надо, то после того как скопипастил в командное окно - выделить весь код, правая кнопка мыши, Execute selection Иначе выполняется строка на которой стоишь. Если стоишь на ENDFOR - получишь Nesting error ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 11:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Почему вы решили, что вся программная жизнь состоит из "вытащить данные из дбф и быстренько сделать отчет"? И почему решили, что ТС вам мешает сделать так как вам нравится? Я так не решал, это чисто Ваше мнение, не мое. Будет продолжение sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность. или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 11:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300Как ботинки надевать, Вы написали, следущим шагом будете показывать как шнурки завязывать? А если по существу, то работать с классами в VFP9 тут не только Вы умеете. Думаете, что тут только prg-файлами да формами программируют? Что Вы пытаетесь показать? Хотите создать универсальный класс приложения? Думаю он у многих уже есть. Опять же, как он будет устроен и как работать будете знать только Вы, мне например вовсе неохота будет разбираться в Вашем коде. Да и не бывает универсального класса приложения, для разных задач нужен разный подход. В каждом приложении будет использоваться именно тот набор классов, который необходим. Для некоторых задач достаточно и одного prg-файла. Когда придет время искусственного интеллекта, тогда будет Вам один мозг для любой задачи, а пока продолжаю грызть попкорн и следить за темой... Наклонившись, чтобы одеть ботинки, не спешите шнурки завязывать. Посмотрите, что еще по пути можно сделать. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 12:36 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :) Плохо матчасть знаете :) Но имеете наглость учить других. Подведем итоги: - с матчастью вы сблефовали,И можете это доказать?- по делу вы ничего путного сказать не смогли.О каком деле речь? Где тут дело? Или Ваш треп про портянки с case и прочий бред есть дело? По теме. По терминологии от ВладимираМ это и наз. "основами программирования". Хотелось бы все-таки увидеть им рекламируемые "тыщи" FrameWork.Пока я не видел от него рекламы. Рекламу же Ваших наработок тут уже цитировали. Ждем-с. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 14:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Да не волнуйтесь вы так, с кем не бывает. SET-функции и не такое могут преподнести. Подумайте, вспомните, где вы эту свою матчасть затеряли. Вы, случаем, ее с HELP не перепутали? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 15:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Да не волнуйтесь вы так, с кем не бывает.Так, с определением состояния оппонента тоже большие проблемы. :)SET-функции и не такое могут преподнести.Как я понимаю, у Вас есть диссертация на эту тему? Где бы почитать и просветиться?Подумайте, вспомните, где вы эту свою матчасть затеряли.Третий раз - пруфлинк в студию про "свою".Вы, случаем, ее с HELP не перепутали?Какая, однако, бурная фантазия! :) Боюсь, любителям попкорна грозят большие проблемы с со здоровьем в общем и с пищеварением в частности от Ваших изысков. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 15:45 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Вам просто хочется языком помолоть. Следующий вам вопрос, конкретно - у вас есть эти SET-функции, при запуске/выходе, хотя бы в одном приложении? Если эти приложения у вас вообще есть, что вызывает сомнение. Вы можете их представить, свои собственные SET-портянки? А я покажу, как вам надо их переделать, чтобы они у вас перестали быть портянками. Идет? Или опять блефанете? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:31 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Вам просто хочется языком помолоть.Вы опять сели в лужу. Следующий вам вопрос, конкретно - у вас есть эти SET-функции, при запуске/выходе, хотя бы в одном приложении?Давно уже нет. Уже давно все настроено. А Вы что подумали?Если эти приложения у вас вообще есть, что вызывает сомнение.А наличие у меня каких-то приложений как-то влияет на тот бред, который Вы тут несете? Или я перед Вами должен отчитаться по своим приложениям? Сами то что можете показать?Вы можете их представить, свои собственные SET-портянки?А они у меня есть? Вы опять что-то много за меня домысливаете :)А еще других обвиняте в домысливании.А я покажу, как вам надо их переделать, чтобы они у вас перестали быть портянками.Покажите, мы уже заждались и уже закормлены Вашими обещаниями нас поразить. Так когда? Почему до до сих пор еще не показали?Идет?Нет. Или опять блефанете?Опять Ваши фантазии. :) Блефуете пока что только Вы. Грозитесь, кормите нас обещаниями, но так ничегошеньки еще не показали. Мы дожемся хотя бы нормальной формулировки Вашей теории? Мы дождемся хотя бы нормальной формулировки проблемы, которую Вы так хотите обсудить? Или таки не обсудить, а пропиариться? Продемострировать собственную крутость? И понаехжать на ненавистных Вам местных "ГУРУ"? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Очевидно есть причины для "ненависти" А расскажи-ка, sg12, кто и на каком форуме тебя, сироту казанскую, обидел? :) И под какой личиной ты в то время флудил? Дружба с головой у тебя явно не сложилась, в FoxPro ты - ноль без проблеска, так что всего и осталось тебе - исходить словесным поносом. А мамка-то знает, чем эт ты с компьютером-то занимаешься?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 18:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov, Сдрейфил, орел? Не надоело вам пустомелить из поста в пост - кому нужно эти ваши портянки, это ваше из пустого в порожнее. Если уж вам так невтерпеж до чего докопаться, то закрывайте свой балаган, там посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 18:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGM Если уж Сизова вы к гуру причисляете - лучше уж на вашем родном ПустоТрепе это обсудим, попозже. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 18:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Валяй, валяй... :) "Заходи - не бойся, выходи - не плачь" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 18:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov, Сдрейфил, орел?Разводить на слабо еще не отучился? :) Не надоело вам пустомелить из поста в пост - кому нужно эти ваши портянки, это ваше из пустого в порожнее. Ты самокритичен, надо признать. :) Так когда закончишь пустомелить и выполнишь свои же обещания?Если уж вам так невтерпеж до чего докопаться, то закрывайте свой балаган, там посмотрим.Мой? Ты же завел эту тему, ты ту вещаешь и просветляешь... А там - это где? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 19:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12GermanGM Если уж Сизова вы к гуру причисляете - лучше уж на вашем родном ПустоТрепе это обсудим, попозже.На чьем это "вашем"? Родство докажешь? Ты меня на ПТ видел хоть раз? Докажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 19:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey SizovТак когда закончишь пустомелить и выполнишь свои же обещания Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 19:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность. Так обещанное продолжение все таки будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 19:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность. Так обещанное продолжение все таки будет? Да, конечно. Ради вас я даже на ваш лексикон шнурков и ботинок перешел. Вы что, не прочитали? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 20:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Есть такая поговорка: "Не ошибается тот кто ничего не делает". Судя по 8 страницам топика его автор решил не ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 21:10 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЕсть такая поговорка: "Не ошибается тот кто ничего не делает". Судя по 8 страницам топика его автор решил не ошибаться. В этот раз вы правы. Как видите, испытанный процесс затюкивания пока буксует. И, похоже, это раздражает не только вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 21:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Как видите, испытанный процесс затюкивания пока буксует.Не обольщайтесь, сударь, Вы тут никому не нужны и затюкивание Вас никому никаких лавров не принесет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 21:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey SizovТак когда закончишь пустомелить и выполнишь свои же обещания Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал.А оно мне надо? Чего сказать-то хотели? Так когда будет обещанные свержение авторитетов и слом стереотипов? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 21:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12пропущено... Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал.А оно мне надо? Чего сказать-то хотели? Так когда будет обещанные свержение авторитетов и слом стереотипов? Если вы не в состоянии даже найти этот файл, то чего у вас свергать-то ... было бы что. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 21:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizovпропущено... А оно мне надо? Чего сказать-то хотели? Так когда будет обещанные свержение авторитетов и слом стереотипов? Если вы не в состоянии даже найти этот файл, то чего у вас свергать-то ... было бы что.Откуда уверенность, что я его не могу найти? Каким образом ненахождение мной этого файла Вам мешает выполнить свои обещания? А если бы я тут ничего бы не писал, то свои обещания Вы точно не выполнили бы? Ибо без меня Вы их выполнить не можете? И мое нежелание искать уже давно мне известное поставит крест на выполении Вами Ваших же обещаний? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 22:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Да, конечно. Ради вас я даже на ваш лексикон шнурков и ботинок перешел. Вы что, не прочитали? Ну почему же? Прочитал. И это не мой лексикон, просто привел пример аналогии, что Вы хотели показать то, что многим и так известно. Разве это не очевидно? Предлагаю все таки Вам продолжить, а то словесная перепалка может длиться бесконечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 22:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Надо же, как загнули - сразу и не поймешь, о чем это ... Ваша некомпетентность с эти файлом свидетельствует о том, что вы выдумали себе какие-то обязательства по отношению к себе, что связано с вашим высоким мнением о себе, обратно пропорциональным вашей компетентности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 23:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300 Зачем предлагать, да еще в таком тоне - вы ведь не Владимир Максимов. И эта вами скопированная строка была адресована ему, а не вам. К вашему сведению, это авторитетный гуру и непререкаемый авторитет по многим вопросам. И пусть вас не смущает тон дискуссии - этот вопрос будет продолжен, когда он примет это решение. Или если проработанность ваших вопросов достигнет такого же уровня. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 23:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 , из Вас получился бы отличный политик. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 23:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TПравильно. Но если очень надо, то после того как скопипастил в командное окно - выделить весь код, правая кнопка мыши, Execute selection Иначе выполняется строка на которой стоишь. Если стоишь на ENDFOR - получишь Nesting error спасибо!!! теперь и это буду знать, очень пригодится! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 00:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300 sg12 , из Вас получился бы отличный политик. Политика здесь не при чем, надо знать проблематику вопроса. В Интернете давно сложился тип людей - типа голубей. Здесь клюнут, там поклюют - глядишь, к вечеру и насытились. Кинешь горсть крошек со стола - слетаются. Поклевали - разлетелись. Это даже не хобби, это образ жизни, вырабатывается он годами. И они занимаются этим с увлечением, своего рода компетентность - обо всем и ни о чем. Определить принадлежность оппонента к этой категории нетрудно - надо быстренько проверить глубину их компетенности. Уточнение вопроса в конкретику их раздражает, а то и озлобляет, т.к. бьет по их самолюбию. Типичная их реакция - "СамТыКто". Таких людей лучше использовать как поверхностные справочники, когда самому лень заниматься поиском информации. Но вопрос, вынесенный в заголовок темы не для этой категории людей по определению - за пару дней и даже недель его не осилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 09:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300 От совета по шнуркам и ботинкам вы напрасно так легкомысленно отмахнулись. Это хоть и иносказательное, но довольно точное определение вашей ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 10:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Поциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 10:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12tor300 От совета по шнуркам и ботинкам вы напрасно так легкомысленно отмахнулись. Это хоть и иносказательное, но довольно точное определение вашей ситуации. Ну как бы это сказать помягче... "Не говорите, что мне делать... И не скажу куда Вам идти..." (С), не моё sg12Определить принадлежность оппонента к этой категории нетрудно - надо быстренько проверить глубину их компетенности. Уточнение вопроса в конкретику их раздражает, а то и озлобляет, т.к. бьет по их самолюбию. Типичная их реакция - "СамТыКто". Пока что не было никакой конкретики, никакого кода, который можно было бы обсуждать. Одни пространные рассуждения "ни о чем"... А попытки "уточнения вопроса в конкретику" Вас почему-то "раздражает, а то и озлобляет, т.к. бьет по самолюбию"... Выложите работающий пример, который бы наглядно демонстрировал Ваши идеи и разбивал в пух и прах критику оппонентов! Если нет, то о чем тогда вообще разговор? О "сферическом коне в вакууме"? Если так, то делаем логичный вывод, что "это даже не хобби, это образ жизни, вырабатывается он годами. ... компетентность - обо всем и ни о чем." ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 10:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMПоциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :) +1 Истинный политик, никакой конкретной информации, один бред (мое личное мнение, можешь не отвечать, твой диагноз ясен, пришел сюда самоутверждаться? ). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 10:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Предыдущее сообщение адресовано sg12 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Взгляните на название темы - речь идет не о кодах. Да и на этот вопрос я уже отвечал - если даже я выложу какие "чудо-коды", то что изменится. Если даже несколько начальных кусков кода у некоторых уже вызвали нервный зуд. А перевод вопроса в русло "СамТыКто" я только что комментировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300GermanGMПоциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :) +1 Истинный политик, никакой конкретной информации, один бред (мое личное мнение, можешь не отвечать, твой диагноз ясен, пришел сюда самоутверждаться? ). Возможно. Как видите, пара постов и вы нашли свое место в шеренге. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Надо же, как загнули - сразу и не поймешь, о чем это ...Ну, Вы на протяжении всего топика демонстрируете слабые мыслительные способности. Ваша некомпетентность с эти файломНекомпетентность в чем? В выполнении Ваших мечтаний? Да, в этом я некомпетентен. А я их должен выполнять? Я брал на себя какие-то обязательства? свидетельствует о том, что вы выдумали себе какие-то обязательства по отношению к себе,Доказательсятва сего в студию. что связано с вашим высоким мнением о себе, И доказательства эт ого тоже.обратно пропорциональным вашей компетентности.Логический вывод сделанный на основе ложных утверждений ложный. Вы продолжате настойчиво демонстрировать свои очень "своеобразные" видение мира и трактовку событий и фактов. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Орел вылетел на охоту, поклевать. И что в этот раз я должен отвечать вам? Продолжать эту вашу перебранку - ваши способности мне известны. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey SizovЛогический вывод сделанный на основе ложных утверждений ложный.Не ложный, а неопределённый. Т.к. хотя (false ==> false) = true., но и (false ==> true) = true (вспоминаем мат. логику :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:00 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Вот такая статья на глаза попалась. Просто inner join :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, авторПо-моему, эту функцию можно использовать и без скриптов, примерно так: loWMI = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\.\root\cimv2") loItems = loWMI.ExecQuery("Select * From Win32_Printer") FOR EACH loItem in loItems IF loItem.Attributes and 4 RETURN loItem.WorkOffLine ENDIF ENDFOR Твоя копипаста? (из соседней темы...) без тынца и "с", ессно... Вот этот вот кусок кода поясни, твое ведь "гениальное улучшение" : Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:13 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirSergey SizovЛогический вывод сделанный на основе ложных утверждений ложный.Не ложный, а неопределённый. Т.к. хотя (false ==> false) = true., но и (false ==> true) = true (вспоминаем мат. логику :)) Вот где я с вами согласен! Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан! GermanGM, вы меня ошарашили глубиной своих познаний. Сменили поклевку? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12, авторПо-моему, эту функцию можно использовать и без скриптов, примерно так: loWMI = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\.\root\cimv2") loItems = loWMI.ExecQuery("Select * From Win32_Printer") FOR EACH loItem in loItems IF loItem.Attributes and 4 RETURN loItem.WorkOffLine ENDIF ENDFOR Твоя копипаста? (из соседней темы...) без тынца и "с", ессно... Вот этот вот кусок кода поясни, твое ведь "гениальное улучшение" : Код: vbnet 1.
Если бы там было не "and", а "&" то я бы сказал, что третий бит проверяется на равенство 1.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка? Я не знаю, эту 4-ку я в первый раз увидел. Спросить как-то постеснялся. Поясните, что она означает, раз вы на WMI и скрипты решили переключиться - ничего не имею против, только приветствую такую вашу переквалификацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 13:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12GermanGMsg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка? Я не знаю, эту 4-ку я в первый раз увидел. Спросить как-то постеснялся. А чего стесняться? Спроси у того кто этот пост писал. Там уверенно написано. Видно что человек знает и понимает чего пишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 13:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12пропущено... Я не знаю, эту 4-ку я в первый раз увидел. Спросить как-то постеснялся. А чего стесняться? Спроси у того кто этот пост писал. Там уверенно написано. Видно что человек знает и понимает чего пишет. Там написано "примерно так". Могу и у вас спросить, что это означает, "писькомерянием" не страдаю. Станислав С...кий. Вы не для таких вот ГУРУ предложили мне выложить коды? Представляете, чем они изойдут, если я выложу класс для работы с WMI. Не отмоешься потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 13:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, да причем тут WMI со скриптами. Нельзя бездумно "перекладывать" VBscript на FoxPro-шный диалект. Можно-то конечно, можно, вот только работать не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 13:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Орел вылетел на охоту, поклевать.Спасибо за информацию, но Ваш род занятий тут уже известен.И что в этот раз я должен отвечать вам?Желательно правду, а идиотизмы. Хоть один ответ на хоть один вопрос будет?Продолжать эту вашу перебранку - ваши способности мне известны.Да неужели? Где, когда и при каких обстоятельствах Вы их узнали? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан!Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:10 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 "писькомерянием" не страдаю.Да неужели? А кто тут постоянно пытается меряться с ГУРУ? Станислав С...кий. Вы не для таких вот ГУРУ предложили мне выложить коды?Таких - это КАКИХ? Определение дадите?Представляете, чем они изойдут, если я выложу класс для работы с WMI.А он есть? :) Вы такой знаток ГУРУ? Где и когда Вы их так изучили?Не отмоешься потом.Ну так не надо надо пИсать против ветра. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
[quot Sergey Sizov]Желательно правду, а идиотизмы. Хоть один ответ на хоть один вопрос будет?[quot ]Читать так: Желательно правду, а НЕ идиотизмы. Хоть один ответ на хоть один вопрос будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12, да причем тут WMI со скриптами. Нельзя бездумно "перекладывать" VBscript на FoxPro-шный диалект. Можно-то конечно, можно, вот только работать не будет "Причем WMI со скриптами" вы можете уточнить, прочитав пост полностью. Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать. Sergey Sizov, вроде на все ваши вопросы я отвечаю, неужели вы опять в обиде. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12что вам стоит эту функцию доработать. Ключевое слово "стоит". Ты сразу уточняй сколько ты платишь за конкретную работу. А то от тебя всем идет куча тупых предложений работу поработать. Может кто и не против если оплата достойная. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12что вам стоит эту функцию доработать. Ключевое слово "стоит". Ты сразу уточняй сколько ты платишь за конкретную работу. А то от тебя всем идет куча тупых предложений работу поработать. Может кто и не против если оплата достойная. Рассмешили ... Ладно - процент от прибыли. Только вот ведь незадача - чтобы за работу платили, надо ее уметь делать. Отсюда и процент. Это ведь вам не студенческие курсовики, выпендриваться не получится. Освоите хотя бы goApp - проценту поболе ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 15:44 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан!Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп? Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение. А если нет, то что обижаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 15:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov, вроде на все ваши вопросы я отвечаю, неужели вы опять в обиде.Это вам только кажется. Пока еще ни на один вопрос ответа нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 17:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizovпропущено... Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп? Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение.Утверждения Ваши, Вам и доказывать.А если нет, то что обижаться.Очередная демонстрация альтернативного видения мира. Где увидел обиду? Доказательства обиды будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 17:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12пропущено... Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение.Утверждения Ваши, Вам и доказывать. Суслика видишь? - Нет. А он есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 17:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizovпропущено... Утверждения Ваши, Вам и доказывать. Суслика видишь? - Нет. А он есть.Слив засчитан, треп продолжается. ps: модератор, может пора уже закрыть сей топик? ибо конструктива ноль, есть только беспардонные наезды и раздача оценок всем вокруг от топикстартера с полным отказом оного отвечать на вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 17:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Какой конкретно вопрос вас интересует? Только без базара. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 17:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovps: модератор, может пора уже закрыть сей топик? Не надо. Он в других топиках гадить начнет. Пусть ходит под себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 18:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Ладно - процент от прибыли. поконкретнее, в цифрах. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 18:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TSergey Sizovps: модератор, может пора уже закрыть сей топик? Не надо. Он в других топиках гадить начнет. Пусть ходит под себя. Sergey Sizov Вы только что жаловались модератору на "беспардонные наезды и раздачу оценок" А это как на вашем языке называется? Я кого-нибудь затаскиваю в эту тему насильно, чтобы мне здесь писали гадости? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 18:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Ладно - процент от прибыли. поконкретнее, в цифрах. Пожалуйста. 0% работы - 0% прибыли. 100% работы - все забираете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 18:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12100% работы - все забираете. Я так и делаю. Объясни зачем мне нужны советчики что я должен делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 18:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12100% работы - все забираете. Я так и делаю. Объясни зачем мне нужны советчики что я должен делать? Ну и делай, кто тебе мешает? Если эта тема тебя так нервирует, то так и скажи. Гадить-то зачем, а обвинять другого? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:00 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Не надо. Он в других топиках гадить начнет. Пусть ходит под себя. Sergey Sizov Вы только что жаловались модератору на "беспардонные наезды и раздачу оценок" И опять двадцать пять, опять демонстрация альтернативного видения мира. Где жалоба? Не умеем отличать жалобу от преложения?А это как на вашем языке называется?На чьем это "вашем"? А у ВАс какой-то другой язык?Я кого-нибудь затаскиваю в эту тему насильно, чтобы мне здесь писали гадости?Тема не Ваша и писать тут может кто угодно. И не Вам возмущаться, Вы тут уже гадостей про других в несколько раз больше написали. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Sergey Sizov Какой конкретно вопрос вас интересует? Только без базара.Прелестно. Значит так: кончаешь свой балаган и свое клоунское кривлянье и нормальным русским техническим языком без наездов на кого бы то ни было и прочего хамства, без обсуждения чьих-либо знаний, умениц и желаний излагаешь свое видение темы топика. Вопрос ясен? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12Sergey Sizov Какой конкретно вопрос вас интересует? Только без базара.Прелестно. Значит так: кончаешь свой балаган и свое клоунское кривлянье и нормальным русским техническим языком без наездов на кого бы то ни было и прочего хамства, без обсуждения чьих-либо знаний, умениц и желаний излагаешь свое видение темы топика. Вопрос ясен? Я повторяю: Какой конкретно вопрос по теме вас интересует? Если же вам хочется только со мной побазарить, то я опять вам предлагаю для этой цели "ПростоТреп". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Я так и делаю. Объясни зачем мне нужны советчики что я должен делать? Ну и делай, кто тебе мешает? Если эта тема тебя так нервирует, то так и скажи. Гадить-то зачем, а обвинять другого? чего тать нервничать? Может я чего не знаю в этой жизни, поэтому искренне интересуюсь, пытаюсь понять чем мотивированы и на чем основаны подобные заявления: sg12Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать. PS Без обид. Может я на психиатра заочно учусь. А тут такая шикарная лабораторная :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tчего тать нервничать? Может я чего не знаю в этой жизни, поэтому искренне интересуюсь, пытаюсь понять чем мотивированы и на чем основаны подобные заявления: sg12Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать. PS Без обид. Может я на психиатра заочно учусь. А тут такая шикарная лабораторная :) У вас действительно болезненное восприятие. Но на психиатора учатся не в очереди к нему на прием, что в вашем случае выглядит более правдоподобно. И чем эта строка вас так занервировала? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12И чем эта строка вас так занервировала? Ничем. Просто первая попавшаяся строка. Можно заменить на другую, например эту sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 19:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12И чем эта строка вас так занервировала? Ничем. Просто первая попавшаяся строка. Можно заменить на другую, например эту sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. Если ничем, то зачем вы ее опять мусолите? Строка как строка, разве нет слова "напильником". А эта новая строка чем вас так возмутила? Уж FSO в Фоксе не бог весть какая невидаль. Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 20:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
IF loItem.Attributes and 4 автор— А я ромашки собираю, — сказал asd_rider. — Раз — ромашка, два — ромашка!.. — Три — ромашка! — сорвал третью ромашку sg12 и запел: пять — ромашка, шесть — ромашка... — Семь — ромашка, — подхватил asd_rider. — придумал! — Закричал он. — Надо подарить фоксистам ромашки! — Погоди! — сказал sg12. — Четвертую надо сорвать... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 22:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Какой конкретно вопрос по теме вас интересует?Корректная\ формулировка основной темы топика. У Вас трудности с пониманием? Если же вам хочется только со мной побазарить, то я опять вам предлагаю для этой цели "ПростоТреп".Вы опять себе льстите и опять демонстритуете неумение правильно оценивыать факты и события. Ну то есть альтернативное восприятие мира. Вы мне совершенно не интересны. Интересно ЧТО же такое Вы нам тут обещали показать, но скрываете не хуже партизана. ps: в слове "психиатр" нет буквы "О". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 23:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте.Не Шутейко, а Шутенко. Кстати, вы его книгу читали? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 23:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovps: в слове "психиатр" нет буквы "О". Верно. Значит вы с ДимойТ из одной очереди, на этом я вас и поймал. Теперь не отвертитесь. ЗЫ. То-то вы синхронизировались .... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 23:52 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov Вы мне совершенно не интересны. Интересно ЧТО же такое Вы нам тут обещали показать, но скрываете не хуже партизана. Вы уж совсем ... того ... словно мальчик пляшет перед девочкой: "Сними да покажи!" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 23:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте.Не Шутейко, а Шутенко. Кстати, вы его книгу читали? А что там у него есть интересного? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 00:01 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizovsg12Какой конкретно вопрос по теме вас интересует?Корректная\ формулировка основной темы топика. У Вас трудности с пониманием? Так вы начните тему просто читать - по пять раз вопросы разжеваны, куда уж дальше. А коды попробуйте набирать - может что и у вас начнет получаться ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 00:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Sizov ps: модератор, может пора уже закрыть сей топик? ибо конструктива ноль, есть только беспардонные наезды и раздача оценок всем вокруг от топикстартера с полным отказом оного отвечать на вопросы. Модератор: Хороший вопрос. Может перенести топик в ПТ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 00:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Модератор Вопрос... Не-не-не... Зачем? Здесь мы для поднятия настроения, потребляя продукт переработки злака, наблюдаем ректальное производство стройматериалов топикстартером. А там его местные гуру в два-три поста прихлопнут... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 02:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey ChМодератор: Хороший вопрос. Может перенести топик в ПТ?Давно пора ибо ничто фоксовое тут уже давно не обсуждается. Да и топикстартер сильно напрашивается на паузу для изучения норм поведения в обществе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 10:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM.... А там его местные гуру в два-три поста прихлопнут... Не сразу, подергается немного... А здесь ему не место. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 10:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey SizovSergey ChМодератор: Хороший вопрос. Может перенести топик в ПТ?Давно пора ибо ничто фоксовое тут уже давно не обсуждается. Да и топикстартер сильно напрашивается на паузу для изучения норм поведения в обществе. Вы же сами его и кормите А от тупо глумится над всеми, кто с ним встревает в разговор. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 14:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
...Да и, кстати, - где он? Куды подевался? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2013, 15:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Притихли что-то ГУРУ ... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 14:56 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Притихли что-то ГУРУ ... Модератор: Видимо все ожидают переноса топика в ПТ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 18:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Chsg12Притихли что-то ГУРУ ... Модератор: Видимо все ожидают переноса топика в ПТ Интересно будут смотреться слова "Основы FoxPro" рядом с темами про гопников, гинекологов и инопланетян . А еще интереснее будет поглазеть, когда там местные гуру начнут разглядывать эти фокспрошные страсти. Если же опять вернуться к теме, то опять тот же вопрос - а вообще, они существуют, эти "Основы программирования в VFP9"? Неужто здесь нет никого, кто за восемь лет его существования не попытался найти хоть какой-то маломальский ответ на этот вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 19:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T, Отличная идея,тем более что сам использую такие форму, взаимодействующие также. А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 19:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Dima T, Отличная идея,тем более что сам использую такие форму, взаимодействующие также. А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ? И попутно опять вопрос - почему вы это делаете в форме, а не в классе? А в форме не добавляете только изменения, вроде столбцов? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 20:01 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12thunder2Dima T, Отличная идея,тем более что сам использую такие форму, взаимодействующие также. А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ? И попутно опять вопрос - почему вы это делаете в форме, а не в классе? А в форме не добавляете только изменения, вроде столбцов? Что именно "ЭТО" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 20:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Что именно "ЭТО" ? Например, ваше "взаимодействие форм", если оно решено в родительских классах - почему тогда у вас форма должна отреагировать на изменения столбцов, да еще адаптироваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 20:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12thunder2Что именно "ЭТО" ? Например, ваше "взаимодействие форм", если оно решено в родительских классах - почему тогда у вас форма должна отреагировать на изменения столбцов, да еще адаптироваться? По-моему у вас "каша" в голове. Во-первых, я не говорил, что что-то где-то решено. Я сказал, что использую такой же подход. Во-вторых, меня интересует совсем другое и я хотел бы дождаться ответа от DimaT. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2013, 21:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12... Если же опять вернуться к теме, то опять тот же вопрос - а вообще, они существуют, эти "Основы программирования в VFP9"? Неужто здесь нет никого, кто за восемь лет его существования не попытался найти хоть какой-то маломальский ответ на этот вопрос? А зачем? Если Вы читаете по английски - написано много хороших книг на эту тему: www.hentzenwerke или полный список Владелец этого сайта Whil Hentzen сделал очень много в свое время по популяризации FoxPro. В этом издательстве даже есть книга, как правильно (по мнению авторов) написать свой Framework... Happy reading! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 00:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Dima T, Отличная идея,тем более что сам использую такие форму, взаимодействующие также. А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ? Не только справочники. Есть класс формы для правки документов с табличной частью. В VFP9 c появлением Anchor компоновка форм значительно упростилась. Таблицы в DE, поэтому добавление/изменение полей/колонок с помощью мыши. Последнее время работаю в основном с MS SQL, поэтому использую курсор-адаптеры в DE. В общем трудоемкость создания минимальная. Основные трудозатраты на заточку тяжелых часто используемых форм, дописывание туда специфики конкретной задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 06:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T Если судить только по вашим довольно скромным описаниям вы все делаете в формах, которые заготовили на все случаи жизни. А классы используете как хранилище для этих форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 14:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T Если судить только по вашим довольно скромным описаниям вы все делаете в формах, которые заготовили на все случаи жизни. А классы используете как хранилище для этих форм. Прежде чем судить надо почитать то что я писал Dima TБазовый класс "БазоваяФорма". От нее унаследованы ФормаСправочник, ФормаРедактирование и вообще все классы форм. Вобщем все построено на классе БазоваяФорма. Классы я использую как хранилище повторно используемого кода. Для этого собственно они в ООП и задуманы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 14:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T Ваше запутанное "я писал" и "БазоваяФорма" не мешают вам "все делать в формах". А вот про ваши "хранилища кода" и ваше "задуманное" ООП можно подробнее, что-то интересно стало. Из хелпа: Visual FoxPro поддерживает как стандартное процедурное программирование, так и мощное и гибкое объектно-ориентированное программирование. Объектно-ориентированный разработка и объектно-ориентированное программирование являются более современными и прогрессивными по сравнению со стандартным процедурным программированием. Вместо того, чтобы думать о программе как о процессе последовательного выполнения строк кода, теперь надо думать о создании объектов. Вы можете создавать объекты и манипулировать ими как самостоятельными компонентами приложения и применять их как в своих задачах, так и предоставлять для использования другим разработчикам. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 20:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T Ваше запутанное "я писал" и "БазоваяФорма" не мешают вам "все делать в формах". "Все делать в формах" это что по твоему? Ты распиши поподробнее как ты понял мною написанное. sg12А вот про ваши "хранилища кода" и ваше "задуманное" ООП можно подробнее, что-то интересно стало. Что конкретно интересует? Практические вопросы задавай. Не вижу смысла сферических коней в вакууме обсуждать. Я это умею - но не люблю лекции читать. Нужна теория - читай книги. Например ту что Сергей посоветовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 20:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T "Все делать в формах" - у вас нет даже упоминаний о классах объектов. И я "понял" так, что вы эти объекты программируете уже непосредственно в формах. Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится. Практический вопрос - свои интригующие "кодохранилища и ЗООП" вы сами придумали? Это что-то новое. Да еще на ходу под них какие-то теории подводите, под "сферических коней в вакууме". Зачем выдумывать, если описание ООП есть в хелпе, с примерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 16:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T "Все делать в формах" - у вас нет даже упоминаний о классах объектов. И я "понял" так, что вы эти объекты программируете уже непосредственно в формах. Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится. Неправильно понял. Есть классы форм, на всех кроме базовой есть контролы. Есть класс формы для правки, на форме кнопки "Сохранить, Отмена" , там все прописано. Когда мне надо форму редактирования записи справочника - я просто создаю форму на основе класса формы правки и получается готовая форма с кнопками "Сохранить, Отмена". Есть класс формы справочника где грид и кнопки "Добавить, Правка, Удалить ...". и т.д. и т.п. Зачем кнопки выносить в отдельный класс? Лично мне никогда не требовались кнопки "Сохранить, Отмена" без формы или форма с двумя парами кнопок "Сохранить, Отмена". Всегда нужна форма на которой одна пара кнопок "Сохранить, Отмена". В отдельные классы вынесено только то что может повторяться несколько раз на форме или использоваться без формы. На все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 17:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima T "Все делать в формах" - у вас нет даже упоминаний о классах объектов. Уважаемый, вы из какого ПТУ пришли ? Вы вообще VFP хоть раз запускали ? Формы в VFP давно являются классами. Перестаньте нести бред. То что вы смешиваете в одном методе разные действия свидетельствует о мягко говоря слабой теоретической подготовке. Может вам освежить знания парадигмы ООП ? А то, ей богу, стыдно за вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 20:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tthunder2Dima T, Отличная идея,тем более что сам использую такие форму, взаимодействующие также. А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ? Не только справочники. Есть класс формы для правки документов с табличной частью. В VFP9 c появлением Anchor компоновка форм значительно упростилась. Таблицы в DE, поэтому добавление/изменение полей/колонок с помощью мыши. Последнее время работаю в основном с MS SQL, поэтому использую курсор-адаптеры в DE. В общем трудоемкость создания минимальная. Основные трудозатраты на заточку тяжелых часто используемых форм, дописывание туда специфики конкретной задачи. Я не получил ответа. Задам вопрос конкретно: имеем форму "Редактирование записи" (пока не важно чего Справочник или другой объект ИС). Изначально для этой записи была получена тем или иным способом форма (для sg12 - объект класса Form в терминах ООП). Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ? Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ? Спасибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2013, 20:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ? Если поменять тип поля то ничего криминального в форме не случится. Текстбоксу без разницы какой тип поля ему достался. Гриду тоже. Другое дело код где это поле используется, его весь перелопатить придется. По-хорошему о типе поля надо думать на этапе проектирования. Я венгерскую нотацию использую. Первый символ в названии поля - тип, поэтому при смене типа изменится имя поля. Исключение разве что изменение размера символьного поля. Тут текстбокс надо поправить (.MaxLenght) thunder2Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ? Спасибо заранее. Открыть DE, вытащить поле мышкой на форму, сменить label.caption и порядок обхода записей поправить. Если используется курсор-адаптер - сначала поправить его. Стандартные механизмы фокса. Все быстро, легко и просто. Ничего самопального тут я не изобретал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 08:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2, уточню еще что конечная форма правки конкретного справочника - это именно форма (созданная CREATE FORM ... AS clsEditForm), а не класс формы (CREATE CLASS ... AS Form) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 08:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Dima T "Все делать в формах" - у вас нет даже упоминаний о классах объектов. И я "понял" так, что вы эти объекты программируете уже непосредственно в формах. Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится. Неправильно понял. Есть классы форм, на всех кроме базовой есть контролы. Есть класс формы для правки, на форме кнопки "Сохранить, Отмена" , там все прописано. Когда мне надо форму редактирования записи справочника - я просто создаю форму на основе класса формы правки и получается готовая форма с кнопками "Сохранить, Отмена". Есть класс формы справочника где грид и кнопки "Добавить, Правка, Удалить ...". и т.д. и т.п. Зачем кнопки выносить в отдельный класс? Лично мне никогда не требовались кнопки "Сохранить, Отмена" без формы или форма с двумя парами кнопок "Сохранить, Отмена". Всегда нужна форма на которой одна пара кнопок "Сохранить, Отмена". В отдельные классы вынесено только то что может повторяться несколько раз на форме или использоваться без формы. На все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. Как видите, вы сами подробно и в детялях подтверждаете то что сами и отрицаете - вы все делаете в формах. И даже удивляетесь - зачем вам нужны классы. Фактически это не ООП, без него вы обходитесь - разве что частично используете некоторые его удобные вам моменты с формами. Но VFP9 заточено под объектно-ориентированное программирование. Есть и другая сторона вопроса. Конечно, это дело ваше, как вам программировать. Но вы называете его ООП, хотя по факту оно таковым не является. И таким образом вводите в заблуждение других, которые слепо вам верят. К тому же вы имеете серьезные проблемы с модернизацией. Даже на примере вопроса этого умника. Объекты ведь не ограничиваются одним Textbox, это простейший случай. Поле может быть типа мемо и потребуется EditBox. Хотя бы для обработки бланков простых текстовых документов. Может быть картинкой-фото с поиском и даже небольшим редактированием типа обрезания краев картинки. Может быть ID другого справочника и возможно более эстетичными будут ComboBox или ListBox (например, при нередактируемых небольших справочниках). С числовыми полями порой красиво смотрятся маленькие калькуляторы, в полях типа дата - календарики. Уточнение ваше вовремя - можно ведь еще вызывать и класс формы и динамически добавлять/убирать хотя бы тот же Control. И даже вызывать другую форму - например, с вводимыми расчетами. Также данные могут оказаться вводимые со стороны. Гридов может быть несколько, в т.ч. и динамический или просто с красивой шапкой. Этот перечень можно продолжать до надоедливости. Примеры решений можно найти на сайтах/форумах/Фоксклубе. Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать. А ООП в этих вопросах обладает куда большой гибкостью - часто решить вопрос можно один раз в одном месте несколькими строками вызова добавляемого класса/объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:00 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2sg12Dima T "Все делать в формах" - у вас нет даже упоминаний о классах объектов. Уважаемый, вы из какого ПТУ пришли ? Вы вообще VFP хоть раз запускали ? Формы в VFP давно являются классами. Перестаньте нести бред. То что вы смешиваете в одном методе разные действия свидетельствует о мягко говоря слабой теоретической подготовке. Может вам освежить знания парадигмы ООП ? А то, ей богу, стыдно за вас. Еще один грамотей. Ладно бы еще что-то путное ляпнул. Инкубатор где работает что-ли, кого только не заносит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.А кто сказал, что элементы форм - это объекты базовых классов? Вроде бы общепринятая практика (у тех, кто действительно программировал на VFP) - в первую очередь сделать свой набор объектов. А вы тут им рассказываете, что они ООП не пользуют... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Как видите, вы сами подробно и в детялях подтверждаете то что сами и отрицаете - вы все делаете в формах. И даже удивляетесь - зачем вам нужны классы. Фактически это не ООП, без него вы обходитесь - разве что частично используете некоторые его удобные вам моменты с формами. Но VFP9 заточено под объектно-ориентированное программирование. Класс формы не класс? Изумительное измышление ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T, ТС уже показал, "как надо", или всё ещё только критикует? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirDima T, ТС уже показал, "как надо", или всё ещё только критикует? Он похоже еще не до конца определился "как не надо" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12можно ведь еще вызывать и класс формы и динамически добавлять/убирать хотя бы тот же Control. А что мешает это делать в форме созданной на основе этого класса формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMsg12Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.А кто сказал, что элементы форм - это объекты базовых классов? Вроде бы общепринятая практика (у тех, кто действительно программировал на VFP) - в первую очередь сделать свой набор объектов. А вы тут им рассказываете, что они ООП не пользуют... Прочтите еще раз внимательно его описания, многое вначале темы - там нет даже упоминаний о классах и наборах объектов, разве что где мимоходом. Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Он даже удивляется - зачем они? Единственный класс, которым он оперирует - это класс форм, где все и происходит - своеобразная форма процедурного программирования, но это не ООП. А то, что местами используется, погоды не делает. ДимаТ. Ничто вам не мешает так делать, если вам так хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 20:31 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12С числовыми полями порой красиво смотрятся маленькие калькуляторы, в полях типа дата - календарики. Убил бы! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 21:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ? Вы удивитесь, но лекции по ООП в VFP9 есть готовые и они вполне доступны. Лекции на русском языке, неплохо переведены. Находятся они в HELP, вместе с описаниями учебных примеров. Изучайте на здоровье. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. Это сколько же бессмысленного труда потрачено ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. Это сколько же бессмысленного труда потрачено ... Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 15:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12пропущено... Это сколько же бессмысленного труда потрачено ... Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь. Ого, пять лет! Плюс еще года два, как в сундук, в форму все подряд запихивали что влезало. Какая тут к черту модернизация, нафиг она нужна - интересно даже взглянуть на такой шедевр. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 19:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 интересно даже взглянуть на такой шедевр. Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:09 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tthunder2Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ? Если поменять тип поля то ничего криминального в форме не случится. Текстбоксу без разницы какой тип поля ему достался. Гриду тоже. Другое дело код где это поле используется, его весь перелопатить придется. По-хорошему о типе поля надо думать на этапе проектирования. Я венгерскую нотацию использую. Первый символ в названии поля - тип, поэтому при смене типа изменится имя поля. Исключение разве что изменение размера символьного поля. Тут текстбокс надо поправить (.MaxLenght) thunder2Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ? Спасибо заранее. Открыть DE, вытащить поле мышкой на форму, сменить label.caption и порядок обхода записей поправить. Если используется курсор-адаптер - сначала поправить его. Стандартные механизмы фокса. Все быстро, легко и просто. Ничего самопального тут я не изобретал. Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? В форме. Буферизация и TableUpdate() для сохранения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Дополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Код класса покажи, ... для файл-сервераидля клиент-сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 22:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tthunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? В форме. Буферизация и TableUpdate() для сохранения. Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 00:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12 интересно даже взглянуть на такой шедевр. Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Это можно. Таблицы ведь могут обновляться не только из ваших форм, но и из других мест (автообновление, интернет, другая программа, триггеры, toolbar и т.д.). В таких случаях вы где создаете свои кодохранилища? К примеру, объясните своему ученику, как ваше TABLEUPDATE() в его "класс модели" нужно перетаскивать... мышкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Код класса покажи, ... для файл-сервераидля клиент-сервера. Выше написал - не хочу выкладывать. Без подробных объяснений понимать сложно будет. Спрашивай чего конкретно интересует. Сразу предупрежу - ничего особо экзотического я не изобрел. Все что можно было сделать просто - сделано просто. TableUbdate() для обоих вариантов один и тот же: clsFormEdit.Save() Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
thunder2Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ? MVC это один из подходов к разработке, сам по себе он ни плох, ни хорош. Все зависит от конкретной реализации. Я бы даже сказал от общей идеологии разработки, которая включает в себя в т.ч. подход к проектированию БД. Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению. Поэтому на уровне приложения остается только сохранить и проверить на ошибки. Поэтому в большинстве случаев надобности нет в излишних классах (писать туда нечего). Классы типа "контроллеров" нужны в случаях какой-то сложной логики, которую в БД не вынести, но с ними в каждом случае все индивидуально, поэтому нет смысла выносить их в какой-то глобальный класс на все случаи жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? Даже не знаю чего и сказать на этот бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Как много умных слов - и какой идиотский вопрос :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistпропущено... Код класса покажи, ... для файл-сервера и для клиент-сервера. Выше написал - не хочу выкладывать. Без подробных объяснений понимать сложно будет. Спрашивай чего конкретно интересует. Сразу предупрежу - ничего особо экзотического я не изобрел. Все что можно было сделать просто - сделано просто. TableUbdate() для обоих вариантов один и тот же: ОК, мне схема интересна :) Код: sql 1. 2.
Ну давай по порядку, вопросы (пока смотрим файл-сервер): 1. Где начинается и заканчивается транзакция, в каком месте класса-формы? 2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов? 3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера? 4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 16:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12пропущено... Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? Даже не знаю чего и сказать на этот бред. Почему же бред? Пока из ООП вы демонстрируете некоторое знакомство только с несколькими объектами, которые научились перетаскивать мышкой на форму. А формы перегоняете в классы с помощью "SAVE AS ..." И только сейчас начали узнавать, что в VFP можно создавать свои классы и собирать их в библиотеки классов, и еще многое чего такого. Даже на уровне кнопок вы плаваете с их заполнением. Не говоря уже о невизуальных классах, которые оставят в ваших учебно-тестовых формах одни картинки. Апломбу у вас хватает, но вы тут же тушуетесь, когда доходит до конкретики. Для нормального освоения ООП вам понадобится года полтора. Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят. К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора. И на форуме станет веселее - и развлечение, и обучение. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 17:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistНу давай по порядку, вопросы (пока смотрим файл-сервер): Заточка изначальная была под КА для работы с MSSQL. PaulWist1. Где начинается и заканчивается транзакция, в каком месте класса-формы? С том случае нет транзакций. Оптимистическая буферизация. Buffering = 3 PaulWist2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов? 3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера? То что я выше показывал это код формы правки справочника, т.е. одной записи одной таблицы. Для документа с табличной частью другая форма (clsFormDocEdit), унаследованная от этой. По сути та же правка записи только вместе с ссылающимися на нее из дочерней таблицы. Там добавлен курсор-адаптер для дочерней thisform.cChildTable (Buffering = 5) и метод Save() перепрописан. Там в транзакцию обернуто внутри Save(). Для MSSQL SQLEXEC('begin tran') В родительской nМастерID появляется после сохранения. Для MS SQL "select @@IDENTITY" В процессе ввода при добавлении записей в дочернюю в nМастерID ничего не пишется. В процессе сохранения заменяется на Мастер.nМастерID clsFormDocEdit.Save() Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
в твоем примере: cTable = 'Мастер' cIDfield = 'nМастерID' cChildTable = 'Деталь' PaulWist4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные. ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 18:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Для нормального освоения ООП вам понадобится года полтора. Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят. К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора. И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете? Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет. ЗЫ. Что-то возникает у меня подозрение, что это из серии "покажите мне свой код, подробно объясните, что и как работает - я с удовольствем поимею его в своих поделках, да ещё и бабла нарублю за "эффективные собственные разработки" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 19:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM, я это заметил со стариницы 4-й. Уже двоим так кажется. Немного до статистики не дотягивает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 19:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению. Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 20:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению. Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных. Согласен. Сам к тому же стремлюсь. В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать. Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности. Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются. Что касается web-приложений, то я считаю тут есть серьезное противоречие с десктопными. В обычной проге считаю надо выносить на клиента все что можно вынести (все расчеты не связанные с целостностью БД), т.к. суммарная мощь клиентских компов на порядки превышает серверную. С web наоборот, основная нагрузка на web-сервер (все для клиентов считается на нем) и с него надо нагрузку убирать по-максимуму, т.е. на сервер БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 21:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMsg12Для нормального освоения ООП вам понадобится года полтора. Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят. К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора. И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете? Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет. ЗЫ. Что-то возникает у меня подозрение, что это из серии "покажите мне свой код, подробно объясните, что и как работает - я с удовольствем поимею его в своих поделках, да ещё и бабла нарублю за "эффективные собственные разработки" Какое бабло, какие библиотечные коды, какой эффект от кодохранилищ процедурного программирования восьмилетней давности, в которых сам автор не может путем разобраться. На календаре 2013 год. Это форумные учебно-тестовые формы для одного компьютера, модернизации не подлежат, бизнес-коды в них не вставишь, в комплексе они не работоспособны, в приложениях их не отладить и они никогда не отлаживались. Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению." Может кто расшифрует, что это значит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 22:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать. Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности. Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются. Раз это так грустно, то подавайте сюда и вашу "теорию" и ваше "например". Только конкретно, не на пальцах и на ваших же кодах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 22:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistНу давай по порядку, вопросы (пока смотрим файл-сервер): Заточка изначальная была под КА для работы с MSSQL. ... Ну собственно не важно каков источник СА или RV. Dima TPaulWist1. Где начинается и заканчивается транзакция, в каком месте класса-формы? С том случае нет транзакций. Оптимистическая буферизация. Buffering = 3 Если речь идёт о клиент-сервере (MSSQL), то транзакция есть ВСЕГДА. Даже сохранение одной записи сервер оборачивает в транзакцию и лучше, что бы разработчик управлял ей явно, а Buffering = 3 говорит только об одном, что при "слёте" с записи происходит косвенный, не конролируемый приложением TableUpdate. Dima TPaulWist2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов? 3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера? То что я выше показывал это код формы правки справочника, т.е. одной записи одной таблицы. Для документа с табличной частью другая форма (clsFormDocEdit), унаследованная от этой. По сути та же правка записи только вместе с ссылающимися на нее из дочерней таблицы. Там добавлен курсор-адаптер для дочерней thisform.cChildTable (Buffering = 5) и метод Save() перепрописан. Там в транзакцию обернуто внутри Save(). Для MSSQL SQLEXEC('begin tran') В родительской nМастерID появляется после сохранения. Для MS SQL "select @@IDENTITY" В процессе ввода при добавлении записей в дочернюю в nМастерID ничего не пишется. В процессе сохранения заменяется на Мастер.nМастерID ... Хорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев? Второе, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY() Dima TPaulWist4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные. ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД. Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 23:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12... Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению." Может кто расшифрует, что это значит. Почему сразу "пудрить мозги", тут всё просто - сделан упор на 2-х звенку (в смысле реализация бизнес логики базы данных, а не в способе доступа к БД), что вообщем-то является правильным с точки зрения теории реляционной модели....таким образом достигается независимость БД от "клиента",... те БД выставляет интерфейс для работы с данными, а клиент может быть любым. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 01:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев? Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели. PaulWistВторое, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY() Согласен. Натыкался на эти грабли. Последнее время SCOPE_IDENTITY() использую. Не оттуда скопировал :) PaulWistDima Tпропущено... ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД. Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса? Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи. PaulWistчЁ это слово больше не употребляй. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 09:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев? Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели. ... Ну вот, правильное решение :) Dima TPaulWistВторое, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY() Согласен. Натыкался на эти грабли. Последнее время SCOPE_IDENTITY() использую. Не оттуда скопировал :) ОК, проехали :) Dima TPaulWistпропущено... Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса? Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи. Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги? Dima TPaulWistчЁ это слово больше не употребляй. Дурная привычка, прилипла от Хела (Hel!Riser) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 13:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima Tпропущено... Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели. ... Ну вот, правильное решение :) И чем же оно правильное? Только конкретно, а не на пальцах. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 13:45 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima Tпропущено... Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи. Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги? Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно. Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение". Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать. А где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема. Для меня это задача из разряда "экзотики", поэтому никаких классов и прочих заготовок для нее нет. Классы использую для рутинных задач, когда из 9 случаев из 10 однотипные. Если 10 похожих случаев не накопилось, то нет смысла задумываться над однотипностью, пустая трата времени, напишешь хрень которую надо будет переписывать при очередном использовании. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 20:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWistпропущено... Ну вот, правильное решение :) И чем же оно правильное? Только конкретно, а не на пальцах. Тут тебе ссылку давали на статью с ответом на этот вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 20:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ДимаТ Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению? Dima TPaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев? Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 21:10 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ДимаТ Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению? Объясняю. Это высказывание: Dima TЯ вообще не буду писать код класса для таких случаев. возникло потому, что задача достаточно редкая и для нее: Dima TТут нет стандартного интерфейсного решения... Например, можно псевдо-дерево в гриде изобразить. В указанной по ссылке статье это описывается следующим образом: ... Многие считают, что «обобщенное» решение (с кучей возможностей для расширения) является лучшим способом справиться с будущими изменениями. ...практика показывает, что ... нет ничего лучше простого решения... То есть, если ситуация встречается редко, один-два раза за всю карьеру, то можно (и даже нужно!) делать индивидуальные решения для каждого случая. Если же ситуация повторяется чаще и становится рутиной (например, встречается в каждом проекте), то в этом случае уже есть смысл думать об "обобщении", расписывать какие-то "особые классы" и их взаимодействие. Попробуте поразмыслить ("помедитировать") на досуге. И вы начнете понимать ваших собеседников. И, кстати, раз уж Вы критикуете решение ДимыТ, то предложите Ваше решение описанной ситуации, исходя из Вашей объектной модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2013, 23:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Станислав С...кий Подкинули вы мне задачку, пришлось помедитировать. Вы предлагаете мне дать решение там, где не видно задачи. Я уже отмечал, что автор пудрит мозги своими "теориями", перемешав понятия. Апломб меня в заблуждение не вводит. Реального пока ничего нет, кроме библиотечного "REPLACE", на котором автор зашибает бабло. Я уже делал замечания, что его кодохранилища не модернизируются, что тут же подтвердилось. Незнакомство автора с "DO FORM ..." привело к тому, что автор нагородил кодов с три короба. Но в приложениях справочники нормально вызываются через меню, что для автора очередная новость. У него куча мифических приложений и таких же классов с грубыми ошибками якобы где-то работают лет пять. Но с этими ошибками и классами он почему-то столкнулся только сейчас - одни отмазки. Хотя уже после второго приложения ответы у него должны были бы от зубов отскакивать. Не принимать же всерьез какое-то разделение чего-то от чего-то, когда автор не в состоянии отделить даже в своих процедурах транзакции от интерфейса. Чтобы расписывать какие-либо "особые классы", надо сначала расписать "обычные". Повторяю для автора еще раз - начать хотя бы с простого, с кнопок. Начнет переделывать как положено и от его гордости останется только кошкин чих. Как видите, по сути и нет ничего - только какая-то самоделка, выдаваемая за чудо природы. На ваше вопрос об объектной модели я уже отвечал - не вижу смысла снова браться за это дело ради вот такого трепа, без практической пользы. Начальные коды для затравки мною выложены, они прозрачны. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 13:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistпропущено... Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги? Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно. Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение". Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать. ... Ну, я не совсем об этом спрашивал, ... это бизнес логика приложения, тут "хозяин-барин". Dima TА где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема. ... Я именно про это спрашивал, где, из какого места кода и через что вызывается ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 14:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Модератор: Пожалуйста не переходите на личности. Используйте аргументированный подход при доказательстве Ваших идей. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 14:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Да, излишне резковато вышло, извиняюсь. PaulWist, а вы что, знаете еще другие места вызова ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 15:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistгде, из какого места кода и через что вызывается ХП? Через sqlexec() . Использую как в примерах их хэлпа. Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно. Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 15:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistгде, из какого места кода и через что вызывается ХП? Через sqlexec() . Использую как в примерах их хэлпа. Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно. Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п. Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 16:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать? Комментируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 17:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist, а вы что, знаете еще другие места вызова ХП? Да, знаю и не только я один :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 20:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistгде, из какого места кода и через что вызывается ХП? Через sqlexec() . Использую как в примерах их хэлпа. Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно. Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п. Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 20:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima Tпропущено... Через sqlexec() . Использую как в примерах их хэлпа. Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно. Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п. Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :) Может я помешал - перебил вам поток такой ценной информации? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 21:09 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Может я помешал - перебил вам поток такой ценной информации? Нисколько,... всегда интересно узнать про решения других людей, особенно когда они подробно рассказывают про схемы решений и показывают код. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 21:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistsg12Может я помешал - перебил вам поток такой ценной информации? Нисколько,... всегда интересно узнать про решения других людей, особенно когда они подробно рассказывают про схемы решений и показывают код. Решений пока не видно, схем, да и кода тоже - у ДимыТ это большой секрет, бабки он на этом зарабатывают. А пока вы только узнали, что при процедурном программировании хендл это глобальная переменная. Но надо заметить, что при ООП это только свойство класса, если загнать туда его "Соединение ...". Еще вы узнали, что ДимаТ "принципиально" откопал этот аж класс для функции SQLEXEC(), хотя для нее и процедуры с гаком хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 22:01 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Решений пока не видно, схем, да и кода тоже - у ДимыТ это большой секрет, бабки он на этом зарабатывают. ... Нууу, мне его пояснений и приведенного кода было достаточно, чтобы понять о чём речь. sg12А пока вы только узнали, что при процедурном программировании хендл это глобальная переменная. Но надо заметить, что при ООП это только свойство класса, если загнать туда его "Соединение ...". Еще вы узнали, что ДимаТ "принципиально" откопал этот аж класс для функции SQLEXEC(), хотя для нее и процедуры с гаком хватает. Свойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил. Кстати, а куда на Ваш взгляд необходимо загнать SQLEXEC() в процедуру или в метод/свойство класса и если класса, то на основании какого базового класса, приведите схему кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2013, 23:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistСвойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил. Были основания. Сначала хотел глобальный объект, но при этом неудобно писать, открываешь код класса (они у меня в VCX) и фокс предлагает убить объект, т.е. лишний раз в код класса не заглянуть. Но это еще мелочи. Вторая проблема DE (я PrivateDS использую). Если SQLEXEC() вызывается внутри метода класса, то курсор с результатом запроса создается в DE расположения объекта. Победить я это не смог. В итоге пришел к выводу что глобально надо хранить только хэндл соединения, для чего вполне достаточно переменной, делать класс только для хранения хэндла излишне по-моему. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 08:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistСвойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил. Были основания. Сначала хотел глобальный объект, но при этом неудобно писать, открываешь код класса (они у меня в VCX) и фокс предлагает убить объект, т.е. лишний раз в код класса не заглянуть.... Дык, причины мне понятны :) "не первый день замужем" Dima T... Но это еще мелочи. Вторая проблема DE (я PrivateDS использую). Если SQLEXEC() вызывается внутри метода класса, то курсор с результатом запроса создается в DE расположения объекта. Победить я это не смог. В итоге пришел к выводу что глобально надо хранить только хэндл соединения, для чего вполне достаточно переменной, делать класс только для хранения хэндла излишне по-моему. Это победитть нельзя, ну-у-у почти нельзя, есть правда обходной манёвр (правой рукой за левым ухом), - это сделано by Design , тут пояснения Алексея Цингауза ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 09:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ДимаТ, PaulWist, раз уж вы синхронизировались. VFP9 "удобно" работает и с глобальными переменными и с объектами, и с их свойствами. ООП это объектно-ориентированное программирование, а не способ хранения хендлов. "Предложением убить" Фокс тактично вам напоминает, что объекты нужно не только создавать, но и закрывать. Коды нужно выполнять не только из окна Фокса, но временами и в режиме run-time. DE создается с Form, Formset и Report. Функционирует как контейнер для Cursor, CursorAdapter и Relation. DS применимо к Form, FormSet, _Screen, Session, Toolbar. Подробности в хелпе, а не за левым ухом. Ваш принципиальный класс с SQLEXEC() можно открыть так: Tools-Class Browser-Open-.vcx-класс. Попробуйте в этот раз не на пальцах, и вы увидите все, что у вас есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 16:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 PaulWist ...Ваш принципиальный класс с SQLEXEC() можно открыть так: Tools-Class Browser-Open-.vcx-класс. ... 1. Вы привели "интерфейс" открытия vcx из среды разработки, но не указали какую именно библиотеку и по какому пути необходимо открыть, видимо ошиблись при написании поста - уточните пожалуйста, какую библиотеку классов необходимо открыть, что бы "поглазеть" на неё. 2. Я вроде задал конкретный вопрос: авторКстати, а куда на Ваш взгляд необходимо загнать SQLEXEC() в процедуру или в метод/свойство класса и если класса, то на основании какого базового класса, приведите схему кода? Из вашего ответа мне не понятно, где необходимо писать SQLEXEC() в процедуре или методе класса,... а так же, если в методе класса, то на основании какого базового класса лучше всего написать "обёртку" над SQLEXEC() - уточните пожалуйста. 3. Что бы Вам было понятно, Алексей Цингауз (ссыку на его пост я дал выше) - это один из разработчиков Фокса начиная с 7-ой и по 9-ую версию, поэтому Ваше: авторDS применимо к Form, FormSet, _Screen, Session, Toolbar. мягко говоря не соотвествует действительности :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 16:36 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
2 sq12: 3. Что бы Вам было понятно, Алексей Цингауз (ссыку на его пост я дал выше) - это один из разработчиков Фокса начиная с 7-ой и по 9-ую версию, поэтому Ваше: авторDS применимо к Form, FormSet, _Screen, Session, Toolbar. мягко говоря не соотвествует действительности :)Дополню - конкретно он занимался именно SQL в фоксе во всех его ипостясях, в том числе и SqlExec(). Но Вы можете продолжать отжигать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 20:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Для ВАС уточняю еще раз. Класс с SQLEXEC() от ДимыТ, вам он его не откажет. Фраза из хелпа, А.Цингауз ее вам подтвердит. Свою ссылку попробуйте прочитать без маневра за левое ухо. ЗЫ. Я не сомневаюсь в компетентности неизвестного мне А.Цингауза. Меня интересует компетентность моих оппонентов относительно класса, входящего уже восемь лет в поставку VFP9. Плохо он их обучал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 20:37 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Класс с SQLEXEC() от ДимыТ, вам он его не откажет. ппц, как у тебя как все плохо с русским языком :( Класс в форуме. Я его выкладывал. Ищи если интересно. Только там ничего сверхъестественного нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 21:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Класс с SQLEXEC() от ДимыТ, вам он его не откажет. ппц, как у тебя как все плохо с русским языком :( Класс в форуме. Я его выкладывал. Ищи если интересно. Только там ничего сверхъестественного нет. Раз вы опять стушевались, значит у вас с ним проблемы. Иначе развернулись вы бы тут с поучениями ... всех и вся. Класс уж проще некуда, для одной функции. Или вас надо понимать так, что другие классы для вас "сверхъестественные"? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Раз вы опять стушевались, значит у вас с ним проблемы. Хреновый из тебя психолог Просто предупредил что за время потраченное на поиски можно самому тоже самое написать несколько раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Для ВАС уточняю еще раз. Класс с SQLEXEC() от ДимыТ, вам он его не откажет. ... надо понимать, что эта фраза ответ на этот мой вопрос: автор1. Вы привели "интерфейс" открытия vcx из среды разработки, но не указали какую именно библиотеку и по какому пути необходимо открыть, видимо ошиблись при написании поста - уточните пожалуйста, какую библиотеку классов необходимо открыть, что бы "поглазеть" на неё. Про класс Dima T я уже давно всё понял он всё доходчиво рассказал, меня интересует класс-обёртка над SQLEXEC, который ВЫ написали и рекомендуете использовать , те ещё раз повторю вопрос: автор..., где необходимо писать SQLEXEC() в процедуре или методе класса,... а так же, если в методе класса, то на основании какого базового класса лучше всего написать "обёртку" над SQLEXEC() - уточните пожалуйста. или иными словами приведите код класса/процедуры написанного/адаптированного лично Вами, ... Вы можете "зпостить" здесь? (меня устроит хоть ссылка, хоть аттач, хоть код в посте) sg12PaulWist Фраза из хелпа, А.Цингауз ее вам подтвердит. Свою ссылку попробуйте прочитать без маневра за левое ухо. ... У меня есть только один комментарий и тот из Козьмы Пруткова: "Если на клетке льва написано осёл, не верь глазам своим" :) те, то что написано в хелпе не всегда соотвествует действительности. sg12PaulWist ЗЫ. Я не сомневаюсь в компетентности неизвестного мне А.Цингауза. Меня интересует компетентность моих оппонентов относительно класса, входящего уже восемь лет в поставку VFP9. Плохо он их обучал. Ну вообщем, в данном треде меня тоже именно этот вопрос интересует :), хотя другие вопросы не менее, а даже более интересны. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist, или иными словами приведите код класса/процедуры написанного/адаптированного лично Вами, ... Вы можете "зпостить" здесь? (меня устроит хоть ссылка, хоть аттач, хоть код в посте) Хм, одна проблема: ТС пишет "прозрачный" (с) код... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 10:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Я немного не по теме, но тут сейчас больше всего народа, вопрос, может у кого есть утилитка для подмены на формах базовых классов на свой? Если нету, не страшно, свою недолго сделать, следущий код будет правильным для формы? Код: sql 1. 2. 3.
frm - открытая форма scx в виде таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 11:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tor300, в качестве вынужденной меры разумеется... Код верный, если нет необходимости "почистить" memo Properties, убрав параметры, которые должны наследоваться от my_textbox ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 12:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Вы начали передергивать, ой как некрасиво. Козьму Пруткова перечитайте, хоть в этом освежите свои познания. Про класс-обертку с SQLEXEC() по секрету "рассказал" для вас ДимаТ, а я только на время прервал ваше обучение с его разрешения. Свои "открытия" по хелпу изложьте открыто, а не на своих любимых пальцах. Коды я вам приводил, но вы тогда утухли уже на этапе своего goApp. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 14:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Козьму Пруткова перечитайте, хоть в этом освежите свои познания. ... Э-э-э, не понял, в моей интерпритации суть аффоризма изменилась/утерялась? sg12PaulWist Про класс-обертку с SQLEXEC() по секрету "рассказал" для вас ДимаТ, а я только на время прервал ваше обучение с его разрешения. Правильно ли я понимаю, что именно ВАМИ написанного класса/процедуры как обёртку для SQLEXEC() вы привести на форуме не можете ? Меня устроит ответ - "Нет, могу", либо "Да, не могу" :) sg12PaulWist Свои "открытия" по хелпу изложьте открыто, а не на своих любимых пальцах. Уж не знаю как прокомментировать, вроде ссылку на пост разработчика фокса дал, куда уж более открыто,... ладно, а что Вы понимаете по фразой: sg12изложьте открыто как это сделать? sg12Коды я вам приводил, но вы тогда утухли уже на этапе своего goApp. 1. Ну что же, возможно я что-то пропустил, поэтому прошу, ещё раз приведите Ваш код, ... например для обёртки над SQLEXEC(), если такового нет, то обёртку над TableUpdate(). 2. А собственно, чем не понравился код класса, который я привел, что в нём не правильного и как необходимо сделать на Ваш взгляд правильно,... допишите код класса и приведите здесь на форуме. sg12Вы начали передергивать, ой как некрасиво. Стоп-стоп, мы вроде осуждаем технические проблемы, а не личные качаства, ...поэтому если я перешел на личности, то прошу извинить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 14:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ДимаТ Выполняю вашу просьбу. Пока меня интересует ваша отмазка по поводу вашей строки: WScript.Sleep(7000) PaulWist Вы откровенно пытаетесь втянуть меня в ваш родной ПустоТреп. Но мне он не интересен - сюда заглядывали ПустоТрепщики и покруче. Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ДимаТ Выполняю вашу просьбу. Пока меня интересует ваша отмазка по поводу вашей строки: WScript.Sleep(7000) Что именно тебе непонятно в этой строке? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12ДимаТ Выполняю вашу просьбу. Пока меня интересует ваша отмазка по поводу вашей строки: WScript.Sleep(7000) Что именно тебе непонятно в этой строке? Где и как вы создаете этот объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:43 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ДимаТ Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор. ОК, договорились,.. ВНИМАНИЕ ВОПРОС: Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 17:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). Покажите место, где я обещал вам такой класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 18:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). Покажите место, где я обещал вам такой класс. Тут , процитирую ещё раз: sg12PaulWist ... Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор . Мой выбор сделан,... ответ за Вами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 20:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Что именно тебе непонятно в этой строке? Где и как вы создаете этот объект. Во-первых при цитировании надо указывать источник. А то на заборе "йух" напишут, а ты меня спросишь что я под этим подразумеваю. Во-вторых надо читать чего пишут, т.е. контекст сказанного. Там я четко сказал что Wscript.Shell и прочие обертки над CreateProcess() не использую т.к. есть своя. Исходя из вышесказанного мой ответ: "нигде". PS на вопрос PaulWist будешь отвечать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 20:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tбудет так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это ваш код или вы его на заборе писали? Вы отличаете Wscript.Shell от Winapi? Поясните строку: WScript.Sleep(7000) PaulWist Что-то в вашем "туте" я не увидел "SQLEXEC", уточните или продублируйте цитатой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 21:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 авторПоясните строку: WScript.Sleep(7000) Вначале поясни, что тут пояснять :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Что-то в вашем "туте" я не увидел "SQLEXEC", уточните или продублируйте цитатой. ОК, вот цитата: sg12PaulWist ... Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор . "разберём" Вашу цитату авторПоэтому вам я буду отвечать только на один ваш вопрос те, Вы готовы ответить только на один вопрос, ну хорошо я задал только один вопрос. Далее: авторна ваш выбор я выбрал и задал вопрос про SQLEXEC() всё в соотвествии с Вашими же обещаниями. Если Вы с этим не согласны, то прошу, перечислите те вопросы на которые Вы готовы ответить, тогда я из них уже выберу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:13 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). Это ваш вопрос, чтобы вы его не забыли. Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(), уточним. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12 авторПоясните строку: WScript.Sleep(7000) Вначале поясни, что тут пояснять :) Вопрос был такой: Где и как ДимаТ создает этот объект WScript? Код перед вашими глазами. Интерес вызывают его отмазки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). Это ваш вопрос, чтобы вы его не забыли. Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(), уточним. Ещё раз, Ваша цитата: авторPaulWist ... Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор Вы сами предложили мне задать вопрос на МОЙ выбор, я задал про SQLEXEC(). Более того, предполагая, что возможно вы не можете привести код по SQLEXEC, я так же предложил "опубликовать" список вопросов на которые вы сможете ответить и привести код, что бы я выбрал из них. Или что в Вашем понимании означает фраза - "на ваш выбор", поясните пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Вы задаете сразу очень много вопросов. Я же вам обещал отвечать только на один ваш вопрос, вопрос вы выбрали сами. Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). Или так и будете глазки строить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, вы, внимательно читаете, что вам пишут? Или привычно выдергиваете из контекста словесные обороты, годные для "продолжения приятного разговору"? :) ИМХО, не столь важен вопрос, (код, приведенный Дима Т, вполне самодостаточный, "где" и "как" его применить - в общем случае, неважно). Занятнее предыстория этих навязчивых расспросов, не так ли? (см соседнюю тему) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
GermanGMsg12, вы, внимательно читаете, что вам пишут? Или привычно выдергиваете из контекста словесные обороты, годные для "продолжения приятного разговору"? :) ИМХО, не столь важен вопрос, (код, приведенный Дима Т, вполне самодостаточный, "где" и "как" его применить - в общем случае, неважно). Занятнее предыстория этих навязчивых расспросов, не так ли? (см соседнюю тему) Я то как раз внимательно читаю и прочитанное процеживаю. Не с целью вас обидеть, упаси боже - но вы разглядываете вопросы с позиции равнодушного бездельника. И если отбросить привычную для вас словесную шелуху, то суть становится иной. Коды ведь выставляются для людей, чтобы ими пользовались те, кто в них нуждается. И самодостаточен этот известный сайт, и Wscript.Shell, а роль ДимыТ здесь невелика. Думаю, что немногие сходу сумеют объяснить этот на 90% им скопированный код и найти ему практическое применение. И таких кодов на том сайте уйма, не надо выставлять это учебный код как некую невидаль. Тем более, что ДимаТ только начал посещать этот сайт, иначе бы быстро убедился, что этот известный объект там торчит на каждом углу. Но раз он этот объект скопировал не глядя, значит этот свой код не отлаживал - причем здесь самодостаточность. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 23:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Браво! Браво, sg12 ! (давлюсь кукурузой) Вы уличили кого-то в том, что он "не тестировал код". Тему-то хоть читали? Там обязательно нужно было тестировать? Или просто указать направление? Между прочим, в той теме "переведенный" с VB на VFP код вполне себе работает (если исключить этот самый "камень преткновения" WScript.Sleep, который там по тексту не упёрся ни разу). И это чем-то кому-то помешало (кроме вас, трулляля вы наша)? И с чего бы Вас занесло в другие топики? - здесь перестали обращать внимание? Так я вам больше скажу - минимум половина моего, например, кода, опубликованного прямо на форуме (а не в приложенных файлах) - имеет фички-ошибки. Как раз для таких как вы "любителей копипасты"... Ну, - наезжай на меня, родной, наезжай... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 02:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Повторяю: цитируй полностью. поправил немного. sg12 Взято тут Dima TUAPНепонятный синтаксис. Почти как фоксе, немного отличается. Например Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
будет так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это ваш код или вы его на заборе писали? Вы отличаете Wscript.Shell от Winapi? Поясните строку: WScript.Sleep(7000) Не ко мне вопрос. Я показал как пример на VB отсюда на фоксе переписать. Если тебя перевод кода с VB интересует, то спрашивай. Помогу чем смогу. PS А вообще твой подход к цитированию надо развивать. В следующий раз спроси зачем я виндовс написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 07:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMБраво! Браво, sg12 ! (давлюсь кукурузой) Вы уличили кого-то в том, что он "не тестировал код". Тему-то хоть читали? Там обязательно нужно было тестировать? Или просто указать направление? Между прочим, в той теме "переведенный" с VB на VFP код вполне себе работает (если исключить этот самый "камень преткновения" WScript.Sleep, который там по тексту не упёрся ни разу). И это чем-то кому-то помешало (кроме вас, трулляля вы наша)? И с чего бы Вас занесло в другие топики? - здесь перестали обращать внимание? Так я вам больше скажу - минимум половина моего, например, кода, опубликованного прямо на форуме (а не в приложенных файлах) - имеет фички-ошибки. Как раз для таких как вы "любителей копипасты"... Ну, - наезжай на меня, родной, наезжай... А что наезжать, по мне давитесь кукурузой хоть пачками. Но речь идет ведь как раз об этом, об этом известном "камне преткновения". Раз ткнули человеку в его ляпу - ну, умылся: "извиняюсь, недогляд, поторопился, исправлю, звездочку щас пробью и т.п." - и делов-то, скромность украшает. Я ведь только комментриую отмазки и наезды на меня, его и ассистентов. Посмотрите, он снова с гонором: "Если тебя перевод кода с VB интересует, то спрашивай. Помогу чем смогу." Хотя он только один код скопировал из уймы того что там есть на этом насыщенном сайте, и то с огрехами, и объяснить его сам не может. Тут уж его отмазки становятся интересней, чем его ответы - что еще придумает. ДимаТ. Вы сначала попробуйте ответить хотя бы на те вопросы, что заданы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 09:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Вы задаете сразу очень много вопросов. ... Любопытство не порок - это не вопрос, а утверждение :) sg12PaulWist Я же вам обещал отвечать только на один ваш вопрос, вопрос вы выбрали сами. ... Да, готов "услышать" ответ, про класс обёртку над SQLEXEC() - это опять же не вопрос, а утвеждение. sg12PaulWist Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). Вы обещали ответить на ВЫБРАННЫЙ МНОЙ вопрос , я его выбрал и задал (повторюсь, про обёртку над SQLEXEC() ), ... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код, хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности... жду ответа с кодом :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 10:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). Или это ваши фантазии? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 10:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). Вы видимо невнимательно прочли мой предыдущий пост, в нём написано: sg12 ... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код , хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности ... И в соотвествии с Вашими же обещаниями ответить на вопрос на мой выбор я задал вам вопрос про SQLEXEC(), ... хорошо, упростим вопрос - КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме? ... меня устроит ответ Да, приведу , либо просто Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 10:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC(). Это ваш вопрос, а то вы его подзабыли. Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 11:13 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12...Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(). В третий раз повторяю: ... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код, хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности ... попробую "перевести": НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ на сей раз я отвтеил на ваш вопрос про ссылку или цитату? Меня устроит ответ Да или Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 11:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Господа, только не перекормите его! :) И так уже еле пишет. Сбежит еще куда-нибудь... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 11:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistменя устроит ответ Да, приведу , либо просто Нет Ага, а на второй вопрос - "ну когда же, когда Вы его приведёте?" - афтар отвечать откажется, и приедъявить ему будет уже нечего ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 11:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirприедъявить*предъявить ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 11:48 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ Если у вас ничего нет (да и не было с самого начала), то ради чего вы на пустом месте весь этот свой онанизм устроили? Или вы как ... когда коту делать нечего он ... Непохоже что-то, чтобы вас в этом вашем "SQLEXEC" что-то вообще всерьез интересовало, и уж тем более в ООП. Еще раз вам повторяю - процедурное программирование меня давно не интересует, т.к. оно себя изжило и это тупиковый путь. И никакой особенный чудо-класс погоды не сделает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 13:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ Если у вас ничего нет (да и не было с самого начала), то ради чего вы на пустом месте весь этот свой онанизм устроили? Или вы как ... когда коту делать нечего он ... Непохоже что-то, чтобы вас в этом вашем "SQLEXEC" что-то вообще всерьез интересовало, и уж тем более в ООП. Еще раз вам повторяю - процедурное программирование меня давно не интересует, т.к. оно себя изжило и это тупиковый путь. И никакой особенный чудо-класс погоды не сделает. Стоп-стоп. На ваш вопрос я ответил. Теперь Вам необходимо ответить на мой вопрос, во всяком случае хотя бы из вежливости, (так сказать даш-на даш, тем более Вы прилюдно обещали ответить на вопрос на моё усмотрение), итак, внимание вопрос: КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме? ... меня устроит ответ Да, приведу, либо просто Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 13:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Мыло-мочало ... Действительно, вам делать нечего, поэтому ... Ладно, раз уж вас так приспичило ... на этот класс. Что вас в существующем классе не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 14:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Мыло-мочало ... Действительно, вам делать нечего, поэтому ... Ладно, раз уж вас так приспичило ... на этот класс. Что вас в существующем классе не устраивает? Что-то я не обнаружил в вашем посте ответа, а именно "Да, приведу", либо просто "Нет " на мой предыдущий вопрос. Поэтому, давайте по порядку, сначала закончим с предыдущим вопросом, повторю: КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме? Варианты ответа я дал тремя строчками выше, хотелось бы что бы вы именно так односложно ответили. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 14:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Вы уж совсем ... того ... мне мои ответы начали диктовать. Вы на форуме находитесь, а не в школе, диктант диктуете. Вам нужен: PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Что вас не устраивает в существующем классе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 14:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Вы уж совсем ... того ... мне мои ответы начали диктовать. Вы на форуме находитесь, а не в школе, диктант диктуете. ... Ну хорошо, оставим это. sg12PaulWist Вам нужен: PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Что вас не устраивает в существующем классе? Базовый класс,... а кстати, на основе какого базового класса построен класс? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 15:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Какой у вас базовый класс? Лучше всего подходит класс Custom. Что еще вас смущает в существующем классе? ЗЫ. Это случаем не тот класс-самоубица от ДимыТ, который сам автор не смог запустить, потому что тот прилюдно просил его "убить"? И который сам автор загнал куда-то подальше, чтобы не брать себе на душу такой грех. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 15:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Какой у вас базовый класс? Лучше всего подходит класс Custom. ... ОК, вот уже предметный разговор. Хорошо, пусть будет Custom. У меня тоже Custom. sg12PaulWist Что еще вас смущает в существующем классе? ... Как инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр? sg12PaulWist ЗЫ. Это случаем не тот класс-самоубица от ДимыТ, который сам автор не смог запустить, потому что тот прилюдно просил его "убить"? И который сам автор загнал куда-то подальше, чтобы не брать себе на душу такой грех. Давайте условимся, у нас технический разговор, и не будем в нашем треде отвлекаться на других участников. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 16:06 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistКак инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр? Это уже серьезный вопрос. Я бы посоветовал забыть, что это класс только для SQLEXEC() и начать на его основе создавать глобальный класс вообще для работы со всем SQL-сервером. Так как это тема достаточно посещаема, и надеюсь не только троллями, то могу остановиться на этом объемном вопросе подробнее. Но сразу замечу, что некоторые вопросы у меня еще "сырые" - в свое время их забросил за отсутствием необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 16:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWistКак инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр? Это уже серьезный вопрос. Я бы посоветовал забыть, что это класс только для SQLEXEC() и начать на его основе создавать глобальный класс вообще для работы со всем SQL-сервером. ... Отлично, задам вопрос по другому: Как инициализируется этот ГЛОБАЛЬНЫЙ класс, те в какой момент происходит его создание (Creat/NewObject), созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр? sg12Так как это тема достаточно посещаема, и надеюсь не только троллями, то могу остановиться на этом объемном вопросе подробнее. Мы вроде договорились, обсуждать технические проблемы, а не личные качества участников. sg12Но сразу замечу, что некоторые вопросы у меня еще "сырые" - в свое время их забросил за отсутствием необходимости. Не ошибается тот кто ничего не делает, ... значит класс всё таки есть, можете его запостить на форуме? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 17:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistКак инициализируется этот ГЛОБАЛЬНЫЙ класс, те в какой момент происходит его создание (Creat/NewObject), созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр? Этот глобальный класс, назовем его _server должен находиться в том же .vcx, где у вас нахолится _application. Если заполнен его Init, то его нужно освободить во временную процедуру _server._init, к этому можно будет вернуться позже. Этот объект лучше добавлять AddObject() к goApp, но сейчас это у вас вызовет затруднения, знаю по себе. Поэтому сейчас лучше объявлять его как глобальную переменную goServer (условимся названия принимать мои, чтобы избежать ненужных разночтений). Он один и объявляется примерно после того, когда у вас закончились SET-настройки и установлены пути. PUBLIC goServer goServer = CREATEOBJECT('_server') (я использую CREATEOBJECT(), может и есть какая разница от NEWOBJECT(), мне неважно) Теперь его методы и свойства будут доступны как глобальные для всего приложения, и в него можно начать закачивать все необходимые процедуры для работы с SQL-сервером. Однако это не исключает, что в случае какой необходимости вы на местах можете писать свои процедуры. При закрытии приложения этот объект обязательно нужно закрывать, иначе он будет торчать в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 18:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Этот глобальный класс, назовем его _server должен находиться в том же .vcx, где у вас нахолится _application. ... А в другой библиотеке классов _server может находиться или обязательное условие одновременное нахождение с _application и чем грозит находжение их в разных библиотеках классов? sg12Если заполнен его Init, то его нужно освободить во временную процедуру _server._init, к этому можно будет вернуться позже. ... Поясните, что такое временная процедура _server._init это имя файла с таким расширением? sg12Поэтому сейчас лучше объявлять его как глобальную переменную goServer (условимся названия принимать мои, чтобы избежать ненужных разночтений). ... Не вопрос, договорились. sg12Он один и объявляется примерно после того, когда у вас закончились SET-настройки и установлены пути. PUBLIC goServer goServer = CREATEOBJECT('_server') (я использую CREATEOBJECT(), может и есть какая разница от NEWOBJECT(), мне неважно) ... Тут всё понятно, непонятно в следующей цитате: sg12Теперь его методы и свойства будут доступны как глобальные для всего приложения, и в него можно начать закачивать все необходимые процедуры для работы с SQL-сервером. ... Как закачивать (те с помощью чего) и какие процедуры необходимы для работы с SQL сервером, расскажите по подробнее? sg12При закрытии приложения этот объект обязательно нужно закрывать, иначе он будет торчать в памяти. Тут тоже не очень понятно, зачем этот обьект закрывать, ведь при повторном запуске не надо тратить ресурсы на его создание, а можно этот обьект повторно использовать, .. Вам не кажется, что лучше не закрывать, так более рационально, можно использовать ресурсы компа или всё таки необходимо его закрыть, тогда какие последствия могут возникнуть, если этот обьект не закрывать? А если просто выдать команду QUIT обьект всё рано останется в памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 20:19 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist _server вместе c _application необязательно в одной библиотеке (назовем _appobj.vcx/_appobj.vct), но намного удобнее, это будет часть фреймворка. Методы _server не используются (init,destroy,error ..., да и вообще это слово "метод" с _server не будем употреблять, только слово "процедуры"), но у вас ведь там могут быть коды. Чтобы они не пропали для следующей переделки, мы их сохраняем в специально созданных нами временных процедурах в этом же классе с приставкой "_". Куда-то нам их сейчас надо деть, после переделки кодов эти временные процедуры нам будут не нужны. "Закачивать" - неудачный термин. Вы будете создавать в этом классе новые нужные вам процедуры и постепенно переносить процедуры из разных углов и форм в этот класс. Разумеется, продуманно и с отладкой - теперь этот класс у вас "резиновый" и модифицируется. Но это надо смотреть конкретно, когда приступите к этому. Например, вы уже можете начать переносить процедуры подключения к серверу. Закрывать объекты обязательно, повторно они не используются. Вообще, с объектами правило жесткое - что создано, открыто - должно быть продуманно и вовремя закрыто. Иначе заставит это сделать обработчик ошибок, если вообще закроете программу. Да и по новой они не запустятся, запросят "убить", т.е. очистить из памяти. Команды типа QUIT, CLEAR ALL и т.п. в основном надо привыкать рассматривать как аварийные - значит где-то в программе недоделки, хотя они все уничтожают. Если при процедурном программированни такой метод сходит, то с объектами быстро выявляется через ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 21:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist ...Методы _server не используются (init,destroy,error ..., да и вообще это слово "метод" с _server не будем употреблять, только слово "процедуры"), но у вас ведь там могут быть коды. Чтобы они не пропали для следующей переделки, мы их сохраняем в специально созданных нами временных процедурах в этом же классе с приставкой "_". Куда-то нам их сейчас надо деть, после переделки кодов эти временные процедуры нам будут не нужны. ... А, вот оно что, а я думал что "init,destroy,error" - это события, а не методы, и считал, что код в родительском классе не обязательно сохранять как отдельный метод, а достаточно пергрузить код связанный событиями и методами из дочернего класса и при необходимости код родителя вызвать из дочернего класса ... ну да ладно, как условились будем их называть процедурами. sg12PaulWist "Закачивать" - неудачный термин. Вы будете создавать в этом классе новые нужные вам процедуры и постепенно переносить процедуры из разных углов и форм в этот класс. ... Ок, не возражаю. sg12PaulWist Например, вы уже можете начать переносить процедуры подключения к серверу. Хорошо, а покажите код который Вы используете для подключения к серверу? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 22:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistХорошо, а покажите код который Вы используете для подключения к серверу? Коды у меня сырые, и вам придется довести их под свои нужды, как договорились. Вот то, что вы просили, вряд ли у вас вызовет затруднения: * Процедура DoSQL() LPARAMETERS tcCase LOCAL lcString,lnDisconnect,i DO CASE CASE tcCase == 'Otkr' *lcStr = goApp.oInfo.ServerList('SQL') lcStr = 'Соединение,Проверка,Параметры,Инициализация,БазаДанных,ИмяСервера,Логин,Регистрация' FOR i = 1 TO GETWORDCOUNT(lcStr,',') IF !THIS.DoSQLEx(GETWORDNUM(lcStr,i,',')) goSet.hSQL = 0 RETURN .F. ENDIF ENDFOR CASE tcCase == 'Zakr' lnDisconnect = SQLDISCONNECT(goSet.hSQL) IF lnDisconnect > 1 THIS.DoSQL_Error('Disconnect',lnDisconnect) ENDIF goSet.hSQL = 0 ENDCASE ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 10:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Нет, ну мне вот всё-таки стало интересно. sg12, о чём говорил Владимир, и чего я не пойму - ну зачем процедура/метод с кейсом, если внутри кейса разные по смыслу действия производятся? Чем DoSQL('Otkr') и DoSQL('Zakr') лучше OpenConnection()/ExecuteSQL() и CloseConnection()? Смысл таких изменений какой? Вы уже 15-ю страницу только и делаете, что обвиняете других в троллизме, глупости и пр., но сами так и не удосужились внятно разъяснить преимущества своего подхода, или хотя бы недостатки других подходов. ЗЫ. На всякий - да, я прочитал всю ветку. Объяснений не было. Правда, посты с закидыванием собеседников какашками я сразу же пропускал, не читая до конца. ЗЗЫ. А что делает DoSQLEx? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 10:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWistХорошо, а покажите код который Вы используете для подключения к серверу? Коды у меня сырые, и вам придется довести их под свои нужды, как договорились. ... ОК, не вопрос. sg12...Вот то, что вы просили, вряд ли у вас вызовет затруднения: * Процедура DoSQL() LPARAMETERS tcCase LOCAL lcString,lnDisconnect,i DO CASE CASE tcCase == 'Otkr' *lcStr = goApp.oInfo.ServerList('SQL') lcStr = 'Соединение,Проверка,Параметры,Инициализация,БазаДанных,ИмяСервера,Логин,Регистрация' FOR i = 1 TO GETWORDCOUNT(lcStr,',') IF !THIS.DoSQLEx(GETWORDNUM(lcStr,i,',')) goSet.hSQL = 0 RETURN .F. ENDIF ENDFOR CASE tcCase == 'Zakr' lnDisconnect = SQLDISCONNECT(goSet.hSQL) IF lnDisconnect > 1 THIS.DoSQL_Error('Disconnect',lnDisconnect) ENDIF goSet.hSQL = 0 ENDCASE Два вопроса: 1. Что делает THIS.DoSQLEx(GETWORDNUM(lcStr,i,',')), хотелось бы увидеть код этой, как мы договарились, - процедуры. 2. goSet.hSQL - это как я понимаю хендл соединения, goSet - это скорее всего ещё один глобальый обьект (судя по названию) , собственно вопрос - покажите код, как значение hSQL становится отличным от нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 10:49 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWistХорошо, а покажите код который Вы используете для подключения к серверу? Коды у меня сырые,Ну вот и отмазы пошли :) и вам придется довести их под свои нужды, как договорились. Вот то, что вы просили, вряд ли у вас вызовет затруднения: * Процедура DoSQL() LPARAMETERS tcCase LOCAL lcString,lnDisconnect,i DO CASE CASE tcCase == 'Otkr' *lcStr = goApp.oInfo.ServerList('SQL') lcStr = 'Соединение,Проверка,Параметры,Инициализация,БазаДанных,ИмяСервера,Логин,Регистрация' FOR i = 1 TO GETWORDCOUNT(lcStr,',') IF !THIS.DoSQLEx(GETWORDNUM(lcStr,i,',')) goSet.hSQL = 0 RETURN .F. ENDIF ENDFOR CASE tcCase == 'Zakr' lnDisconnect = SQLDISCONNECT(goSet.hSQL) IF lnDisconnect > 1 THIS.DoSQL_Error('Disconnect',lnDisconnect) ENDIF goSet.hSQL = 0 ENDCASEИ эти люди запрещают нам ковырятьтся в носу (с) :) Хотите я вам накидаю вот такие процеДУРЫ, авторов которых иногда так хочется долбануть чем-нить тяжелым? Ибо сопровождать их сплошное мучение. Вы почему решили, что открываете для нас что-то новое? ООП как раз и придумано в том числе и для избавления от таких портянок. ps: трюк с плохим и хорошим полицейскими таки сработал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 11:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Структура DoSQLEx() типовая: DO CASE CASE tcCase == 'Соединение' CASE tcCase == 'Проверка' * и т.д. ENDCASE Пункты заполняете своими кодами, они ведь у вас есть, только чуток их разделите по шагам и переделаете. Ну, не буду же я вам их из хелпов копировать, вы вроде не новичок. Вам эти коды надо будет тщательно отладить и во всех приложениях вызывать этот объект. Если у вас какая есть специфика в каком приложении, то вы добавляете еще CASE (т.е. решаете вопрос универсально в _server), но в строку lcStr вставляете нужный вызов в нужном месте уже в приложении. Если в каком приложении нет необходимости в каких пунктах, то вы их просто убираете из lcStr. Т.е. конфигурацию и порядок подключения вы создаете теперь уж не в каждом коде в приложении, а индивидуально одними маневрами с lcStr. Обратите внимание, что подлинная строка lcStr забита звездочкой для простоты изложения. Аналогична структура DoSQL_Error: DO CASE CASE tcCase == 'Connect' CASE tcCase == 'Disconnect' CASE tcCase == 'Exec' ENDCASE goSet это глобальный объект класса EMPTY, свойства которого заменяют все Public и константы. Создается в самом начале при запуске, о нем я упоминал в начале темы. После того, как вы его освоите, от него уже не откажетесь, удобная вещь. Ноу-Хау не мое, я давно еще его откуда-то слизал. tanglir. Разница в том, что в своем варианте вы на каждый код геройски бросаетесь каждый раз в каждом приложении как на амбразуру. Просмотрите темы, в основном выясняется - не там не та буква проставлена и поиск ее приравнивается к подвигу. Здесь же коды подразделяются, отлаживаются один раз в объектах и из приложений только вызываются. После этого ошибка может возникнуть только при передачи неверных параметров. Если у вас аллергия на DO CASE, то вы можете разделить процедуры и возиться с вызовами вместо Otkr/Zakr, с постоянными поисками нужных названий и ошибок в синтаксисе. Если вы в постах ищете только какашки, то это ваша проблема. Sergey Sizov Накидайте. Только напомню, что вы один раз накидывали, только не процедуры, а "сусликов". И не переоценивайте себя - здесь не только "полицейские", на компетентно сформулированные вопросы я отвечаю серьезно. И если уж сам tanglir начал просматривать тему - это что-то значит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 12:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
>Разница в том, что в своем варианте вы на каждый код геройски бросаетесь каждый раз в каждом приложении как на амбразуру. Нет такой разницы - см. ниже. >Просмотрите темы, в основном выясняется - не там не та буква проставлена и поиск ее приравнивается к подвигу. Если "не та буква" проставлена внутри кейса, а не внутри процедуры, это как-то облегчит нахождение места ошибки?? >Если у вас аллергия на DO CASE, то вы можете разделить процедуры и возиться с вызовами вместо Otkr/Zakr, с постоянными поисками нужных названий и ошибок в синтаксисе. У меня аллергия на пихание в ду кейс всего подряд. И какая всё-таки разница, что искать - название процедуры или название параметра? Ну и ошибки синтаксиса опять же могут быть что в отдельной процедуре, что в одном из "кейс"ов... Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Код: sql 1. 2. 3. 4. 5. 6.
Вообще не понял. То есть имеется метод goApp.oInfo.ServerList('SQL'), который может возвращать некую строку. Потом в DoSQL эта строка разбивается на "слова", которые скармливаются DoSQLEx-у. Вопрос - вот, например, запустили DoSQL с параметром "открыть", получили строку со словом "соединение", скормили эту строку DoSQLEx-у. Что там в кейсе соответствующем будет? Соединение с сервером? А параметры соединения откуда возьмутся? Из другого свойства/метода объекта goApp? Или всё-таки формат строки lcStr несколько иной? Как по мне, так проще - чисто для читабельности даже - сделать отдельный метод для соединения, туда и параметры соединения можно сразу прописать (в смысле, как параметры метода), а не подтягивать не пойми что где-то посреди кода, который кому-то, возможно, ещё и в наследство достанется. >Если вы в постах ищете только какашки, то это ваша проблема. У меня проблема несколько иного характера - я их не ищу, но, к сожалению, они там есть. И при просмотре темы "находятся" сами собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 12:59 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirИли всё-таки формат строки lcStr несколько иной?Хотя нет, именно такой, количество параметров DoSQLEx не оставляет в этом сомнений. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Я понял зачем этот огород с кэйсами. Чтоб в строчку последовательность действий написать и циклом вызвать по очереди Код: sql 1.
Только я так и не понял что такого криминального в последовательности вызовов методов Код: sql 1. 2. 3.
И как в этой однострочной схеме параметры передавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TИ как в этой однострочной схеме параметры передавать?Подозреваю, что так: tanglirА параметры соединения откуда возьмутся? Из другого свойства/метода объекта goApp? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:16 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
И чего делать когда код мегаметода DoSQLEx() дорастает до 64к и перестанет работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:34 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Накидайте. Только напомню, что вы один раз накидывали, только не процедуры, а "сусликов". И не переоценивайте себя - здесь не только "полицейские", на компетентно сформулированные вопросы я отвечаю серьезно. И если уж сам tanglir начал просматривать тему - это что-то значит.Самолюбование продолжается :) Аргументов опять 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:40 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Структура DoSQLEx() типовая: DO CASE CASE tcCase == 'Соединение' CASE tcCase == 'Проверка' * и т.д. ENDCASE Пункты заполняете своими кодами, они ведь у вас есть, только чуток их разделите по шагам и переделаете. Ну, не буду же я вам их из хелпов копировать, вы вроде не новичок. Вам эти коды надо будет тщательно отладить и во всех приложениях вызывать этот объект. Если у вас какая есть специфика в каком приложении, то вы добавляете еще CASE (т.е. решаете вопрос универсально в _server), но в строку lcStr вставляете нужный вызов в нужном месте уже в приложении. Если в каком приложении нет необходимости в каких пунктах, то вы их просто убираете из lcStr. Т.е. конфигурацию и порядок подключения вы создаете теперь уж не в каждом коде в приложении, а индивидуально одними маневрами с lcStr. Обратите внимание, что подлинная строка lcStr забита звездочкой для простоты изложения. Аналогична структура DoSQL_Error: DO CASE CASE tcCase == 'Connect' CASE tcCase == 'Disconnect' CASE tcCase == 'Exec' ENDCASE goSet это глобальный объект класса EMPTY, свойства которого заменяют все Public и константы. Создается в самом начале при запуске, о нем я упоминал в начале темы. После того, как вы его освоите, от него уже не откажетесь, удобная вещь. Ноу-Хау не мое, я давно еще его откуда-то слизал. ... Фу блин, наконец-то мы добрались до сути вопроса Ниже я привел код в ваших терминах, что бы вам не мучаться,.... Заполните переменные server, uid, pwd в методе, блин "процедуре" DoSQLEx класса _Server, нажмите на Кнопку и ПОКАЖИТЕ КАК ПОЛУЧИТЬ алиас SqlResult в приватной сессии данных формы gridcommand ??? Код: sql 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.
И после этого прочтите ещё раз ссылку от Алексея Цингауза. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglir Если не та буква проставлена, то здесь вы отлаживаете раз и навсегда. Если же вы это делаете в приложении, то этим занимаетесь постоянно и каждый раз. Распутаем lcStr. В lcStr в приложении вы выставляете только те пункты, которые вам надо выбрать из DoSQL. К примеру, ведь к серверу можно подсоединиться не только через строку. Тогда будет так, с отлаженными кодами, они ведь кушать не просят: CASE tcCase == 'Соединение' CASE tcCase == 'Соединение2' CASE tcCase == 'Соединение3' В них и отрабатываются параметры соединений. Забегая вперед - они тоже хранятся в приложении, в том же goApp.oInfo, но в другой процедуре ConnectList. Но сама процедура их обработки находится в 'Соединении' и отлаживается тоже один раз. Но теперь в приложении у вас уже появится выбор, в зависимости от задачи: lcStr = 'Соединение' или, а не "и" lcStr = 'Соединение2' Или к примеру с параметрами подсоединения, у вас может несколько наработанных конфигураций: CASE tcCase == 'Параметры' CASE tcCase == 'Параметры2' ... И нужный один из них вы также выбираете в lcStr. Или, другой пример, в каком-то приложении вам необходимо обойтись без логина - вы просто не вписываете это слово в lcStr. Хотя в _server у вас уже есть отлаженный код, он в этом конкретном приложении вам не нужен. Если вам для читабельности что-то другое нужно - это ведь только структура кодов класса _server, а не библия. Коды вам в зубы - и вперед. Я совершенно спокойно отношусь, если что оказалось не так. ДимаТ. Если код процедуры разрастется, то он разделяется на несколько процедур. На самом деле этот код не так велик. С параметрами - допишите их, это же "сырой" код, в принципе только структура кода. Сейчас основное - понять смысл преобразований, поэтому я не загромождаю деталями. PaulWist CASE tcCase == 'SQLEXEC' пока перенесите в процедуру _DoSQLExec(), пропавший алиас будем искать там, но сначала надо подключиться к серверу. goServer.DoSQLEx('Connect') вынесите из формы в свою процедуру запуска приложения до открытия форм - сначала надо подключиться к серверу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 14:42 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist CASE tcCase == 'SQLEXEC' пока перенесите в процедуру _DoSQLExec(), пропавший алиас будем искать там, ... Не вопрос Только давайте договоримся, код примера я привёл, а Вы теперь модифицируйте его так, что бы результат запроса select @@version попал в приватную сессию данных используя вызов SQLEXEC в методе глобального обьекта (так сказать даш на даш),.... потренируйтесь, и потом расскажите что у вас получится. sg12... но сначала надо подключиться к серверу. goServer.DoSQLEx('Connect') вынесите из формы в свою процедуру запуска приложения до открытия форм - сначала надо подключиться к серверу. И что изменится, какая разница в каком месте подключаться? Вы серьёзно думаете, что от перестановки мест вызова подключения что-то изменится в поведении обьектов? Прочтите ещё раз ссылку от Алексея Цингауза, подумай и переосмыслите что же делает пример. Код: sql 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 15:03 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Что-то вы меня совсем запутали с этим 'НЕТУ алиаса'. Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки. Алиас появляется? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 16:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 16:54 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки. Это ж отстало-ущербное процедурное программирование Как же свелое будущее: sg12избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 16:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Что-то вы меня совсем запутали с этим 'НЕТУ алиаса'. Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки. Алиас появляется? Ну, так дело не пойдёт, мы же вроде договорились, я написал тестовый пример, а вы модифицируете его и показываете результат,... те добавьте в форму процедуру и запостите код на форуме. PS но не забудьте про парадигму ООП, что бы в итоге не вышло процедурного программирования :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:24 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T[Это ж отстало-ущербное процедурное программирование Не спешите. Надо сначала найти этот алиас. ООП не означает наличие аллергии на процедурное программирование. В фоксе ведь предусмотрено SET PROCEDURE TO, которым мы можем подключить (и подключаем) глобальный процедурный модуль mainutil.prg А там мы можем на законных основаниях тоже глобально разместить эту процедуру DoSQLEXec(). И т.п., если возникнет в этом необходимость. И если в форме этот алиас найдется, то эту процедуру мы можем глобально разместить в родительском классе без ущерба для здоровья. Но пока разберемся с тем, что есть, не все еще потеряно. RAZ_DVA_TRI Вы не могли бы разместить здесь полностью этот свой код с картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:26 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Давайте сначала найдем этот алиас. Он появился? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:28 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWist Давайте сначала найдем этот алиас. Он появился? Вы тестовый код-то запускали? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistsg12PaulWist Давайте сначала найдем этот алиас. Он появился? Вы тестовый код-то запускали? Нет. Я вам вполне доверяю. Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок. Я нашел глобальный косяк. Ошибку проектирования ООП приложения. Вот он Код: sql 1.
Это же хэндл соединения. единственная связь с БД !!! Его надо максимально изолировать от остального кода приложения, а то вдруг какой криворучка напишет Код: sql 1.
и все. капец. Инкапсуляцию в ООП ведь придумали не зря. Надо hSQL объявить PRIVATE и никуда не давать даже через методы goSet, а то криворучка напишет Код: sql 1.
и опять капец. Чего делать будем? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Ты гений ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TЧего делать будем? Если честно, то я и сам сомневаюсь, насколько целесообразно загонять хендл сервера в goSet - уж больно он перегружен параметрами и процедурами, которые с ними работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 19:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima TЧего делать будем? Если честно, то я и сам сомневаюсь, насколько целесообразно загонять хендл сервера в goSet - уж больно он перегружен параметрами и процедурами, которые с ними работают. и какие будут предложения? Применение ООП это не только повторное использование кода. Второй плюс инкапсуляции снижение ошибок при командной разработке, тут опытный разработчик пишет ядро, инкапсулирует все критически важное в свои классы, защищая ядро от ошибок неопытного, которому доверено незначительная часть работы. А тут мы всем и вся хендл сервера раздаем. Может явно его закрывать никто не будет, но запросто могут, например, запрос сделать с докачкой (.FetchAsNeeded = .T.) и тут все работать перестанет пока результат не докачался. Поэтому следуя правилам ООП надо прятать хэндл глубоко и доверять его использование только проверенному на 10 раз коду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 19:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Если не та буква проставлена, то здесь вы отлаживаете раз и навсегда. Если же вы это делаете в приложении, то этим занимаетесь постоянно и каждый раз.Нет. Одну и ту же букву, дествительно, можно отладить либо "раз и навсегда", либо "постоянно". Но никакой разницы между тем, находится эта буква в одной большой процедуре под кейсом или же она находится в отдельной процедуре, нет. Если всё-таки разница есть, объясните подробнее, в чём же именно она заключается. sg12В lcStr в приложении вы выставляете только те пункты, которые вам надо выбрать из DoSQL. К примеру, ведь к серверу можно подсоединиться не только через строку. Тогда будет так, с отлаженными кодами, они ведь кушать не просят: CASE tcCase == 'Соединение' CASE tcCase == 'Соединение2' CASE tcCase == 'Соединение3' В них и отрабатываются параметры соединений. Забегая вперед - они тоже хранятся в приложении, в том же goApp.oInfo, но в другой процедуре ConnectList. Но сама процедура их обработки находится в 'Соединении' и отлаживается тоже один раз.Отлично, см. выше, я уже упоминал, что можно сделать процедуру ConnectSQL. А в неё уже передавать... да хоть имя соединения, хоть напрямую его параметры - кто как посчитает нужным. И она точно так же "отлаживается один раз". В чём преимущество вашего подхода? sg12Но теперь в приложении у вас уже появится выбор, в зависимости от задачи: lcStr = 'Соединение' или, а не "и" lcStr = 'Соединение2'Что значит "или, а не и"? В моём варианте тоже есть выбор - какие параметры передадим в ConnectSQL, такое соединение и получим. sg12Или, другой пример, в каком-то приложении вам необходимо обойтись без логина - вы просто не вписываете это слово в lcStr."без логина" - в смысле, без соединения с сервером? Отлично, я просто не буду вызывать в этом приложении ConnectSQL :) Или это означало "используя некие дефолтные параметры соединения"? Опять же нет разницы, как к этим параметрам обращаться - из кейса или из отдельной процедуры. sg12Коды вам в зубы - и вперед.Пока что эти коды основаны на идее, применять которую я не вижу особого смысла. Так что пытаться в зубы мне их совать ещё рановато - не возьму. sg12Если код процедуры разрастется, то он разделяется на несколько процедур.Ну так а какой тогда вообще смысл в это горожении огорода с кейсами, если в конце концов всё равно приходится делить? Кстати, а по какому принципу делите? Что оставляете в "старой" процедуре, что в "новую" переходит? sg12Сейчас основное - понять смысл преобразований+1 Я вот пока так и не понимаю. Точнее, "смысл" я понимаю, но не вижу существенных отличий в лучшую сторону от "не-дукейсового" подхода. Таких, чтобы всё бросать и срочно переписывать весь код. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 05:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12PaulWistпропущено... Вы тестовый код-то запускали? Нет. Я вам вполне доверяю. Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок. 1. У меня вопрос - а Вы умеете/знаете как запустить приведённый тестовый код? и если знаете, то что вам помешало это сделать? 2. Дык, я уже чуть ли не неделю пытаюсь получить код класса для SQLEXEC() написанный вами, а кода всё нет и нет,... обьясните, как можно найти ошибку, в том чего нет. Судя по всему, такого кода вы никогда не писали, а честно признаться "религия" не позволяет хотя я могу ошибаться. 3. Главная ошибка в самом принципе построения, предложенный подход используется в процедурном программировании, в ООП совсем другие "парадигмы", причём вариантов реализации достаточно много, собственно об этом уже многие говорили, в том числе и ВладимирМ :) То что Вы предлагаете - это бредсивкэйбл, через это проходят почти все новички,... ничего личного, просто констатация факта. 4. Если есть конкретные вопросы, то задавайте, лучше всего в таком виде: "я делаю так-то и так-то, получается то-то, а хочу получить то-то" PS Ещё раз повторю, ничего личного. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 09:37 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Переход на избитые темы типа "СамТыКто" и "КтоТытакой" не является аргументом в таких вопросах. Такой класс имеется в поставке VFP9, находится в FFC-dataquery.vcx-execsp, вполне доступен. Он тоже глобальный и перетаскивается мышкой на формы. Я немного просмотрел материалы по этому вопросу. Проблема вами изложена достаточно четко, но она неоднозначна. Во избежание казусов возможным решением является передача в процедуру goServer.DoSQLExec() как параметров DS или THISFORM, с последуюющей обработкой сессии. Т.е. примерно так, как на картинке несколькими постами выше. Еше один глобальный класс на основе Custom. Создайте его под именем _mediator в новой библиотеке _custobj.vcx. Добавьте в него эту процедуру DoSQLExec(). Затем откройте свою форму и мышкой добавьте туда этот объект под именем oMediator. Тогда строка вызова из кнопки примет вид THISFORM.oMediator.DoSQLExec(). Как видите, решений достаточно и нет необходимости в вашем классе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 17:07 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Модератор: Есть предложение закрыть тему, так как посты постоянно переходят на обсуждение личных качеств участников дискуссии... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 00:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Sergey Ch Вернемся к теме. Вопрос: Что означает "правильно спроектированное приложение"? Мое мнение - этот термин в Фоксе игнорируется и под этим понятием почти каждый понимает свое творчество. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 09:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 09:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
RAZ_DVA_TRIsg12RAZ_DVA_TRI Вы не могли бы разместить здесь полностью этот свой код с картинки. тама Спасибо. Емкое решение. PaulWist Вот еще код установки DS из поставки VFP9: LOCAL liSession liSession = SET("DATASESSION") DO CASE CASE VARTYPE(_SCREEN.ACTIVEFORM.DATASESSIONID) = "N" AND liSession # _SCREEN.ACTIVEFORM.DATASESSIONID SET DATASESSION TO (_SCREEN.ACTIVEFORM.DATASESSIONID) CASE VARTYPE(_SCREEN.ACTIVEFORM.PARENT.DATASESSIONID) = "N" AND liSession # _SCREEN.ACTIVEFORM.PARENT.DATASESSIONID SET DATASESSION TO (_SCREEN.ACTIVEFORM.PARENT.DATASESSIONID) OTHERWISE * we're in the right datasession already ENDCASE ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 09:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Вопрос: Что означает "правильно спроектированное приложение"? Мое мнение - этот термин в Фоксе игнорируется и под этим понятием почти каждый понимает свое творчество. И как много "творчества" было проанализировано для столь серьезного заявления? Какая была репрезентативность выборки? и неплохо было бы услышать с чем сравнивалось, т.е. что подразумевается под словами "Мое мнение". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 20:22 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Вопрос: Что означает "правильно спроектированное приложение"? Мое мнение - этот термин в Фоксе игнорируется и под этим понятием почти каждый понимает свое творчество. И как много "творчества" было проанализировано для столь серьезного заявления? Какая была репрезентативность выборки? и неплохо было бы услышать с чем сравнивалось, т.е. что подразумевается под словами "Мое мнение". Почему же вы так высокомерно ставите слово "творчество" в кавычки, скромностью вас не попрекнешь. Я просматриваю и изучаю почти все, что более-менее связано с этой тематикой. Что и вам уже советовал, чтобы не выдумывали новые теории. Могу сказать, что отдельных решений очень много хороших, и по отдельности большинство вопросов было решено еще лет пять назад. Но все они канули в пустоту из-за отсутствии в фОксе концепции программирования - некуда внедрять, у каждого свой паровоз. Сравнивать - хотя бы здесь, с мнением поочередных ГУРУ. Аргументов мизер, в основном абстрактный треп с передергиванием понятий. Не говоря уже об основном козыре - примитивных комментариях моей личности. Даже на примере вашего учебного SQLEXEC-чудо класса это видно. Если вы опять рветесь "мериться", могу разнообразить. К примеру, тот сайт, с которого вы так гордо сумели скопировать один пример, у меня почти весь давно уже находится в черновом классе. Сумеете перевести хотя бы одну статью - покажу как это делается. Или вот вам начало кода универсального объекта oWinapi, работающего с winapi-функциями непосредственно в формате из MSDN. DO CASE CASE tcCase == 'Fun' lcString = THIS.DoEx('List','Fun',tcName) IF EMPTY(lcString) MESSAGEBOX('Ошибка ввода. Функция не определена.') RETURN .F. ENDIF THIS.DoEx('Object','Fun',lcNameObj) WITH goWinapi lcFile = GETWORDNUM(lcString,2,'~') lcError = GETWORDNUM(lcString,3,'~') lcResult = GETWORDNUM(lcString,4,'~') lcReturn = GETWORDNUM(lcString,5,'~') lcString = GETWORDNUM(lcString,7,'~') lcDeclare = GETWORDNUM(lcString,1,'(') lcDeclare = THIS.DoEx('Type','Declare',lcDeclare) lcString = GETWORDNUM(GETWORDNUM(lcString,2,'('),1,')') THIS.DoEx('Type','Fun',lcString) lcStr = '' FOR i = 1 TO ALEN(.aWinapi,1) lcStr = lcStr + ',' + .aWinapi[1,1] + ' ' + IIF(.aWinapi[1,3],'@','') + ' ' + .aWinapi[1,2] ENDFOR lcDeclare = lcDeclare + ' IN ' + lcFile + ' AS ' + 'w_' + tcName + ' ' + SUBSTR(lcStr,2) DECLARE &lcDeclare lcStr = '' FOR i = 1 TO ALEN(.aWinapi,1) lcStr = lcStr + ',' + IIF(.aWinapi[1,3],'@','') + 'tuParam' + ALLTRIM(STR(i)) ENDFOR lcStr = 'w_' + tcName + '(' + SUBSTR(lcStr,2) + ')' luResult = &lcStr IF !EMPTY(lcError) AND !EMPTY(lcResult) AND EVALUATE(lcResult) THIS.DoError(lcError,lcResult) ENDIF CLEAR DLLS &lcAlias ENDWITH RELEASE goWinapi RETURN EVALUATE(lcReturn) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 17:46 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Почему же вы так высокомерно ставите слово "творчество" в кавычки, скромностью вас не попрекнешь. Я просматриваю и изучаю почти все, что более-менее связано с этой тематикой. Что и вам уже советовал, чтобы не выдумывали новые теории. Могу сказать, что отдельных решений очень много хороших, и по отдельности большинство вопросов было решено еще лет пять назад. Но все они канули в пустоту из-за отсутствии в фОксе концепции программирования - некуда внедрять, у каждого свой паровоз. Сравнивать - хотя бы здесь, с мнением поочередных ГУРУ. Аргументов мизер, в основном абстрактный треп с передергиванием понятий. Не говоря уже об основном козыре - примитивных комментариях моей личности. Даже на примере вашего учебного SQLEXEC-чудо класса это видно. Если вы опять рветесь "мериться", могу разнообразить. К примеру, тот сайт, с которого вы так гордо сумели скопировать один пример, у меня почти весь давно уже находится в черновом классе. Сумеете перевести хотя бы одну статью - покажу как это делается. Потрясающий пример скромности :) Как обычно: в чужом глазу и т.д. И обязательные ГУРУ в тему и не в тему :)Или вот вам начало кода универсального объекта oWinapi, работающего с winapi-функциями непосредственно в формате из MSDN. DO CASE CASE tcCase == 'Fun' ... DECLARE &lcDeclare ... luResult = &lcStr ... Еще одно потрясение :) Потрясающе по новизне, оригинальности, форматированию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 18:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
И тут же следует подтверждение ПустоТрепа, даже попытка разнообразить не помогла. Очень уж кому-то хочется, чтобы я его к гуру причислил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 18:50 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 АнекдотНовичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался! Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется. Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами! Старожил: Какое дерево? Ты вообще соображаешь, что говоришь? Новичок: Чем мне нравиться этот форум - из двух ответов ниодного конкретного. Одни вопросы неподелу! Старожил: Не нравится - тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить. Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!! Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!! Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность: Новичок: Спасибо, братан! То что нужно!!! Вы выступаете в роли автора проекта деревянного небоскреба. Проблема в том, что Вы сейчас просто не в состоянии понять то, что Вам пытаются объяснить. Но не потому, что это что-то сложное или заумное. А по той причине, что Вы уже придумали для себя некий примерный ответ и все то, что не попадает в Ваш "шаблон ответа" просто отбрасывается. Вы не можете сейчас адекватно воспринять ответ, что "небоскребы из дерева не строят". Вы уже настроились на то, что Вам скажут породу дерева или способ его обработки. Любой другой вариант ответа воспринимается Вами как подколки, наезды, пустотреп и т.п. "Ведь у дедушки ничего не ломается!" Ну, что же, "берите дуб". Через год..полтора посмотрим, что у Вас получится... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 20:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ И как вы мне прикажете воспринимать теперь эти ваши психологические опыты? Детсад какой-то - дубы, сосны, колобка только не хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 20:46 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583148]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
307ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 658ms |
0 / 0 |