powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Общие принципы построения приложения в FoxPro
424 сообщений из 424, показаны все 17 страниц
Общие принципы построения приложения в FoxPro
    #38125293
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтож, по просьбам откроем новую тему.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125300
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Объясните, пожалуйста, что вы имели ввиду под термином, вынесеным по вашей просьбе в заголовок темы?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125323
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Чтож, по просьбам откроем новую тему.
Sergey Ch, пожалуйста, снесите в старой теме все, начиная с моего провокационного поста.

Эту статью читали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125324
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду хотя бы общее представление о том, как приложение должно отображать/изменять данные. Интерфейс с пользователем, программная реализация этого интерфейса, хранение данных, способы обработки.

Обсуждение началось вот с этого

sg12А здесь всего три процедуры "Добавить, Удалить, Изменить" в двух вариациях.

Неужели нельзя было за десять лет написать одну универсальную обертку, где можно один раз отладить все проверки, и куда можно было бы просто передавать параметры из таблиц.

И ошибка была бы только в строке вызова, и то при неправильном синтаксисе.

Для начала примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
LPARAMETERS tcCase
DOCASE
CASE tcCase == 'Add'
***
CASE tcCase == 'Delete'
***
CASE tcCase == 'Edit"
***
ENDCASE



Как Вы вообще представляете себе процесс модификации данных с использованием подобной процедуры? Пусть даже всего в одном проекте (приложении). Где, в каком месте, Вы будете вызывать этот код?

Вот пользователь открыл приложение. Очевидно, вызвал некую форму. Далее ему надо изменить существующую запись. Что надо сделать пользователю, чтобы это произошло? Каким образом действия пользователя приведут к использованию Вашего Do Case? Где в приложении место для подобного кода?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125336
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125350
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Как вы думаете, что изменится, если из его главного модуля перенести процедуры добавления, удаления, редактирования, а также сохранения и восстановления в следующие процедуры объекта oTable
Сместится точка возникновения ошибок. Ошибки будут происходить в этом коде. Сообщения об ошибках будут указывать на этот код и будет непонятно где реально ошибка.

И как в любом универсальном коде не обойтись без макроподстановок. Как следствие такой код будет тормозить, поэтому будет неприменим в тех случаях где критично время выполнения.

В остальном ничего не изменится.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125362
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И потом сам предлагаемый шаблон изначально ущербный.
Например oTable.DoEdit('add') не сработает и ошибки не будет.
Если уж городить огород то делать oTable.Add()
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125376
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Нет, мы будем делать так и только так.
Эти коды отладим, один раз, и ошибки будут возникать только когда в эти процедуры будут передаваться неверные параметры.
Строка вызова увеличится только на один параметр.
И с макроподстановками разберемся, не надо преувеличивать.
А в тех немногих случаях когда критично, ничто не мешает вам в приложении использовать свои процедуры, и только когда в этом возникнет необходимость.

Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало.
А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы.
Или два класса - по 3 и 2, кому что по вкусу.
Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125387
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишем еще одну процедуру DoNavigate:
LPARAMETERS tcCase
DOCASE
CASE tcCase == 'Top'
***
CASE tcCase == 'Bottom'
***
CASE tcCase == 'Prior'
***
CASE tcCase == 'Next'
***
ENDCASE

Перенесем туда существующие процедуры. Главный модуль похудеет аж на целый класс.
Создадим аналогичный объект класса CommandGroup с четырьмя кнопками, разрисуем их и еще один вопрос снят.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125415
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()...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125426
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Рассуждения ваши интересны, но пока будем делать так.
Пока мы просто перестраиваем существующие рабочие процедуры из родного фоксовского главного Проекта, сохраняя существующие функциональные возможности.
Подождем, пока наши главные гуру переварят написанное и пойдем дальше.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125440
sg12Напишем еще одну процедуру DoNavigate:
LPARAMETERS tcCase
DOCASE
CASE tcCase == 'Top'
***
CASE tcCase == 'Bottom'
***
CASE tcCase == 'Prior'
***
CASE tcCase == 'Next'
***
ENDCASE

Перенесем туда существующие процедуры. Главный модуль похудеет аж на целый класс.
Создадим аналогичный объект класса CommandGroup с четырьмя кнопками, разрисуем их и еще один вопрос снят.

Да ради бога... Сделайте себе набор классов, библиотеку... Кто запрещает-то? Хотите сделать что-то а ля Дельфийский Навигатор - нет проблем. Делайте...

Я сейчас работаю на промышленном предприятии. ИТ в ней не главное подразделение, но и не то, о которое можно ноги вытирать... Разработка учетной системы ведется собственными силами на VFP8+PostrgreSQL более 10 лет, очень высокая культура разработки ПО.
В начале разработки была создана библиотека классов, где стандартным компонентам FoxPro была добавлена нужная функциональность, а также разработаны новые компоненты.
Например, у всех компонентов библиотеки есть способность "привязываться" к месту на форме. Таким образом, внешний вид формы остается неизменным при ресайзинге. Все, что нужно сделать, это указать точку привязки, скажем, грида... И написать пару строчек в методах формы...
Как результат - никто из разработчиков не использует стандартные компоненты Фокса, только из "собственной" библиотеки...

К чему я это говорю? Да к тому, что всегда надо думать, стараться учитывать нюансы, продумывать развитие на несколько шагов вперед.
Если есть наработки - используй их для облегчения решения возникающих задач. Если нет - начинай коллекционировать решения... Свои или чужие... Главное, чтобы они полезными были....
И не важно: ООП ты используешь или без него обходишься... на Фоксе пишешь, на С# или на С(без плюсов)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125443
Станислав С...кийК чему я это говорю? Да к тому, что всегда надо думать, стараться учитывать нюансы, продумывать развитие на несколько шагов вперед.
Если есть наработки - используй их для облегчения решения возникающих задач. Если нет - начинай коллекционировать решения... Свои или чужие... Главное, чтобы они полезными были....
И не важно: ООП ты используешь или без него обходишься... на Фоксе пишешь, на С# или на С(без плюсов)
Построение классов должно быть таким, чтобы автоматизировать наиболее трудоемкие операции или те, где чаще всего возникают ошибки.
Если для того, чтобы работать с классом потребуется писать объем кода, сопоставимый с тем, что был без использования класса... Да еще ошибки отлавливать будет сложнее....Тогда нафиг такие классы....

Хотя, чего это я тут основы программирования тут рассказываю....
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125564
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Никто никому не мешает изобретать свой собственный велосипед. Только не надо свое творчество называть основами программирования.

Продолжим.
В том же объекте oTable создаем процедуры DoDatabase,DoTable,DoBuffer,DoIndex,DoFilter,DoSort,DoTransact.
И по той же вышеописанной схеме через DO CASE переносим из главного Проекта все процедуры, связанные с таблицами.
Останавливаться на этом подробно не будем - сейчас это не актуально, к ним можно будет вернуться позже.
И с ужасом замечаем, что наш "страшный" Главный Проект на глазах стремительно худеет.

Если вопросов нет, то можно перейти к более "страшному" объекту - oSetting.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125578
sg12И с ужасом замечаем, что наш "страшный" Главный Проект на глазах стремительно худеет.ты че, придурок?
- "Главный Проект" не похудеет, ибо все в нем и останется
- exe тоже
ну идиот!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125582
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало.
А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы.
Или два класса - по 3 и 2, кому что по вкусу.
Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах.
Я с этого начинал десять лет назад. На сегодня для создания простого справочника мне достаточно написать одну строку в командном окне. Просто вызвать функцию создания форм справочника и передать ей имя таблицы
Код: sql
1.
CreateSprForm('tovar')


Она создает и добавляет в текущий проект две формы: для просмотра и редактирования. Добавляет таблицу в DE формы, прописывет необходимые свойства формы и контролов, в форме просмотра прописывает грид (ставит таблицу источник данных, создает там одну колонку "Наименование", прописывает туда первое текстовое поле таблицы). В форме правки вытаскивает на форму все поля.
Дальше остается только орудовать мышкой распределяя контролы по форме и прописывать Caption.

Вот для примера сделал с нуля проект за 10 минут. Два справочника.
Тут весь код для создания
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
lcPath = 'C:\Test\Base\'
create table (lcPath + 'Tovar.dbf') free (nTovarId i autoinc, cTovar c(50), nGroupId i)
index on nTovarId tag nTovarId
index on cTovar tag cTovar
create table (lcPath + 'Group.dbf') free (nGroupId i autoinc, cGroup c(50))
index on nGroupId tag nGroupId 
index on cGroup tag cGroup 
close Databases all

CreateSprForm('Tovar')
CreateSprForm('Group')


На картинке скриншот того что получилось. Теперь о доступном функционале:
Все формы немодальные. Можно открыть несколько записей справочника на правку. Автоизменение размера шрифта в зависимости от разрешения экрана и возможность задать свой размер.
В форме с гридом все необходимое для работы без мыши: поиск по первым буквам, установка фильтра, "горячие" клавиши (Ins добавить, Del удалить и т.д.). В меню по правой кнопке мыши копирование в буфер обмена всего показанного в гриде.
В форме редактирования прописана буферизация на случай отмены изменений.

Еще раз подчеркиваю - не писал вообще ни одной строчки кода внутри форм.
Осталось написать код создания меню, start.prg из десятка строк и прога готова. Как-то так должно быть как мне кажется.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125608
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

В этот раз согласен.
Но даже не зная твоей проги, могу уверенно сказать, что она легко впишется в описываемый перестроенный главный модуль.
И при этом значительно упростится, так как часть ее функционала уже будет сидеть в нем.
К примеру кнопки - пара кнопок Сохранить и Отмена это стандартный объект на основе CommandGroup, пригодный куда угодно. Другую группу кнопок я уже описал.
Твой текстбокс с кнопкой "..." тоже выносится в базовые классы в виде контейнера и его не надо будет писать в каждой проге.
Автоизменение сам бог прописал решить универсально в классе на основе Custom, добавляемым в формы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125654
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжим перестройку главного модуля VFP9.
В объект oSetting из него переносятся многочисленные процедуры, выполняемые при запуске и при закрытии программ.
Они группируются попарно - то, что открыто, по идее должно быть закрыто.

Структура этих процедур едина:
LPARAMETRS tcCase
DO CASE
CASE tcCase == 'Otkr"
* Выполняется при запуске
CASE tcCase == 'Zakr'
* Выполняется при выходе из программы.
ENDCASE

Примерный перечень этих процедур, при необходимости он дополняется:
DoGlobal,DoCheck,DoEnvironment,DoSystToolbars,DoProectWindow,DoScreen,DoSplash,DoTable,DoToolbar,DoMenu,DoForm
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125697
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВот для примера сделал с нуля проект за 10 минут. Два справочника.
...
Все формы немодальные. Можно открыть несколько записей справочника на правку.
...

Вот с этого места по подробнее:

- что является базовым классом для пары форм ФормаСправочник-ФормаРедактирование, form или formset ?

- как пара ФормаСправочник-ФормаРедактирование связаны с данными, те 'эта пара разделят одну сессию данных или у каждой своя?

- как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы?

Как это реализовано?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125715
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Чтож, по просьбам откроем новую тему.
Sergey Ch, пожалуйста, снесите в старой теме все, начиная с моего провокационного поста.
а что за старая тема (да фиг с ней) и об чём тут речь ? не, ежели чо, я Изю тудым пошлю, он всё принесёт.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125798
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закончим первый этап, а то похоже на сворачивание на базар.

Добавим объект oFoxObj.
В нем создадим процедуры DoForm,DoForms,DoToolbar,DoMenu,DoMenuShortcut, при необходимости можно добавить новые.
Перенесем в него соответствующие процедуры аналогично объекту oTable, к их отладке можно вернуться позже.
Взглянем на Главный проект, в нем осталось совсем немного и его "страшнота" куда-то подевалась.

Создадим шаблон приложения, назовем его "Test". В нем создадим дочерние объекты и из него отладим Новый Главный модуль.
Уберем в нем шереховатости, причешем, добавим функциональности.
И после отладки удивимся - шаблон-приложение почти пустой, но он прекрасно работает.

ВладимирМ, как видите, простая перестройка Главного модуля перечеркивает ваши основы построения goApp.
Вы в свое время спасовали перед этим вопросом и совместно с несколькими гуру создали взамен эту свою теорию создания альтернативного главного модуля в приложении.
Которую защищаете не всегда корректно и не только со мной.
И вреда от нее достаточно много.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125844
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima T

В этот раз согласен.
Но даже не зная твоей проги, могу уверенно сказать, что она легко впишется в описываемый перестроенный главный модуль.
И при этом значительно упростится, так как часть ее функционала уже будет сидеть в нем.
Хочешь делать oTable - делай. Мое мнение он нафиг не нужен. Это что-то из серии когда с паскаля пересаживаются на Си и дефайнами прописывают замену сишных { } на паскальный BEGIN END. Только чтобы по привычке пользоваться BEGIN END в коде.
Кстати ты бы хоть просвятил что это за такой главный модуль. Я как-то пропустил где его обсуждали.

sg12К примеру кнопки - пара кнопок Сохранить и Отмена это стандартный объект на основе CommandGroup, пригодный куда угодно. Другую группу кнопок я уже описал.
В фоксе все завязано на формах, поэтому рекомендую начинать с именно с построения своего класса формы. Сама пара кнопок "Сохранить и Отмена" без формы не используется, поэтому можешь конечно сделать их отдельно, но этим только разработку себе усложнишь. Часть кода в одном классе часть в другом, а используются всегда вместе. Да и две пары таких кнопок на одну форму тоже не потребуются.
sg12Твой текстбокс с кнопкой "..." тоже выносится в базовые классы в виде контейнера и его не надо будет писать в каждой проге.
Он так и сделан как отдельный контрол с текстбоксом и кнопкой внутри.
sg12Автоизменение сам бог прописал решить универсально в классе на основе Custom, добавляемым в формы.
Универсально не всегда удобно. Лично я это все прописал в классе формы.
Я предпочитаю укрупненные классы "ФормаПросмотр", "ФормаПравка" и т.д. у меня десяток классов форм на разные случаи.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125861
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima TВот для примера сделал с нуля проект за 10 минут. Два справочника.
...
Все формы немодальные. Можно открыть несколько записей справочника на правку.
...

Вот с этого места по подробнее:

- что является базовым классом для пары форм ФормаСправочник-ФормаРедактирование, form или formset ?
Базовый класс "БазоваяФорма". От нее унаследованы ФормаСправочник, ФормаРедактирование и вообще все классы форм. Вобщем все построено на классе БазоваяФорма.
formset никогда не использую. Если честно так и не понял зачем он вообще нужен.

PaulWist- как пара ФормаСправочник-ФормаРедактирование связаны с данными, те 'эта пара разделят одну сессию данных или у каждой своя?
У каждой формы своя.
Form.DataSession = 2 Private Data Session

PaulWist- как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы?

Как это реализовано?
После вызова дочерней формы ей передается ссылка контрол родительской формы куда вернуть фокус. По закрытию дочерней фокус возвращается на этот контрол родительской если она существует. Если родительской формы не существует - никуда не вернет.
В данном примере две ситуации:
1. ФормаСправочник вызывает ФормаРедактирование. Передается ссылка на форму ФормаСправочник. По закрытии вызывается метод ФормаСправочник куда передается ID записи которая была добавлена/исправлена. ФормаСправочник обновляется и текущая запись ставится на полученный ID, а фокус на грид.
2. Контрол ввода из справочника на ФормаРедактирование вызывает ФормаСправочник. Передается ссылка на Контрол ввода из справочника. По окончании выбора ФормаСправочник вызывает метод контрола передавая ID в параметрах. Дальше контрол сохраняет ID в таблицу, меняет отображаемый текст и устанавливает фокус на себя.

Я думаю уже понятно что длина цепочки ничем не ограничена. Можно открыть хоть сотню ФормаРедактирование одного справочника. ФормаСправочник тоже, но во избежания бардака ФормаСправочник у меня всегда одна для одного справочника.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125869
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWist- как две пары ФормаСправочник-ФормаРедактирование и ФормаСправочникГруппа-ФормаРедактированиеГруппа возвращают значения в обратном порядке, поясню: открыли СправочникТовар - открыли СправочникРедактированияТовара через новую запись товара - открыли СправочникГрупп - открыли СправочникГрупп через создание новой группы,... закрыли форму СправочникГрупп (ведь формы не модальные) , вопрос - куда вернёт ФормаРедактированияГрупп новую запись группы?

Как это реализовано?
После вызова дочерней формы ей передается ссылка контрол родительской формы куда вернуть фокус. По закрытию дочерней фокус возвращается на этот контрол родительской если она существует. Если родительской формы не существует - никуда не вернет.
В данном примере две ситуации:
1. ФормаСправочник вызывает ФормаРедактирование. Передается ссылка на форму ФормаСправочник. По закрытии вызывается метод ФормаСправочник куда передается ID записи которая была добавлена/исправлена. ФормаСправочник обновляется и текущая запись ставится на полученный ID, а фокус на грид.
2. Контрол ввода из справочника на ФормаРедактирование вызывает ФормаСправочник. Передается ссылка на Контрол ввода из справочника. По окончании выбора ФормаСправочник вызывает метод контрола передавая ID в параметрах. Дальше контрол сохраняет ID в таблицу, меняет отображаемый текст и устанавливает фокус на себя.
...

Про базовые классы - ОК, понятно.

Про связку ФормаСправочник вызывает ФормаРедактирование ссылка на ФормаСправочник передаётся непосредственно форме ФормаРедактирование или через посредника МенеджерФорм, код схематично покажи?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125871
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Закончим первый этап, а то похоже на сворачивание на базар.

Добавим объект oFoxObj.
В нем создадим процедуры DoForm,DoForms,DoToolbar,DoMenu,DoMenuShortcut, при необходимости можно добавить новые..
Простой вопрос: ты планируешь писать хэлп по результату своего творчества?

По сути ты замахнулся на создание новой среды разработки. А без описания она понятна только ее разработчику.
Все эти объекты это набор абстрактного кода, который очень не просто сходу понять непосвященному человеку.
Иногда даже сам не понимаешь почему на ровном месте что-то работать перестало после вроде бы незначительного изменения в конечном коде. Оказывается просто забыл про некоторые незначительные ограничение своих же классов.

Так что советую по минимуму отходить от штатных возможностей фокса. Выводить в классы то что действительно необходимо, а не все подряд. Хотя бы просто из уважения к тем кто будет сопровождать этот код после тебя.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125896
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistПро связку ФормаСправочник вызывает ФормаРедактирование ссылка на ФормаСправочник передаётся непосредственно форме ФормаРедактирование или через посредника МенеджерФорм, код схематично покажи?
Никаких МенеджерФорм. А это что такое вообще? Какой-то объект управляющий работой всех форм?

Вызов справочника из контрола editTovar.sprGroup.OpenSpr()
Код: sql
1.
2.
3.
lcSprForm = 'sprGroup'
do form &lcSprForm name loform
loform.SetParent(This)


Переданное запоминается в sprGroup.oParent
При возврате обратно из sprGroup
Код: sql
1.
2.
3.
4.
5.
lpara tnId
if vartype(thisform.oParent) = 'O' and PemStatus(thisform.oParent, 'SetValue', 5)
	thisform.oParent.SetValue(tnId)
endif
ThisForm.Release()



Это схематично. На самом деле все немного сложнее.
Я догадываюсь к чему ты ведешь. Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Поэтому у меня добавлен механизм уничтожения ссылок. В данном случае форма 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.
for i = 1 to 100
	if vartype(thisform.oChildLink[i]) = 'O'
		thisform.oChildLink[i].ClearParent(thisform)
	endif
endfor



PS Код схематичный. Возможно еще какие-то ньюансы забыл, давно писал. Много чего у меня в классах понаписано, старался показать только необходимое. Если не заработает, готов помочь в создании работающего примера.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125917
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПростой вопрос: ты планируешь писать хэлп по результату своего творчества?

По сути ты замахнулся на создание новой среды разработки. А без описания она понятна только ее разработчику.
Все эти объекты это набор абстрактного кода, который очень не просто сходу понять непосвященному человеку.
Иногда даже сам не понимаешь почему на ровном месте что-то работать перестало после вроде бы незначительного изменения в конечном коде. Оказывается просто забыл про некоторые незначительные ограничение своих же классов.

Так что советую по минимуму отходить от штатных возможностей фокса. Выводить в классы то что действительно необходимо, а не все подряд. Хотя бы просто из уважения к тем кто будет сопровождать этот код после тебя.

Извините, встречный вопрос, не с целью обидеть - вы понимаете, что с умным видом написали ерунду?
Неужели вы всерьез думаете, что способный создать среду разработки стал бы спрашивать мнение человека, который даже не знает, что это такое и где это находится.
Вместо того, чтобы заявки принимать по переводу с FPD на VFP9.
Большинство этих вопросов я решил еще семь-восемь лет назад. А сейчас просто сдул пыль с чудом сохранившихся кусков архивов и чуток подправил.

Действительно, время в Фоксе словно остановилось.
И не собираюсь я никому запрещать с гордым видом изобретать велосипед, если кому-то не жалко тратить на это годы своей жизни.
Дело в том, что этот ваш путь ведет в тупик, и вопрос только времени, когда вы в этом тупике окажетесь.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38125925
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭто схематично. На самом деле все немного сложнее.
Я догадываюсь к чему ты ведешь. Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется. Поэтому у меня добавлен механизм уничтожения ссылок. В данном случае форма sprGroup получив ссылку на объект формы editTovar делает встречное обращение на editTovar и регистрирует себя как хранителя ссылки. editTovar запоминает ссылку на sprGroup. по закрытии sprGroup сообщает что ссылка удалена и editTovar удаляет sprGroup из списка хранителей ссылок на него. Если пользователь хочет закрыть editTovar до sprGroup, то editTovar вызывает метод sprGroup для удаления ссылки на него в sprGroup.oParent. Перечитал, мудрено, извиняюсь если написал инструкцию по взрыву мозга :)



С мозгом действительно верно.
А что мешает вам этот вызов делать через какую-либо обертку команды DO FORM.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126375
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Эту статью читали?

Вернемся к этому вопросу, как договорились.

Смотрим на дату создания статьи:
Последние обновление: 2005-02-13 17:20
Опубликовал: Максимов Владимир

Извините, первый вопрос - а где вы были восемь лет?

Быстро пробежимся взглядом - главный файл, процедурное программирование, TasTrade ...
Набираем в хелпе TasTrade ...
Второй вопрос - о чем это?

Вы в каком году живете, друзья?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126556
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Теперь вернемся к вашим вопросам.
Вы спрашивали, как я собираюсь реализовать ... да много что вы поднаписали.
Насколько я понял, вы надеялись, что я ринусь разгребать ваши перечисления.

Нет, пока все также остается, только меняется строка вызова.
К примеру, было: oTable.Add()
Стало: oTable.DoEdit("Add")
Понадобится небольшая перестройка параметров.
Использование DO CASE это довольно мощный механизм и не я его придумал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126750
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist Эту статью читали?

Вернемся к этому вопросу, как договорились.

Смотрим на дату создания статьи:
Последние обновление: 2005-02-13 17:20
Опубликовал: Максимов Владимир

Извините, первый вопрос - а где вы были восемь лет?

Быстро пробежимся взглядом - главный файл, процедурное программирование, TasTrade ...
Набираем в хелпе TasTrade ...
Второй вопрос - о чем это?

Вы в каком году живете, друзья?

1. Ну а теперь смотрим на дату производства самого фокса 9-ой версии, ... VFP 9 (выпущен в производство 17 декабря 2004 г.) , и сравниваем с датой статьи,... теперь ответьте на вопрос что кардинально поменялось в фоксе с выходм SP1, SP2 да так, что бы это повлекло изменение "стартового" файла?

2. Действительно "пробежался" взглядом

А теперь прочтите внимательно, что там написано:

Код: plaintext
1.
2.
3.
Пример реализации подобного класса можно посмотреть в стандартном проекте, поставляемом вместе с FoxPro под названием TasTrade.pjx
 [code=sql]
MODIFY PROJECT (HOME(2)+"tastrade	astrade.pjx")





По сути, если опустить некоторые детали, содержимое главного файла в этом случае будет выглядеть примерно так:
Код: sql
1.
2.
3.
4.
SET CLASSLIB TO MAIN, TSGEN  
  PUBLIC goApp  
  goApp = CREATEOBJECT("TasTrade")  
  goApp.Do()





В чем тут "фокус"? А "фокус" в том, что в момент создания объекта на базе класса 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. Он достаточно далек от идеала. Его следует рассматривать скорее как учебное пособие, но не как объект готовый к использованию. Не надо слепо копировать его в свое приложение. Лучше напишите свой собственный класс. Да, это займет больше времени, но Вы лучше поймете что это такое и для чего это используется.
Всего лишь приводится пример учебного пособия с разбором ошибок и предложением как делать "правильно".

Так о чём Вы хотели сказать своим постом?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126752
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tdo form &lcSprForm name loform

Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется.

Из хелпа:
Включите ключевое слово LINKED для установки ссылки формы на переменную, ассоциированную с ней, для того, чтобы форма высвобождалась, когда переменная уходила из области видимости. Если вы не включите LINKED, форма останется активной, несмотря на то, что не имеется объектной переменной, ассоциированной с формой.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126768
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima Tdo form &lcSprForm name loform

Есть такая фича/бага фокса: если где-то хранится ссылка на объект формы то форма не закроется.

Из хелпа:
Включите ключевое слово LINKED для установки ссылки формы на переменную, ассоциированную с ней, для того, чтобы форма высвобождалась, когда переменная уходила из области видимости. Если вы не включите LINKED, форма останется активной, несмотря на то, что не имеется объектной переменной, ассоциированной с формой.
И что это изменит в моем случае?

Что-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38126948
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist,

Спасибо за пост, но могли бы вы писать более короткими строками?
Читать не очень удобно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127052
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Фокус в том, что смотрим на название темы.
Свои интерпретации устаревших версий VFP3-VFP5 на примере учебного пособия вы выдаете за эти "Основы".
Хотя в VFP9 уже "17 декабря 2004г.", где проекты строятся на несколько иным приципах, без них обошлись и даже не включили в хелп.
И очень бы хотелось, чтобы ваши "основы" хотя бы к десятилетнему юбилею соответствовали девятой версии,

RS. Что поменялось, чем отличаются версии - это у вас, у гуру надо спросить.
RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге.
RS3. Уточняю - я ничего не имею против простых и понятных решений Tastrade. Только не надо их выдавать за основы VFP9. Тем более, что в перестроенную структуру Главного модуля они прекрасно вписываются.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127053
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЧто-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода.

Что мешает вам сохранить вашу переменную хотя бы где-нибудь в Главном проекте в массиве.
В VFP9 этот механизм встроен, можете оттуда выдернуть необходимое.

RS. Не хочу вас обидеть, но с вашим примером я не вижу причин для гордости.
Если точнее, не вижу даже приложения.
Набор типовых решений, выполненных в собственном изготовлении и собранных в одну корзину.
Если не ошибаюсь, по памяти - у Алексея Климова в его запутанном Smart-е подобный вызов форм редактирования в единой сессии вообще был решен мимоходом, между строк.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127102
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima TЧто-то изменит конечно, только не то что надо. Переменная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода.

Что мешает вам сохранить вашу переменную хотя бы где-нибудь в Главном проекте в массиве.
В VFP9 этот механизм встроен, можете оттуда выдернуть необходимое.
Задлянафига? Писать LINKED потом хранить его в каком-то самопальном массиве, когда без LINKED все произойдет автоматом. Для этого есть коллекция _screen.forms

PS Ответа не надо. Не хочу тебя отвлекать от написания oTable. А то боюсь мы так и не узнаем чего там внутри CASE :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127180
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗадлянафига?

Почему обязательно нужно "так, но не так".
У любой задачи может быть несколько решений. Вы же все равно их изобретаете заново в каждом приложении. Да и на чужие решения не грех порой взглянуть. Соберите их в главном модуле, а из приложения только вызывайте, по вкусу.
Они ведь кушать не просят.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127220
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12
Фокус в том, что смотрим на название темы.
Свои интерпретации устаревших версий VFP3-VFP5 на примере учебного пособия вы выдаете за эти "Основы".
Хотя в VFP9 уже "17 декабря 2004г.", где проекты строятся на несколько иным приципах, без них обошлись и даже не включили в хелп.
И очень бы хотелось, чтобы ваши "основы" хотя бы к десятилетнему юбилею соответствовали девятой версии,


1. Да не вопрос, приведите пример своего framework-a, приаттачте к сообщению.

sg12RS. Что поменялось, чем отличаются версии - это у вас, у гуру надо спросить.


2. Сервиспаки никаких кардинальных изменений не внесли, поэтому статья написанная сразу после выхода фокса актуальна и сейчас.

sg12RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге.


3. Готов "пробежаться", ... учиться никогда не поздно.


sg12RS3. Уточняю - я ничего не имею против простых и понятных решений Tastrade. Только не надо их выдавать за основы VFP9. Тем более, что в перестроенную структуру Главного модуля они прекрасно вписываются.

4. Если бы Вы внимательно прочли цитату из статьи:

Код: plaintext
1.
Будьте осторожны с использованием класса из проекта TasTrade.pjx. Он достаточно далек от идеала.
 Лучше напишите свой собственный класс .
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127233
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima TЗадлянафига?

Почему обязательно нужно "так, но не так".
У любой задачи может быть несколько решений.
Может быть. Но прежде чем предлагать альтернативное решение будь готов обосновать его плюсы. А так непонятно почему вместо пары строк кода надо городить какие-то массивы?

sg12Вы же все равно их изобретаете заново в каждом приложении.
На чем данное утверждение основано?
Я выше продемонстрировал обратное - показал свою возможность быстро создать почти готовое приложение без написания кода.

sg12Да и на чужие решения не грех порой взглянуть.
Я не против. Думал тут увижу код oTable.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38127779
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Вы невнимательно читаете.

1. Речь шла о родном framework от VFP9, а не моем.
2. Речь шла о версиях, а не сервиспаках. Напомню, VFP9 это не VFP3.
3. Если вы решили учиться, то запустите для этого какой-нибудь учебный проект согласно хелпу VFP9. Он на русском языке.
4. Предложение не знающим куда как тыкаться новичкам написать собственный Главный модуль вообще глупость. Надо быть "семи пядей во лбу", чтобы прочитав вашу статью, каждый смог бы начать изобретать свой framework.
Учебный пример вам надо было предоставить восемь лет назад, до сих пор его нет, и вы опять предлагаете написать его самим новичкам, чтобы у каждого был свой паровоз. Надеюсь, хотя бы к десятилетнему юбилею VFP9 вы напишете подобный образец.
А потом вы покажете, как в него вписать многочисленные решения с форумов, среди которых немало и находок.

ДимаТ, на эти ваши вопросы я уже отвечал, зачем повторяться.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128266
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Вы невнимательно читаете.


Ну что же давайте внимательно читать.



sg12
1. Речь шла о родном framework от VFP9, а не моем.



Дык, где поправленный Вами "родной" framework, который Вы хотите использовать, приводите код, пока вижу только одни "общие" слова?

sg12PaulWist

2. Речь шла о версиях, а не сервиспаках. Напомню, VFP9 это не VFP3.


Хорошо, тогда приведите кардинальные отличия VFP3 от VFP9, что в 3-ке не было обьектов, не было событий или обработчик событий был иным?

sg12PaulWist
3. Если вы решили учиться, то запустите для этого какой-нибудь учебный проект согласно хелпу VFP9. Он на русском языке.


Стоп-стоп, не надо уходить от ответа, вот Ваши слова:

sg12RS2. Можем не только пробежаться взглядом, а пройтись построчно. Не думаю, что от этого вы будете в восторге

Я готов пройтись построчно.

Начинайте, что конкретно Вам не нравится в статье и какие на Ваш взгляд необходимы решения.


sg12PaulWist
4. Предложение не знающим куда как тыкаться новичкам написать собственный Главный модуль вообще глупость. Надо быть "семи пядей во лбу", чтобы прочитав вашу статью, каждый смог бы начать изобретать свой framework.
Учебный пример вам надо было предоставить восемь лет назад, до сих пор его нет, и вы опять предлагаете написать его самим новичкам, чтобы у каждого был свой паровоз. Надеюсь, хотя бы к десятилетнему юбилею VFP9 вы напишете подобный образец.
А потом вы покажете, как в него вписать многочисленные решения с форумов, среди которых немало и находок.



Понимаете в чём дело, что бы научиться надо "потыкаться", нельзя по книжке написать прогу,... или Вы хотите использовать готовый framework, ... тогда это надо смотреть коммерческие продукты, там и описалово и техподдержка.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128478
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Не хитрите.
Вы обошли одну фразу: "запустите какой-нибудь учебный проект согласно хелпу VFP9". Базу данных можете взять из Tastrade.
Сделайте это и выложьте его сюда, пожалуйста.
Тогда вы увидите и код, и что он не коммерческий, и что в VFP3 такого нет, и в вашей исторической статье о нем не строчки. И что даже особо не "потыкаясь", вы получили работоспособное приложение. И все это было решено еще в вашем 2005 г.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128523
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

RS. И заодно выложьте образец того, что вы советуете новичкам в своей статье.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128593
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128624
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Вот как смотрятся эти коды Главного модуля приложения после того, как я вынесу все параметры в отдельный глобальный класс как свойства класса:
goSet = CREATECLASS('EMPTY')

DEFINE CLASS app_application AS _application

ENDDEFINE

А что у вас, дела подвигаются?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128692
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Вот как смотрятся эти коды Главного модуля приложения после того, как я вынесу все параметры в отдельный глобальный класс как свойства класса:
goSet = CREATECLASS('EMPTY')



Вы сами-то попробовали запустить предложенную строчку с фоксе, и чЁ в итоге создалось библиотека классов, обьект ... поясните пожалуйста :)

sg12А что у вас, дела подвигаются?

Если интересно, прочтите
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128788
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

К вашим SQL-печалям еще вернемся, будет время. Зачем все в кашу перемешивать.

За ошибку извиняюсь, поторопился:
Глобальный объект goSet = CREATEOBJECT('EMPTY')

Остальное в силе, жду.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38128944
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
with CREATEOBJECT('aplicator')
endwith 
**************************************************
*-- ParentClass:  custom
*-- BaseClass:    custom
*-- Time Stamp:   01/28/13 02:56:07 PM
*
#INCLUDE "main.h"
*
DEFINE CLASS aplicator AS custom


	Height = 28
	Width = 91
	Name = "aplicator"
	oCollection = null

ENDDEFINE
*
*-- EndDefine: aplicator
**************************************************
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129022
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist2. У меня всё скромнее


И что из этого.
Создали объект класса Custom и все готово.
Вот новичкам-то радости.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129094
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Что-то ваш ГУРУ притих, а то все молнии метал - и про HELP, и про DOS, чуть не весь алфавит перебрал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129106
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы просто все запаслись попкорном - и...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129197
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Да-да, продолжайте. Может, в конце более понятно будет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129264
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGsg12,

Да-да, продолжайте. Может, в конце более понятно будет.

Вопрос этот нелегок, так как давят годами накопленные стереотипы.
Попробуем зайти с другого бока.

ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129593
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы.
Поищи по форуму. Показывал где-то. Правда боюсь тебя мой код сильно расстроит. Я FSO в функцию обернул, на вход маска с путем, на выходе курсор со списком файлов подпадающих под маску.

Но как я понял (по твоим репликам выше) тебе не надо вдумываться и вникать суть написанного, достаточно просто выдернуть строку из моего поста и развернуть его критику на полстраницы. Поэтому ищи по форуму, дергай сюда и критикуй. Я не против.
А я как все ... с попкорном посижу :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129613
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуем разобраться сами. Речь ведь не идет о какой-то отдельно взятой крутой функции, словно о какой-то невидали.

В 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 ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129691
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется кое-кто получил задание - написать курсовик на тему "хоть_какая_нибудь_обертка_хоть_над_чем_нибудь"! И теперь хитростью пытается заставить уважаемых людей сделать за него эту задачу!!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38129699
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Redrik

Давненько вас не было ...

Насколько помнится, вы клятвенно клялись не троллить больше со мной.
Понимаю вас, в этот раз решили узнать, что такое "обертка", а то помнится, при слове "классы" у вас округлились от удивления глаза.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38130077
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, sg12!
Клятву я не нарушил - я лично к Вам не обращался, а ляпнуть чего-нибудь - святое право каждого!
Просто я делаю жалкие попытки привлечь остальных к своей, данной Вам, клятве!

P.S. Глаза округлятся у кого-хошь! Это ж надо - молиться на "классы", а агитировать за процедуру с миллионом CASE'ов!!! Хотя, конечно, новичку простительно - уж больно хочется получить нечто абсолютно универсальное: скачал и думать не надо!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38130130
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Redrik

Я уже думал, что в прошлый раз вы все свои восклицательные знаки израсходовали.

RS. Сколько новостей порой узнаешь на форуме.
Очередной хит - "CASE несовместим с классами!".
Это надо же - увидав новое незнакомое слово, человек полночи ДУМАЛ, чтобы ЛЯПНУТЬ такое.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38130254
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12

Если Вы пытаетесь доказать, что создание неких "оберток" всегда и для всего - есть светлое будущее программирования, то так и надо было называть тему

Однако пока Вы так и не привели ни одного сколько-нибудь убедительного примера правильности Вашего вывода. Почему-то "обертки" оказываются более ограниченными в применении, чем прямое использование команд и функций.

Каждый, абсолютно каждый, без исключения (!), новичек в программировании начинает с того, что пытается создать нечто универсальное. На все случаи жизни. Пока ни у кого не получилось. Все время что-то "выпирает" и "не влезает" в эту самую "универсальную штуку". Как правило, после длительных попыток приходят к разумному компромису. Да, "универсальное", но при выполнении ряда дополнительных условий и ограничений.

PS: Ваша идея насчет глобальной процедуры с DO CASE для выбора принципиально разных операций - мягко говоря, не разумная. Даже в рамках процедурного программирования, не говоря про ООП. Это просто лишний посредник.

DO CASE используется при выборе однотипных операций. Например, разных алгоритмов расчета. Но использовать DO CASE для анализа того, что именно будем делать (добавить/удалить) - бессмысленно. Мы уже ДО вызова DO CASE знаем это. Зачем же "переспрашивать"?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38130496
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЗачем же "переспрашивать"?Чтобы вместо add() или remove() писать mycoolproc('add') или mycoolproc('remove'), это же очевидно
PS. Прекратите уже его кормить.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131221
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Тема названа так, как вы хотели. Это ВАШ термин и не надо придумывать новые термины.

Об обертках, на последнем примере о 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.
Когда все, что можно и что нельзя, делается в приложениях. И у каждого свой паровоз, каждый изворачивается как может.
На чем основана эта ваша уверенность, непонятно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131252
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, а Вы можете хотя бы одну тему довести до логического конца? Без "потока сознания"? Или Вам главное просто поболтать, а о чем - не имеет значения?

С чего началось обсуждение и родилась данная тема?

sg12А здесь всего три процедуры "Добавить, Удалить, Изменить" в двух вариациях.

Неужели нельзя было за десять лет написать одну универсальную обертку, где можно один раз отладить все проверки, и куда можно было бы просто передавать параметры из таблиц.
Т.е. Ваш исходный посыл: Существует некая универсальная процедура (обертка) для операций "Добавить, Удалить, Изменить"

Для начала, Вам показали на примерах, что это не так. Не существует. Всегда есть "что-то", что не укладывается в эту самую "универсальную" процедуру.

Далее я заметил, что в одном DO CASE обычно не делают выбор принципиально разных процедур. Это не значит, что это нельзя сделать в принципе. Это всего-лишь значит, что ТАК не делают в виду бессмысленности подобной операции. Вы можете объяснить ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case.

Остановимся на этих двух вопросах: отстутствие универсальности и бессмысленность "переспрашивания". Все остальное у Вас крутится вокруг этого. Ответы будут?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131308
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

забей на него. Стандартный психологический прием троля: обратится к конкретному человеку. Подстава в том что любой нормальный человек считает что должен отвечать раз к нему обращаются. Считает неправильно, т.к. если изначально понятно что спрашивающий ждет не ответа а продолжение диалога. Поэтому надо просто помолчать, какой бы бред не писался. То что это бред понимают все.
Так что пусть пишет. Не будет ответов, сам исчезнет отсюда.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131326
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Извините, но я только пунктуально ответил на вопросы, которые ВЫ затронули. Прочитайте свой пост.
И насколько я понял, ответы "новичка" застали вас врасплох.

На каких примерах вы что показали? Ваш компаньон морочил мне этим голову, теперь вы.
Повторяю - вы хоть можете не на пальцах, а хоть что-то показать, хоть примитивный проект для новичков, соответствующий вашей теории?
И покажите мне ваше туманное "что-то".

Свою фразу:
"ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case."
переведите на нормальный русский язык, пожалуйста.

Об универсальности я достаточно четко и однозначно сформулировал предложения, куда уж дальше.
Что у вас вызывает затруднения?
Может быть то, что "универсальность" оказалась для вас неожиданностью?

RS. Кстати, к вам и подмога подоспела, вовремя.

ДимаТ
Если человек не может ответить на вопросы, то лучше не пытаться отвечать, а то попадешь в глупое положение.
Если человек, двадцать лет изучающий FoxPro, не может ответить на вопросы "новичка", то вдвойне.
И речь идет об ответах, а не поучениях, на что горазды многие ГУРУ, пока дело не доходит до конкретики.
Я лично стараюсь отвечать на все вопросы, в том числе и ваши.
И если что непонятно, всегда готов уточнить.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131348
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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Я лично стараюсь отвечать на все вопросы, в том числе и ваши.
Не вижу ни одного ответа по существу. Ни на мои вопросы, ни на чужие. Вижу только вопросы и использование ответов для продолжения монолога.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131357
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Теперь вернемся к вашей коронному номеру: "Добавить,Удалить,Изменить".
Приведите комплект ВАШИХ кодов этих функций, и я покажу ВАМ, как их переделать их через DO CASE.
И объясню вам, почему в вашем случае модернизация приложений вызывает известные затруднения, а после перестройки их в главный модуль нет.

ДимаТ. Ладно, можете повторить вопросы, если что непонятно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131504
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМWord - это текстовый редактор. Предназначен для ввода/отображения текста . Для него таблицы - это вспомогательный инструмент отображения того же текста. И именно в небольших объемах. Порядка нескольких десятков записей.

Если речь идет об отображении тысяч и десятков тысяч записей, то текстовый редактор для этого мало пригоден. Нужно использовать инструмент, специально для этого и предназначенный. Т.е. табличный редактор Excel. Гораздо проще нарисовать некую шапку в Excel, чем мучиться с выводом большой табличной части в Word.

Хороший совет.

Но возникает новый вопрос - а что мешает в этот раз эти коды вам сделать универсальными?
Хотя бы из курсора для начала и без шапки, ее потом можно будет пристроить.
Т.е перенести их в глобальный базовый модуль, и тогда ни новичок, ни опытный программист не будут больше постоянно тыкаться с такими вопросами, а просто в эту процедуры будут передавать параметры.

Вы можете это объяснить на конкретном примере, а не на пальцах?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131607
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Универсализм кодов"... "Классы-наше всё"... "Давайте свернём Гланый Модуль"...
Начинает напоминать мантры и некие братства

Вот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD...
Убедите меня, что мой подход неверен
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131794
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMВот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD...
Убедите меня, что мой подход неверен

А в чем проблема?
Кто мешает вам написать эти строчки кода, пишите на здоровье.

Но логические ваши ошибки в рассуждениях могу отметить:
Главный модуль (а не проект) вам не надо создавать, он у вас уже на флешке, вместе с dll-ками. Если уже не на компе.
Вполне вероятно, что ваша задача не так уж сложна и она уже есть в Главном проекте. И возможно вам остается только на худой конец скопировать нужные вам коды, а не писать их заново.
А в тестовом шаблоне-проекте она вообще может оказаться только строкой вызова с параметрами.
На календаре 2013 г, 9-ка загибается, а вы сидите на 8,6,FPD ..., это говорит о вашем уровне. Где уж тут речь вести о Главном модуле.
И посмотрел бы я, как вы будете мыкаться с переносом этих ваших FPD на что-то другое, а здесь системная часть у вас уже готовенькая.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38131894
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, не думаю, что кому-то из участников, имевших неосторожность вступить с тобой в полемику, что-либо мешает писать. Проблемы, похоже, у тебя. Озвучивать суть их не буду, т.к. это противоречит правилам форума, отмечу лишь то, что явно наличествует в твоих "простынях" - клинический случай резонерства. А вообще - забавно, когда на форуме появляется очередной апологет какой-либо сверхценной идеи, так что -давай, пиши еще!
P.S. А "R.S" - это что обозначало-то: "Rectum scriptum" что ли? :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132013
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Про то, на чём я сижу (или не сижу) я уже, вроде, упоминал - не надо за меня выражаться

И мысль, которую я вам пытаюсь донести с момента вашего появления в теме "Чем заменить..." - я лично не буду искать где-то чей-то готовый код (который ещё неизвестно, решит ли именно ту задачу, что требуется), если я вижу, что мне проще и быстрее написАть несколько собственных строк. Если же я вижу, что для решения требуется что-то, что я писАть буду долго и нудно - да, я найду и встрою. Кроме того, возможно, я уже знаю и видел нужные мне части реализации, поэтому я искать не буду, а сразу воспользуюсь, либо решу вопрос с автором функционала.
В общем, кредо примерно таково - не "эффективность" кода, а эффективность трудозатрат. И не надо мне говорить, что сборка из "конструктора" быстрее и качественнее. Всё познается на опыте, и мне мой вопит (в противоположность всему нынешнему маркетингу от разработки продуктов), что где-то в чём то я намного более прав, нежели дипломированные (и наслушавшиеся их) "розроботчики".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132105
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

Чем он плох, зачем нужно заново открывать Америку в каждой форме?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132128
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Ну так и я о том же, в принципе. То есть "наработанные решения", естественно, не переписываю каждый раз заново. Вот только мы с вами разошлись в оценке того, какой код нужно "унифицировать". Вы утверждаете, что нужно сделать универсальным всё вплоть до операций обслуживания базы. Я же говорю, что одно дело - отчеты, обработка ошибок, интерфейс. И другое - работа с БД. Не нужно (и даже вредно) делать универсальной работу с данными.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132184
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM

В этот раз не спорю, при работе с базами данных в Фоксе достаточно проблем.
Да и с отчетами порой тоже, иной раз такие навороты бывают.

Но что мешает именно в приложении решать именно эти конкретные проблемы.
А где их нет, использовать наработанные решения, собранные в Главном модуле.
До вплоть я не "утверждал, может быть где неясно выразился.
Да и в Tastrade, да и в самом VFP9 работа с базами данных достаточно унифицирована.
Поэтому меня и удивил перенос этих вопросов в формы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132525
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Свежий пример, кусок кода из соседней темы:

Код: sql
1.
2.
3.
4.
LParameters tnID
if type("m.tnID") <> 'N' or m.tnID <= 0
    m.tnID = 0
endif


Убейте меня, ну не пойму я - почему лучше в каждой форме нужно героически сочинять эти коды, если эти вопросы можно решить один раз в базовом модуле для всех форм.
Насколько я понимаю, именно в этом и заключается Ваша проблема. Вы действительно считаете, что ответ на вопрос вроде "как передать параметр в форму?" должен начинаться с объяснения того, как создать класс? Ну, то, что Вы называете "базовым модулем всех форм".

Вы вообще понимаете, чем различаются такие вопросы:

- Как "в принципе" можно решить данную проблему?
- Как написать собственный FrameWork?

Обычно в данном форуме задается вопрос вроде: Как, какой командой/приемом, сделать то или иное.

Вы же вместо ответа на этот вопрос начинаете объяснять про построение собственного FrameWork. Причем проблема в том, КАК Вы это объясняете. Само слово FrameWork или аналогичный ему термин (пусть и Ваш собственный) Вы вообще не применяете. Вы строите ответ таким образом, как будто факт построения FrameWork позволит решить частную (конкретную) задачу. Ну, построю я его. А как проблему-то решить? А вот именно про это Вы как раз ничего и не говорите!

- С чего Вы вообще решили, что никто из программистов не имеет собственного FrameWork?
- С чего Вы вообще решили, что никто из программистов не понимает, что повторяющиеся куски кода следует выносить в некую общую библиотеку?
- С чего Вы вообще решили, что для объяснения способа решения той или иной задачи необходимо СНАЧАЛА предложить построить FrameWork?
- С чего Вы вообще решили, что кем-то созданный FrameWork подойдет для решения ЛЮБОЙ задачи?

Построение собственного FrameWork в FoxPro - это дело сугубо частное. Можно сказать, интимное Никто и никогда не возьмет чужой FrameWork для создания собственного приложения. Разве что, отдельные приемы.

Вот Вы активно рекламируете собственный FrameWork. Но даже те куски, которые Вы показываете, вызывают недоумение, поскольку совершенно не понятно, при каких условиях получился именно ТАКОЙ FrameWork. Что же у Вас за задачи-то такие, что нужно писать именно ТАКОЙ код? Это вовсе не значит, что то, что у Вас сделано - плохо. Это всего-лишь означает, что Ваш FrameWork "заточен" под решение определенных задач. Для этих задач, вероятно, он хорош. Но ведь у других людей и задачи совсем другие! Зачем же им "впаривать" заведомо неприемлимые решения?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132645
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет.

Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться.
Если мне ни изменяет память, они уже и в Tastrade были.
Открыв эту библиотеку, вы лично можете убедиться, что там действительно имеется базовая форма.
Дочерние от него объекты уже можно специализировать - для работы с таблицами в основном через грид, для справочников, диалогов, модальных форм и т.д.

Термин FramеWork я не применяю оттого, что у вас известныеt затруднения с этим объектом и перешел на ваш термин - Главный модуль.
У кого в заначке какой FrameWork я не знаю. Разве что на своем сайте Urfin пытался, но вышло очень тяжеловесно и непрактично.
Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия.
Примеров выноса в общую библиотеку я не видел - наоборот, годами новички постоянно тыкаются с базовыми вопросами.

О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже.
Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы.

Никакой собственный FrameWork я не рекламирую - несколько кусков кода погоды не делают.
Если вы намекаете на _application, то у меня там всего несколько простых процедур, в кармане фиги нет:
OnShutdown - ничего нового,
DoApp - для поочередного запуска вышеуказанных процедур из oSetting при Otkr/Zakr,
Utils - сборник часто вызываемых небольших процедур.
Чем они вас так напугали, что они могут вам "впарить" - непонятно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132790
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ВладимирМ
Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет.Не обольщайтесь... Он не сбавил - он решил пообщаться на вашем языке и уровне

Остальное ваше словописание - ни о чём. На таком уровне общаться никто не будет, и обсуждать "поднимаемые вами вопросы" - тоже.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132933
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMsg12ВладимирМ
Во-первых, очень приятно, что вы чуток сбавили тон. Если еще на полтона убавите, то вообще отлично будет.Не обольщайтесь... Он не сбавил - он решил пообщаться на вашем языке и уровне

Остальное ваше словописание - ни о чём. На таком уровне общаться никто не будет, и обсуждать "поднимаемые вами вопросы" - тоже.

А я и не обольщаюсь.
Все эти застарелые догмы восьмилетней давности меня нисколько не удивляют.
И не думаю, что мои несколько постов по делу, которые я успеваю вставлять между ответами на наезды и глупые поучения, что-то изменят.
И этот уровень не мной установлен, он был до меня.
Также как и безрезультатность большинства обсуждений на фокс-форумах.
В фоксе ничего никогда не меняется, это прописная истина.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132937
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
LPARAMETERS tcCase
DOCASE
CASE tcCase == 'Add'
***
CASE tcCase == 'Delete'
***
CASE tcCase == 'Edit"
***
ENDCASE



А когда я Вас попросил привести практический пример того, когда подобный код действительно понадобился бы для кнопок , Вы скромно промолчали. В своей практике я не встречал задач, когда ТАКОЙ код был бы уместен именно для кнопок . Однако Вы его используете. По крайней мере, он Вам кажется вполне уместным. Значит, Ваша задача как-то принципиально отличается от тех задач, с которыми сталкиваюсь я. Вот я Вас постоянно и спрашиваю, какие же у Вас задачи, чтобы использовать подобный код кнопок?

sg12Никакой собственный FrameWork я не рекламирую - несколько кусков кода погоды не делают.
FrameWork - это прежде всего ИДЕЯ того, как "надо". Как "правильно" с Вашей точки зрения. Вот Вы настойчиво пытаетесь всех убедить, что НАДО делать некий общий метод для кнопок в который передавать параметр Add/Delete/Edit. А подобный подход соответственно заставляет строить и все остальное приложение. С моей точки зрения для кода кнопок ТАК делать не имеет смысла. Соответственно моя структура приложения, мой FrameWork, примет принципиально другой вид.

sg12Если вы намекаете на _application, то у меня там всего несколько простых процедур, в кармане фиги нет:
OnShutdown - ничего нового,
DoApp - для поочередного запуска вышеуказанных процедур из oSetting при Otkr/Zakr,
Utils - сборник часто вызываемых небольших процедур.
Чем они вас так напугали, что они могут вам "впарить" - непонятно.
Про них я вообще ничего не говорю. Я просто в очередной раз пытаюсь понять о чем Вы вообще говорите. Имеет смысл дальше с Вами продолжать разговор или нет. Есть вообще предмет для дискуссии или Вам лишь бы "себя показать"? Вы готовы слушать других или слышите только себя?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132940
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться.
Убедился. Только их придумал микрософт. Им и предъявляй свои претензии.
Все воспринимают эту поделку как пример кода, из которого при желании можно чего-нибудь позаимствовать. Если же ты думаешь что это надо воспринимать как единственно возможный способ разработки, то тебе прямая дорога в 1С. Там все как ты хочешь: объекты-обертки, шаг в сторону он них невозможен, т.к. ничего другого нет. Все просто и однозначно - либо так как решила 1С, либо никак.

sg12Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия.
...
О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже.
Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы.
У тебя нет опыта разработки на фоксе. Поэтому тебе непонятно разницы между теорией и практикой.

Вот топик такого же чудо-кодера только перешедшего на Си.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132979
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM

Вот вы тут же получили подтверждение, как ответ на ваш вполне серьезный вопрос - сразу два поста.
Много ли среди этой писанины вопросов, заслуживающих внимания и решение которых принесет хоть какой-то, но результат.
Придется опять выискивать крупицы.

И если мои ответы у кого хоть немного пошатнут веру в авторитеты и стереотипы, то этого достаточно.
И даже если я всерьез засяду на несколько месяцев, чтобы показать этот "чудо-фреймворк", от этого ничего не изменится.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38132992
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А оно и не нужно - кому-то что-то показывать. Всё равно все останутся при своём мнении.
Я своё уже высказал - я не буду "унифицировать" код, не требующий повторного использования. Поскольку сейчас не занимаюсь постоянным решением однотипных задач в одной предметной области... В случае же, если такое произойдёт - сначала будем думать, а затем уже кодить. Или воспользуемся готовыми или совместными разработками. В любом случае, полная (или стремящаяся к таковому) унификация - это область приложения сил коллективов разработчиков, направленная на продвижение продукта в несколько областей - что, по определению, не может требоваться от программистов, не работающих в крупных проектах или корпорациях...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38133024
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Услышал я вас.
Хорошо, пусть будет по-вашему - не так и не то, да что-то, да и все, я назвал.
Что от этого изменится.

Если вы за восемь лет не сумели написать даже учебный пример - вы сейчас это сможете сделать?
Вот вы дали ссылку на Википедию, блеснули - вы сами читали эту статью? Теперь вы знаете, что это такое.
Уважаемый ГУРУ, хоть после этого вы сможете написать этот фреймворк?
Где как раз и будет решение - "как передать параметр в форму", я вам распишу этот ваш LPARAMETERS.

Эти "Добавить, Изменить, Удалить" для вас уже как красная тряпка для быка.
Опять я конкретно - выложьте свои решения, и я покажу вам, как их оставить так, как вы хотите. Ни одной вашей буковки не трону, обещаю.
Нашли проблему, детсад какой-то.
О каких своих "секретных" задачах вы все время морочите мне голову?
Посмотрите, в теме сколько конкретных вопросов я вам задал, могу их повторить - когда вы сможете ответить хоть на один из них?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38133025
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Базовые классы не я придумал. Они находятся в директории FFC, файлы _base.vcx/_base.vct, можете убедиться.
Убедился. Только их придумал микрософт. Им и предъявляй свои претензии.
Все воспринимают эту поделку как пример кода, из которого при желании можно чего-нибудь позаимствовать. Если же ты думаешь что это надо воспринимать как единственно возможный способ разработки, то тебе прямая дорога в 1С. Там все как ты хочешь: объекты-обертки, шаг в сторону он них невозможен, т.к. ничего другого нет. Все просто и однозначно - либо так как решила 1С, либо никак.

sg12Что вы вкладываете в этот термин - непонятно. Набор классов в приложении типа "свой/чужой/интим", даже если они супер - это еще не FrameWork, вы путаете понятия.
...
О каких ваших "туманных" задачах и проблемах вы постоянно интригующе толкуете, я не знаю. Что у вас там не решается - тоже.
Как может FrameWork заточен под какие-то задачи - непонятно, у вас только одни общие абстрактные фразы.
У тебя нет опыта разработки на фоксе. Поэтому тебе непонятно разницы между теорией и практикой.

Вот топик такого же чудо-кодера только перешедшего на Си.

ДимаТ. Сами как думаете, что я должен ответить на эти ваши глупости.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38133258
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПеременная loform локальная и при добавке LINKED запущенную форму пользователь вообще не увидит, т.к. она тут же закроется после отработки приведенного мной кода.

Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform.
По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38133291
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform.
По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М.
Молодец. Только он мне не нужен. Я без него обхожусь.
Оставь себе эти знания. Если кто из новичков спросит - поделишься.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38133323
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Образец как запускать формы я вам нашел - он находится в директории Wizards, appwiz-wzapplication-doform.
По-моему, он идет еще с VFP3 и там попроще, но это вам к Владимиру М.
Молодец. Только он мне не нужен. Я без него обхожусь.
Оставь себе эти знания. Если кто из новичков спросит - поделишься.

Показал бы, как обходишься.
Или тоже "засекречено"?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134068
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Показал бы, как обходишься.
Или тоже "засекречено"?
я вроде уже показывал. Повторяю:
Код: sql
1.
DO FORM MyForm ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134127
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Показал бы, как обходишься.
Или тоже "засекречено"?
я вроде уже показывал. Повторяю:
Код: sql
1.
DO FORM MyForm ...



Такими ГУРУ становятся скромными ... временами.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134173
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off
sg12, А отчего это фотомордочка у тебя на фотке вКонтактике такая тоскливая? Скорбишь о нелегкой судьбе "неправильных" программистов чтоль?
ты бы хоть ник сменил, придурок :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134189
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсть объект ShellLink. Как пользоваться ищи в инете. Я на Сях его пользовал.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb776891(v=vs.85).aspx

Надо же, такую толстую книгу осилили, да еще на английском, да еще на Сях ...
Может блеснете эрудицией на русском, да в Фоксе.
Хотя бы что-нибудь вроде небольшой учебной статьи ... для новичков.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134204
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Услышал я вас.
Вы так ничего и не поняли. Тем более не услышали.

Прежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов. Примерно таких:

- Будут ли в качестве хранилища данных использоваться файлы DBF или "промышленная" СУБД (MS SQL, Oracle, MySQL и т.п.)
- Будет ли приложение работать с модальными или не модальными формами
- Будет ли управление осуществляться через кнопки на форме, ToolBar или системное меню
- Будут ли записи редактироваться в отдельной форме или в форме со списоком
- Будет ли навигация по записям осуществляться через формы со списком или при помощи кнопок Вперед/Назад
- ...


А теперь вопрос непосредственно Вам

Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями?

Очень большая просьба ответить только "Да, будут существенные отличия" или "Нет, в целом все одинаково". Никаких комментариев не надо. Просто Да/Нет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134242
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМsg12Услышал я вас.
Вы так ничего и не поняли. Тем более не услышали.

Прежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов. Примерно таких:

- Будут ли в качестве хранилища данных использоваться файлы DBF или "промышленная" СУБД (MS SQL, Oracle, MySQL и т.п.)
- Будет ли приложение работать с модальными или не модальными формами
- Будет ли управление осуществляться через кнопки на форме, ToolBar или системное меню
- Будут ли записи редактироваться в отдельной форме или в форме со списоком
- Будет ли навигация по записям осуществляться через формы со списком или при помощи кнопок Вперед/Назад
- ...


А теперь вопрос непосредственно Вам

Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями?

Очень большая просьба ответить только "Да, будут существенные отличия" или "Нет, в целом все одинаково". Никаких комментариев не надо. Просто Да/Нет.

Никаких этих проблем нет.
Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде.
В одних и тех же классах, только в разных процедурах.
А из предложения они вызываются, меняется только строка вызова, на выбор.
Без никаких ультиматумов "или-или", они друг другу не противоречат.

Например, так:
goApp.oObj.DoForm('Modal')
goApp.oObj.DoForm('Dialog')
goApp.oObj.DoToolbar()
goApp.oObj.DoMenu()
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134250
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Извиняюсь, оговорился - "из приложения".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134466
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно рассмотреть на более простом примере - чуть выше я упоминал о процедуре DoNavigate.
Она не зависит от того, откуда ее вызвали - из Toolbar, меню, группы кнопок CommandGroup или др.
Вызов везде одинаков, примерно так: goApp.oTable.DoNavigate('Top').
И эти вызовы могут работать из разных мест, они не мешают друг другу.

Эти объекты тоже универсальны (меню можно написать в виде процедуры), не зависят от таблицы, которая при необходимости может передаваться как параметр.
И тоже могут реализованы в Framework.
А в приложении создаются только необходимые дочерние объекты, с которыми и работает приложение.
Хотя те же кнопки ничто не мешает установить на формы из фреймворка при необходимости.
И также ничто не мешает в приложении создавать другие объекты с теми же вызовы.
Точнее будет - подобную команду вызова можно дать откуда угодно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134478
sg12...пропущено...
Никаких этих проблем нет.
Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде.
В одних и тех же классах, только в разных процедурах.
А из предложения они вызываются, меняется только строка вызова, на выбор.
Без никаких ультиматумов "или-или", они друг другу не противоречат.


Что-то эти высказывания мне напоминают концепцию сервера приложений в трехзвенной архитектуре... Тот же самый слой абстрагирования представления данных (тонкий клиент) от платформы хранения данных (сервер)...
Плохо это или хорошо - не знаю... Но как "клиент-сервер", так и "трехзвенка" живут и развиваются... И так же идут споры о том, какая из технологий круче....
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134494
sg12,
Возможно, я был не совсем прав в моем предыдущем сообщении и Ваши "принципы" скорее чем-то напоминают паттерны (шаблоны) проектирования. Например, такой:
Паттерн Mediator (посредник)
Назначение паттерна Mediator

Паттерн Mediator определяет объект, инкапсулирующий взаимодействие множества объектов. Mediator делает систему слабо связанной, избавляя объекты от необходимости ссылаться друг на друга, что позволяет изменять взаимодействие между ними независимо.
Паттерн Mediator вводит посредника для развязывания множества взаимодействующих объектов.
Заменяет взаимодействие "все со всеми" взаимодействием "один со всеми".

Решаемая проблема

Мы хотим спроектировать систему с повторно используемыми компонентами, однако существующие связи между этими компонентами можно охарактеризовать феноменом "спагетти-кода".

Спагетти-код - плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа. Спагетти-код назван так, потому что ход выполнения программы похож на миску спагетти, то есть извилистый и запутанный.
...
Только использовать паттерны (шаблоны) или нет - каждый решает сам. Они тоже не всесильны и у них есть слабые места... Все это обсуждается в специальной литературе...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134542
sg12Dima T,

Нет, мы будем делать так и только так.
Эти коды отладим, один раз, и ошибки будут возникать только когда в эти процедуры будут передаваться неверные параметры.
Строка вызова увеличится только на один параметр.
И с макроподстановками разберемся, не надо преувеличивать.
А в тех немногих случаях когда критично, ничто не мешает вам в приложении использовать свои процедуры, и только когда в этом возникнет необходимость.

Что изменится? Главный модуль "похудеет" и станет менее "страшнее" на пять процедур, и это только начало.
А для работы с этими процедурами напишем объект класса CommandGroup с тремя кнопками, который будем навешивать на формы.
Или два класса - по 3 и 2, кому что по вкусу.
Т.е. избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах.
Нашел интересную статейку: О повторном использовании кода
цитата оттуда:
О повторном использовании кода...
Преждевременное обобщение

Каждый уважающий себя разработчик знает цитату Кнута о злобной преждевременной оптимизации, которая может привести к невероятно быстрому коду (правда, обычно не в тех местах, что нужно), прочитать и понять который со временем не сможет и сам автор. Но поскольку сейчас наиболее затратной частью многих систем является не производительность, а эффективность разработки, то вместо преждевременной оптимизации все чаще можно столкнуться с проблемой «преждевременного обобщения» (premature generalization).

По сути, преждевременное обобщение сводится к созданию более сложного решения в надежде на повторное использование или на «гибкость», которая позволит справиться с будущими изменениями. Но, как это обычно бывает, «гибкость» оказывается не такой и гибкой, требования начинают меняться не в ту сторону, в результате трудозатраты не оправдываются и команда получает более сложное решение, хотя могла бы обойтись и более простым. ... В результате, каждый проект обрастает кривыми библиотеками и фреймворками, использовать которые неудобно, а сопровождать – дорого.

Проблема в том, что затраты на дизайн, реализацию и сопровождения публично доступного кода на несколько порядков выше стоимости сопровождения простого кастомного решения. Начинается все с того, что реюзабельный код требует более полной и подробной документации, лучшего качества и покрытия тестами, примеров использования и пользовательской документации. Даже если код предназначен для повторного использования внутри команды, то его качество и простота использования должны быть такими, чтобы программисту было экономически выгодно разобраться в вашем решении, а не городить свой собственный любимый огород. И я уже не говорю о необходимости культуры повторного использования, без которой вся идея «реюза» накроется медным тазом благодаря всеми любимому симптому NIH (Not Invented Here).

... Многие считают, что «обобщенное» решение (с кучей возможностей для расширения) является лучшим способом справиться с будущими изменениями. Возможно это и так, но практика показывает, что с этого пути очень легко скатиться к громоздкому коду, который сложно понять (ведь он может все) и сопровождать. ... программисты (и архитекторы) плохо угадывают, что именно будет изменяться в будущем и какие новые потребности появятся. А раз так, то нет ничего лучше простого решения, которое можно легко адаптировать под изменяющиеся требования путем его модификации.

Все эти сложности не говорят о том, что заниматься повторным использованием глупо. Нет. Аналогично тому, как оптимизация производительности должна осуществляться после профилирования, так и обобщение должно осуществляться вОвремя: не во время разработки самой «фичи», а на более поздних этапах, когда команда понимает, куда будут направлены возможные изменения и, что нужно обобщать, а что – нет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134603
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Все верно, интересная ссылка и хорошие цитаты.
Осталось их реализовать.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134614
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Все верно, интересная ссылка и хорошие цитаты.
Осталось их реализовать.То есть Вы так и не поняли, что и статья, и "цитаты" как раз и говорят о том, что именно сейчас реализовывать ничего не надо... Впрочем, мы уже давно знали, что вы пургу гоните
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134616
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMsg12Все верно, интересная ссылка и хорошие цитаты.
Осталось их реализовать.То есть Вы так и не поняли, что и статья, и "цитаты" как раз и говорят о том, что именно сейчас реализовывать ничего не надо... Впрочем, мы уже давно знали, что вы пургу гоните

То, что "ничего не надо", в Фоксе было известно с первого дня его существования.
Огорчу вас, но порой попадаются и такие, которым "надо".
На чьи решения вы порой с умным видом даете ссылки ...

RS. И кто это "мы", не говорите за всех, говорите от себя.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134921
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ВладимирМПрежде, чем начать создавать НОВОЕ приложение, программист должен получить ответы на множество вопросов.

Будут ли классы, созданные для приложения СУЩЕСТВЕННО отличаться в зависимости от ответов на эти вопросы? Или классы, в принципе, будут одинаковые, но с некторыми (незначительными) отличиями?

Никаких этих проблем нет.
Вашего "множества вопросов" в вашей интерпретации тоже нет, все они уже находится в framework в уже готовом виде.
В одних и тех же классах, только в разных процедурах.
А из предложения они вызываются, меняется только строка вызова, на выбор.
Без никаких ультиматумов "или-или", они друг другу не противоречат.

Например, так:
goApp.oObj.DoForm('Modal')
goApp.oObj.DoForm('Dialog')
goApp.oObj.DoToolbar()
goApp.oObj.DoMenu()

Вы хоть раз пытались прочитать то, что написано, а не то, что Вам показалось? Банально ответить Да/Нет не способны!

По сути, я Вас спросил кто пишет ТЗ для НОВОГО приложения. Вы или заказчик? Из Вашего ответа видно, что мнение заказчика Вас не интересует. У Вас уже все есть Вы вообще-то хоть раз писали приложение "с нуля"? С создания собственного FrameWork. Или только на поддержке сидите?

Простой пример добавления записи в файл DBF

Код: sql
1.
2.
use MyTable
append blank


Простой пример добавления записи в SQL-сервере

Код: sql
1.
2.
3.
4.
lnCH = SQLConnectionString(...)
lvPar1 = ...
lvPar2 = ...
=sqlExec(m.lnCH,'insert into MyTab (Field1, Field2) values (?m.lvPar1, ?m.lvPar1)')


Вы всерьез считаете, что коды ничем принципиально не отличаются и будет одинаковый набор классов и методов в обоих случаях?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38134953
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Я достаточно однозначно и подробно вам ответил, что вопросов в вашей интерпретации "или-или" нет.
Вы можете взять любое серьезное приложение - там благополучно работают и меню, и тулбары, и кнопки. Так же, как и разные формы.
Что еще я могу ответить на высосанные из пальца проблемы.

FrameWork VFP9 вы можете посмотреть в его директории, я уже вам это предлагал.
Никаких ваших ни мнений, ни ТЗ, ни заказчиков там нет.
Повторюсь - откуда вы все это берете, я не знаю. Что можете предъявить для подтверждения своих взглядов - тоже.

Ваши примеры находятся в разных классах. Для DBF свой, для SQL свой - это разные вещи. Друг другу они не мешают.
И я нигде не утверждал, что они одно и тоже - вы это опять мне придумали.
К тому же в своем учебном примере для SQL вы смешали в одно два понятия - подключение и команду, на самом деле они находятся в разных процедурах.
Кстати, USE и APPEND BLANK тоже.
Как вы с такими ошибками что-то написали - непонятно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38135161
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Такое впечатление, что в этом вопросе у вас полный сумбур.
Чего только не перебрали в своих постах, живого места нет.
Надо заметить, что вы умеете до блеска доводить отдельные процедуры.
И довольно смутно себе представляете, как эти процедуры работают в комплексе.
Но это можно исправить.

Вот сырой код из уже упоминавшейся проседуры 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
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38135185
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно - уже понятно про qqq == "Otkr", и qqq == "Zakr".
В сочетании с названиями типа "SystToolbars" - красиво, спору нет.
Давай уже за прогрессивный интерфейс! А то BROWSE да BROWSE... Прошлый век какой-то. Даже заказчики носом крутить начинают!
R .S. Еще хотел спросить - а правду говорят, что grid и browse разные вещи?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38135438
ИВП.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не пойму, что такое R.S. ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38135488
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП.Никак не пойму, что такое R.S. ?Начиналось с такого:
sg12поскипано...
RS. Кстати, к вам и подмога подоспела, вовремя.GermanGMпоскипано...
P.S. А "R.S" - это что обозначало-то: "Rectum scriptum" что ли? :)
А тут у нас, скорее всего, "Redrik Says"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38136608
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Ваши примеры находятся в разных классах. Для DBF свой, для SQL свой - это разные вещи.
Ну, наконец-то Вы соизволили согласится, что существуют РАЗНЫЕ классы для разных задач. Существует РАЗНЫЙ FrameWork!

Теперь, наводящий вопрос: Вас будет интересовать класс для работы с файлами DBF, если Вы работаете с SQL-сервером?
Второй наводящий вопрос: Вы сможете по невнятному изложению постановки задачи новичком определить, какой именно класс (FrameWork) его интересует?
Третий наводящий вопрос: Сколько FrameWork-ов Вы готовы написать, чтобы удовлетворить все возможные запросы новичков? Заметьте, что сами Вы эти FrameWork использовать не будете. Они нужны будут только для ответов новичкам.

==================

Чтобы Вы прониклись проблемой, показательный пример

Все, абсолютно все, новички, которые пришли из Delphi задают стандартный вопрос: Как убрать (скрыть) основное окно FoxPro? Им даже в голову не приходит тот факт, что по-умолчанию, основное окно FoxPro скрывать не надо. Оно используется как основное окно готового приложения. Однако проблема в том, что FoxPro позволяет написать приложение и со скрытым основным окном FoxPro.

Теперь смотрим, как изменится интерфейс приложения в зависимости от того, скрыто или нет основное окно FoxPro?

- Если основное окно FoxPro используется, то меню создается одно общее на все приложение. В формах меню нет.
- Если основное окно FoxPro скрыто (не используется), то меню создается в каждой форме свое.

В результате, для общего меню нет необходимости писать объектную "обертку". Меню создается один раз при старте приложения. Банальным вызовом процедуры. Если же меню свое для каждой формы, то, разумеется, необходимо озаботится некой "оберткой" для генерации этого меню для каждой формы. Тут, безусловно, Ваш пример с объектом будет уместен.


Так вот, если до Вас до сих пор не дошло. В зависимости от ответов на те вопросы, от которых Вы так небрежно отмахнулись, Вам придется писать РАЗНЫЕ классы. Создавать РАЗНЫЕ FrameWork. Иногда ПРИНЦИПИАЛЬНО отличающиеся друг от друга. И дело даже не в количество вариантов FrameWork (хотя их достаточно много), а в том, что каждый FrameWork сам по себе требует значительного времени как на разработку, так и на понимание того, почему сделано так, а не иначе.

Нет единого стандарта FrameWork для приложений FoxPro


Более того, нет даже хоть каких-нибудь рекомендаций "как правильно" писать приложения на FoxPro. Каталог FFC на который Вы постоянно ссылаетесь - это ПРИМЕР. Вы можете его использовать, но можете и НЕ использовать.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38136870
Фотография justIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ1- Если основное окно FoxPro используется, то меню создается одно общее на все приложение. В формах меню нет.
2- Если основное окно FoxPro скрыто (не используется), то меню создается в каждой форме свое.


3 - Пишется одна широкая ( модальная ) форма с меню, и внутри нее остальные формы.

Чем отличается от 1?
Наверное тем, что так зачастую выглядят приложения НЕ на FoxPro.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38136930
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Откуда вы все это берете? На ходу, что-ли сочиняете. Теперь Топформы и 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, то переварите пока то, что есть.
После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137157
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ботинки надевать, Вы написали, следущим шагом будете показывать как шнурки завязывать? А если по существу, то работать с классами в VFP9 тут не только Вы умеете. Думаете, что тут только prg-файлами да формами программируют? Что Вы пытаетесь показать? Хотите создать универсальный класс приложения? Думаю он у многих уже есть. Опять же, как он будет устроен и как работать будете знать только Вы, мне например вовсе неохота будет разбираться в Вашем коде. Да и не бывает универсального класса приложения, для разных задач нужен разный подход. В каждом приложении будет использоваться именно тот набор классов, который необходим. Для некоторых задач достаточно и одного prg-файла. Когда придет время искусственного интеллекта, тогда будет Вам один мозг для любой задачи, а пока продолжаю грызть попкорн и следить за темой...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137192
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, приводя контраргументы. все же надо учитывать очевидное скудоумие автора темы
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137199
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300пока продолжаю грызть попкорн и следить за темой...Процессингую аналогично...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137387
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Я уже делал вам замечание - вы еще восемь лет назад запутались в понятиях и работу без 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".
Это и есть один из элементов ООП, которым не только вы так любите козырять.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137460
геолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137500
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
геолог Чой-та мне напомнило

Посмотрел ссылку, посмотрел на даты.
Самого решения не стал смотреть, но зато заметил, что в ответ одно балабольство.
И мой нынешний оппонент и там в этом преуспел. Да и не только там.
Это уж любимое занятие в фоксе во все времена было, начиная от новичков и кончая гуру.
Специфика.
А уж в foxclub-е и подавно - там чтобы путное что-то найти, надо кучу мусора перерыть, аж утонуло все там в нем.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137530
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Вот одна из ваших цитат оттуда:

Дата: 18.10.07 10:39:33
Любой Framework жестко завязан под конкретную постановку задачи и личные предпочтения программиста.

Хоть к десятилетнему юбилею VFP9 вы посмотрите его хелп, надеюсь.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137692
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Не знает человек, что формы можно передавать как объекты и сочиняет идентификаторы - он разрабатывает Framework.
Не знаком человек с опцией LINKED и нагородил в своих программах что и показать стыдно - это он изобрел свой Framework.
Студент, вместо того, чтобы привести в порядок таблицы, строит трехэтажные SELECT-ы - это он себе Framework изобретает.
Если Вы думали пошутить, то Вы ошиблись. На самом деле, так оно и есть. Если бы Вы дали себе труд посмотреть статью в википедии, то поняли бы в чем дело.

FrameWork - это вовсе не название какого-либо класса или библиотеки классов. Это прежде всего идея (концепция) того, как следует строить приложение. Совокупность ответов на те вопросы, от которых Вы по прежнему отмахиваетесь. Если Вам так будет понятнее - это ТЗ (тех.задание)

Если все приложение целиком, все классы, процедуры и функции исходят из некой идеи, пусть "кривой", ошибочной и дилетантской, но общей для всего приложения, то вся эта совокупность и есть FrameWork. Вне зависимости от степени образованности того, кто это приложение написал.

А вот то, на что Вы постоянно ссылаетесь (wizards, FFC) - это всего-лишь один из возможных вариантов Framework. Реализация одной из возможных концепций. Вы так и не хотите понять, что в FoxPro можно реализовать МНОГО самых разных Framework-ов. И то, что приведено в примерах, во-первых, очень далеко от идеала, а, во-вторых, не является обязательным для исполнения. Это всего-лишь пример того, как можно написать приложение. Но вовсе не значит, что именно так и надо писать. Это один из возможных вариантов.

Именно поэтому, Ваша постоянная апеляция к некоему коду вызывает, мякго говоря, недоумение. Вы сначала определитесь что именно делать собираетесь. А уж как именно это сделать - второй вопросы. Вы же постоянно пытаетесь "надеть штаны через голову". Сначала пишите код, а потом ищете к чему бы его приспобить.

========================

А теперь вторая часть, от которой Вы постоянно отмахиваетесь, считая ее не существенной

sg12Не знает человек, что формы можно передавать как объекты и сочиняет идентификаторы
А Вы уверены, что в данном конкретном приложении реализация идеи идентификаторов не является осознаным выбором, а не следствием незнания? Многие программисты стараются всячески избегать передавать объекты как параметры, опасаясь сопутствующих проблем.

sg12Не знаком человек с опцией LINKED и нагородил в своих программах что и показать стыдно
С чего Вы решили, что опция LINKED является необходимой для написания приложения? Каким именно образом использование или не использование опции LINKED связано с качеством кода? Многие программисты вообще не используют файлы SCX, считая их "оставленными для совместимости" и вообще "тупиковой идеей".

sg12Студент, вместо того, чтобы привести в порядок таблицы, строит трехэтажные SELECT-ы
С чего Вы решили, что таблицы не в порядке или студент имеет возможность модифицировать структуру базы данных?

Вы опять бежите впереди паровоза. Вы не знаете какую именно задачу решает человек и в каких условиях (ограничениях), однако навязываете ему инструмент. Ну, условно говоря, надо гвоздь забить, а Вы предлагаете отвертку. Да, конечно, отвертка тоже нужный инструмент. Но для закручивания/откручивания. А вовсе не для забивания.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38137716
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ВладимирМ

Вот одна из ваших цитат оттуда:

Дата: 18.10.07 10:39:33
Любой Framework жестко завязан под конкретную постановку задачи и личные предпочтения программиста.
И по прежнему согласен с этой цитатой!

sg12Хоть к десятилетнему юбилею VFP9 вы посмотрите его хелп, надеюсь.
Вы уже "споткнулись" на библиотеке _base.vcx посчитав, что имя файла (библиотеки) и есть реализация концепции (идеи). Теперь Вы повторяете ту же самую ошибку в отношении библиотеки _framework.vcx.

Вы вообще-то сами строите приложение с использованием Application Wizards? Или используете библиотеку _framework.vcx как пример? В смысле, с чем-то соглашаетесь, что-то используете, но что-то и отбрасываете (не используете).
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138035
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Ваша фантазия неистощима, скоро уж весь словарь компьютерных терминов перелистаете.
Теперь слово "идея" вытащили и ищете, куда бы его приткнуть.

Цитаты из ВАШЕЙ ссылки на статью, которую вам самим не грех бы прочитать:
Фреймворк (англ. framework — каркас, структура) — структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек.
Фреймворк определяется как множество конкретных и абстрактных классов, а также определений способов их взаимоотношения.

Из хелпа VFP9:
Базовый класс разработки приложений (framework) _application, кроме основных свойств и методов включает пять (5) базовых объектов построения приложения пользователя: cuserror, cusdatasession, cuswindowhandler, custablesort, and custablenav.
Рассматриваемый базовый объект построения пользовательского приложения содержит стандартные методы и свойства, обеспечивающие основные механизмы манипулирования данными, позволяют развивать и усиливать функциональность предложенных методов и составляющих объектов Application Framework данной версии Visual FoxPro.
Рассматриваемый объект _application, вместе с вспомогательными объектами размещается в библиотеке классов ...home()\Ffc\ _framewk.vcx.

Такое впечатление, что на эту терминологию вы смотрите как на новые ворота.
У вас в ходу все тот же самопальный козырь: "многие программисты ...".
Да мало ли кто что придумывает в своих программах - на то оно и программирование.
Ну и называйте это на здоровье своим словом - "что-то придумал", и не надо будет никому морочить голову.
Но различать FrameWork и приложения вам пора бы уже научиться. И уж тем более отличать его от различных примеров-самоделок.
Тем более, что FrameWork абсолютно не мешает заниматься подобным творчеством.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138082
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-переводчик...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138151
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Переведите сами.
Но от этого ничего не изменится.
Ведь каждый может сам щелкнуть по этому FrameWork и убедиться в его существовании.
Разумеется, кроме ВладимираМ - его ничем не проймешь, восьмилетняя закалка сказывается.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138196
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 абсолютно не мешает заниматься подобным творчеством.
Вот не надо перекладывать свои проблемы на других. Это именно Вы никак не можете отличить некий термин "общей теории" от примера использования этого термина. Вы увидели название файла и почему-то решили, что имя файла - это и есть вся "теория". Имя же совпадает, чего еще надо? Причем Вы ведь даже не пробовали запускать этот пример. Не говоря уже о том, чтобы смотреть его код.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138284
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Развозить вы мастер, не отнимешь ...

Хорошо, теперь посмотрим, что вы подразумеваете и что вы имеете в виду вообще.
Согласно вашим утверждениям этих разных FrameWork-ов - тыщи ...
Только на этих пяти страницах вы на пальцах описали их порядка двухсот - вы ведь не фантазировали, не правда ли ...
Предъявите хотя бы пару десятков из них, пожалуйста.

Что касается ответов на вопросы, то я их начал давать с начала темы.
Вам достаточно начать ее читать сначала, пропуская те места, где вы переводите вопросы в балабольство.
Повторяться я не буду, но если вопросы возникнут, то пожалуйста.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138356
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Кстати, вы заметили, что я с вами проделал трюк - мимоходом подставил вам абстрактные цитаты.
А вы продолжаете так же абстрактно молотить свои монологи, словно с кем-то спорите.
И вы так же абстрактно придумываете мне какие-то точки зрения, на которые сами же и отвечаете.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138444
Reese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Google в помощь.
На вскидку www.foxtools.com/vfp/foxpro-frameworks
Плюс к этому, почти каждый разработчик делает свой framework.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138590
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ReeseGoogle в помощь.
На вскидку www.foxtools.com/vfp/foxpro-frameworks
Плюс к этому, почти каждый разработчик делает свой framework.

Интерсная ссылка.
Но где вы там увидели "каждый"?
И почему вы в каждой теме на вопросы типа "как" не даете эту ссылку, раз там так просто все решено.
Заглянут, нарисуют себе FrameWork, и ответ им готов.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138834
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Reese, возможно даже чуть больше. около 60-ти...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138871
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGM

Совсем как в анекдоте, свежем:
Муж перед женой хвастается: "У нас ... у меня в-о-о-о-т такой Фреймворк!"
Жена заглядывает, а там пискарик бултыхается ... в ведерке.
Ох, уж эти пискомерщики ... хлебом их не корми.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138891
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, да нее, мы про другое. Ты, это... пиши, не расслабляйся. Открываем мы, значит, _framevork, создаем класс... Дальше-то что делать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38138932
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Теперь вернемся к вашему козырной карте - новичкам.
Новичкам этот вопрос не нужен - им на 1С нужно переходить, если они хотят на свой бутерброд масло намазывать.
Студентам тоже - у них такие же преподы-старперы рулят и после сдачи они все это забудут, как дурной сон.
Местным троллям да ходокам с ПустоТрепа вообще все это нафиг, даже ваши монологи они не в состоянии осилить. Хотя родственную душу чуют, засуетились.
Но вообще без них скучно.

Если же о настоящих гуру - так они еще пять лет вняли предупреждению и ушли в другие языки и теперь они только посмеиваются над этими страстями - фокс для них только хобби.
Огорчу вас - в некоторой степени я тоже принадлежу к этой категории, хоть и не гуру.
С этим FrameWork я разобрался еще тогда, когда вы него и взглянуть боялись.

Эта перестройка FrameWork может пригодится тем, кто по жизни лет на пять-десять все еще завязан на VFP, да и на FPD - пока не оказались у разбитого корыта.
Но у многих настолько низок уровень и столько гонора, что сомнительна вообще какая-либо перестройка.

GermanGM, вам-то это зачем. Настроение будет, загляну в ваш ПустоТреп, поразвлечься и лясы поточить порой я тоже не против.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139038
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой фрамеворк? Какие классы?
CASE + SAY, GET, READ, APPEND BLANK, SCATTER & GATHER - всё, что нужно для супер-пупер-универсальной "оболочки" для новичков! Клацнул "скачать", дописал нечто вроде oapp.case("say") и продал шЫкарный продукт за мешок денег!
P.S. Кстати, а откуда у "умирающего" фокса постоянно появляются новички?
P.P.S. Разориться можно на проклятой кукурузе, "разорванной изнутри".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139044
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, мне "это" и впрямь незачем: FoxPro-шное окошко у меня давным-давно "подогнано по фигуре". Владимиру Максимову - тем более. Но вы-то явно рассчитываете на более широкую аудиторию, причем выбрав наиболее невыгодный для вас же стиль общения. Каждый имеет право на свою личную радикальную точку зрения, но в сферах деятельности, рассчитанных прежде всего на результат, подобные идеи должны прежде всего выдержать проверку временем и доказать свою практическую ценность. Пока этого не случилось, на них прочно будет висеть ярлык прожектерства. Плюс к тому вязкая, безапелляционная и явно оскорбительная манера излагать свое заведомо "единственно правильное" мнение, непонятно чего ради. Бессмысленный глумеж самоутверждения для? Неразумному школию, у которого еще юношеский максимализм не выветрился, а уже где-то зачесалось и пора начинать отстаивать свое место в стаде, это еще было бы простительно, но вы-то вроде как из этого возраста вышли? Или нет? Завалить собеседников словесным мусором, добиться того, что вас здесь перестанут воспринимать всерьез и уползти на какой-нибудь другой форум, где все начать сначала... В таком случае не вы первый и не вы последний. И несть вам числа
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139147
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMsg12, мне "это" и впрямь незачем: FoxPro-шное окошко у меня давным-давно "подогнано по фигуре". Владимиру Максимову - тем более. Но вы-то явно рассчитываете на более широкую аудиторию, причем выбрав наиболее невыгодный для вас же стиль общения. Каждый имеет право на свою личную радикальную точку зрения, но в сферах деятельности, рассчитанных прежде всего на результат, подобные идеи должны прежде всего выдержать проверку временем и доказать свою практическую ценность. Пока этого не случилось, на них прочно будет висеть ярлык прожектерства. Плюс к тому вязкая, безапелляционная и явно оскорбительная манера излагать свое заведомо "единственно правильное" мнение, непонятно чего ради. Бессмысленный глумеж самоутверждения для? Неразумному школию, у которого еще юношеский максимализм не выветрился, а уже где-то зачесалось и пора начинать отстаивать свое место в стаде, это еще было бы простительно, но вы-то вроде как из этого возраста вышли? Или нет? Завалить собеседников словесным мусором, добиться того, что вас здесь перестанут воспринимать всерьез и уползти на какой-нибудь другой форум, где все начать сначала... В таком случае не вы первый и не вы последний. И несть вам числа

ы затронули очень много вопросов.
1. Этот стиль общения не я выбирал, он был до меня, причем давно. Просмотрите старые темы - затюкивали и куда более тактичных.
2. К сожалению, я не вижу большую практическую ценность от этой идеи, иначе я спокойно нашел бы более практичный путь еще лет пять-шесть назад. Для этого не нужна аудитория.
3. Ярлык прожекторства в Фоксе висел всегда и на всем. Единственное, что сделано благодаря энергии нескольких энтузиастов - перевод хелпа.
4. "Вязкая, безапеляционная и явно оскорбительная манера" - именно мне нескольких пришлось от этого отучать, не только ВладимираМ.
5. Смеюсь, а то и глумлюсь я только над явной глупостью, когда она у авторитетов прет из щелей.
6. Уж в стадном чувстве меня обвинять несерьезно, это вы упомянули для порядка.
7. Что касается словесного мусора - покажите посты оппонентов, не подходящих под это определение и я вернусь к этим вопросам.

Redrik. Вы забыли упомянуть такое достоинство, что в командах достаточно написать четыре буквы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139257
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разговор опять зашел в дебри перехода на личности и принципов ведения дискуссии, не раз расписанных классиками литературы...

В качестве одного из завершающих аккордов я мог бы предложить рассмотреть тему под таким углом - не бывает "чистого фокспрошника" (что бы нам уважаемый sg12 тут не втирал). Поскольку создавать работоспособный код на Фоксе (или изучать его "не для галочки") можно только уже зная основы программирования, а также параллельно изучая другие реляционные СУБД. Таким образом, можно ли рассматривать FP (вижуал, не вижуал) как парадигму?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139321
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off AndreTM, хорошее предложение! Еще страниц этак на 10 в том же духе :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139342
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Redrik. Вы забыли упомянуть такое достоинство, что в командах достаточно написать четыре буквы.
Виноват!!! Как можно было забыть такое? Расслабил булки, подлец!
В самом ведь деле - в старые-добрые времена дефицита, когда каждый байт был на счету, команды таки действительно сокращались до 4-х букв с целью экономии места на дисках...
Наверное неспроста CASE - это даже в сокращенном виде те же 4 буквы?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139462
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMВ качестве одного из завершающих аккордов я мог бы предложить рассмотреть тему под таким углом - не бывает "чистого фокспрошника" (что бы нам уважаемый sg12 тут не втирал). Поскольку создавать работоспособный код на Фоксе (или изучать его "не для галочки") можно только уже зная основы программирования, а также параллельно изучая другие реляционные СУБД. Таким образом, можно ли рассматривать FP (вижуал, не вижуал) как парадигму?

Это вы загнули.
У меня от слова "Идея" психика чуть не пошатнулась, когда узнал, как его к фоксовскому _framewk можно приклеить.
А вы тут новое слово вбрасываете - "парадигма". Опасная затея, этого я не выдержу.
Лучше уж на уровне "общая теория - это имя файла" притормозить - вам попкорн, мне валидол.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139547
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, где попарно группируются все процедуры запуска/выхода тоже.
Осталось вынести все параметры настроек в отдельный объект.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139556
pioner-v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12...
Разумеется, кроме ВладимираМ - его ничем не проймешь, восьмилетняя закалка сказывается.

Сарказм - не аргумент. Закалка - вещь хорошая.
А ВладимираМ и не надо ничем "пронимать".
Я лично считаю, что он прав...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139605
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pioner-v

"Я лично считаю ..." - это довольно слабый аргумент.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139661
sg12...
CD LEFT(SYS(16,0),RAT('\',SYS(16,0)))
...


Месье не знаком с функцией JUSTPATH()?
Жаль... А то строка легким движением руки преобразуется в "простой и понятный вид":
Код: sql
1.
CD JUSTPATH(SYS(16,0))
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38139688
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийsg12...
CD LEFT(SYS(16,0),RAT('\',SYS(16,0)))
...


Месье не знаком с функцией JUSTPATH()?
Жаль... А то строка легким движением руки преобразуется в "простой и понятный вид":
Код: sql
1.
CD JUSTPATH(SYS(16,0))



Если честно, то нет.
Эта строка у меня с Tastrade времен, когда этой функции не было.
Только сейчас обратил на нее внимание.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140064
pioner-v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12pioner-v

"Я лично считаю ..." - это довольно слабый аргумент.

Ваш аргумент - это Ваш аргумент. И я его уважаю независимо от содержания.
Я высказал свое мнение. И здесь мне безразлично Ваше мнение.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140720
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие почему-то считают, чем сложнее код, чем больше команд, функций, классов в нем задействовано, тем умнее программист.
Ребята, не знаю как для Вас, а лично для меня написание FOX'овского приложения сводится прежде всего к двум вещам:
1) Нормализация баз данных
2) Оптимизация запросов
Все остальное - это детали, они, конечно, важны, но не настолько, <ИМХО> виртуозное владение классами принципиального значения не имеет...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140748
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p1) Нормализация баз данных
2) Оптимизация запросовНу так архитекторы и сидят, треская попкорн...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140762
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Что-то без вас скучно стало ...
Еще раз попробуем зайти с другого бока, попроще.

Разумеется, вы знакомы с родными установками Фокса типа SET().
Вот в соседней теме в очередной раз про них, традиционные вопросы с десятилетней бородой.
Как всегда, поднаторевшие ГУРУ все также гордо вытаскивают из своих "фреймворков" те же традиционные SET("PRINTER"), заканчивая традиционным пренебрежительным "В хелпе".

Но что, кроме вашей религии, помешало вам за эти "...цать" лет написать довольно несложную глобальную процедуру, где собраны эти SET().
Где вы могли бы один раз и на вечные времена изложить свои познания как строчки комментария.
Объясните мне, профану, почему вы считаете этот второй подход ущербным, а первый - основами.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140811
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ВладимирМ

Что-то без вас скучно стало ...
Еще раз попробуем зайти с другого бока, попроще.

Разумеется, вы знакомы с родными установками Фокса типа SET().
Вот в соседней теме в очередной раз про них, традиционные вопросы с десятилетней бородой.
Как всегда, поднаторевшие ГУРУ все также гордо вытаскивают из своих "фреймворков" те же традиционные SET("PRINTER"), заканчивая традиционным пренебрежительным "В хелпе".

Но что, кроме вашей религии, помешало вам за эти "...цать" лет написать довольно несложную глобальную процедуру, где собраны эти SET().
Где вы могли бы один раз и на вечные времена изложить свои познания как строчки комментария.
Объясните мне, профану, почему вы считаете этот второй подход ущербным, а первый - основами.Такое уже написано :) Именно для всех сетов, да еще и в нотации C# :)
Плохо матчасть знаете :) Но имеете наглость учить других.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140830
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :)
Плохо матчасть знаете :) Но имеете наглость учить других.

Давайте матчасть поучим, кто против.

Начнем с того, что форум фоксовский, а не C#.
Прочтите пост, там предварительно упоминаналось о соседней теме.
Выложите свою матчасть сюда, чтобы больше никто не тыкался с этими SET() чуть не в каждой пятой теме.
И объясните не только ГУРУ, что с ней надо делать в следующий раз.
Потом продолжим.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140845
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :)
Плохо матчасть знаете :) Но имеете наглость учить других.

Давайте матчасть поучим, кто против.Начинайте.
Начнем с того, что форум фоксовский, а не C#.Ну и что? Написано то на фоксе, ка и требовалось. Просто есть одна фишечка в виде использования нотации .Net :) Прочтите пост, там предварительно упоминаналось о соседней теме.Зачем? Там есть что-то про написание оберток?Выложите свою матчасть сюда, чтобы больше никто не тыкался с этими SET() чуть не в каждой пятой теме.Во-первых, что мне делать не Вам указывать и на Вам мной командовать. Поменьше повелительного наклонения.
Во-вторых, это не мое и давно написанное и давно забытое автором. Он тоже вначале как Вы все в универсальные классы хотел запихать. Потом таки до него кое-что дошло. В отличие от.И объясните не только ГУРУ, что с ней надо делать в следующий раз.Гуру как раз ничего объяснять не надо, а хамам, постоянно тыкающим словом "ГУРУ", это и так не нужно и бесполезно.Потом продолжим.Да неужели? Опять за нас будете решать что нам делать? Не много чести?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140873
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Вы что, неграмотный?
Я конкретно предложил вам выложить сюда свою матчасть, чем вы рисанулись.
И вы сразу заскромничали - это у вас стало "не мое и давно забытое".
Если не можете это сделать, то что выпендриваетесь.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140876
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Вы что, неграмотный?
Я конкретно предложил вам выложить сюда свою матчасть, чем вы рисанулись.
И вы сразу заскромничали - это у вас стало "не мое и давно забытое".
Если не можете это сделать, то что выпендриваетесь.Да мало ли какой хам мне тут чего-то говрит? С какого перепугу мне его слушать и бежать выполнять его указания? Да и рисуется тут кто-то другой. Вы грозились начать изучать матчасть? Ну так гугл вроде еще работает, Вам надо - Вы и ковыряйтесь. Вам же присписчило всех поучить и посвергать авторитеты? Свергайте. :)
А я всего лишь сообщил аудитории про Ваши заблуждения.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140898
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Теперь гугл зовете на помощь.
Вы от себя можете хоть что-то предъявить?
Вы ведь сами хвастанулись своей матчастью, за язык вас никто не тянул.
Вы хоть с этими SET-функциями знакомы, писали их сами когда-нибудь?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140918
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Теперь гугл зовете на помощь.Кто зовёт? Где зовёт? Не умеет отличать зов от предложения воспользоваться чем-то?Вы от себя можете хоть что-то предъявить?Могу. Но не хочу. Кое-кто рылом не вышел и не умеет себя вести.Вы ведь сами хвастанулись своей матчастью, за язык вас никто не тянул.Пруфлинк в студию. Особенно про "свою". Как Вы там Максимова обвиняли в придумывании за Вас чего-то там? Ну так вот сами придумали про "свою", сами с ней и разбирайтесь.Вы хоть с этими SET-функциями знакомы, писали их сами когда-нибудь?Да что Вы, какие еще set? Кроме Вас же тут никто ничего не знает и не умеет, фокс увидели в первый раз.
Продолжаем внимать новоиспеченному гуру от фокса :) и ниспровергателю остальных ГУРУ. Так что Вы там еще нам хотели сообщить и на что открыть нам глаза? А доказательства необходимости такого открытия приведете? Ну чтобы уж все было по порядку.

И не надо больше меня ни о чем спрашивать. Вы завели эту тему, Вы тут нас "просвещаете" - Вам и отдуваться. Я всего лишь пытаюсь поймать смысл Вашей писанины.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38140929
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю не переходить на личности, думаю, многие уже составили свое мнение о ТС, хотелось бы все таки увидеть продолжение:
sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность.
Вдруг окажется, что действительно для того чтобы вытащить данные из дбф и быстренько сделать отчет будет мало одной прг, и надо будет задействовать весь механизм, что нам предлагает ТС. :-)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141150
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :)
Плохо матчасть знаете :) Но имеете наглость учить других.

Подведем итоги:
- с матчастью вы сблефовали,
- по делу вы ничего путного сказать не смогли.

По теме.
По терминологии от ВладимираМ это и наз. "основами программирования".
Хотелось бы все-таки увидеть им рекламируемые "тыщи" FrameWork.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141153
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ принципе можно самому написать, только не на фоксе. Надо использовать функцию EnumWindows() а фокс не умеет адреса функций передавать как параметр.


Можно с этого места подробнее ...
Хотелось бы знать мнение знатока Winapi о так так называемых Callback-фунуциях и с чем их едят.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141160
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300Вдруг окажется, что действительно для того чтобы вытащить данные из дбф и быстренько сделать отчет будет мало одной прг, и надо будет задействовать весь механизм, что нам предлагает ТС. :-)

Почему вы решили, что вся программная жизнь состоит из "вытащить данные из дбф и быстренько сделать отчет"?
И почему решили, что ТС вам мешает сделать так как вам нравится?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141220
TёMochkiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! А подскажите, я что-то не пойму, вставляю этот код в окно команд

Код: sql
1.
2.
3.
4.
5.
6.
7.
cMyArray[1] = 'A'
cMyArray[2] = 'B'
cMyArray[3] = 'C'

FOR EACH cMyVar IN cMyArray
   ? cMyVar
ENDFOR



нажимаю энтер в конце последней строки, и оно мне ошибку пишет

Что я делаю не так? Или это другим способом надо выполнять?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141230
TёMochkiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вверху не дописал одну строку кода
Код: sql
1.
DIMENSION cMyArray(3)


но и с ней эта же ошибка
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141233
TёMochkiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это стандартный пример с сайта MS, а он у меня не работает :(
http://msdn.microsoft.com/en-us/library/6bzt9fh1(v=vs.80).aspx
как правильно выполнять циклы и условия в VFP?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141242
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TёMochkiN, это надо выполнять не в командном окне, а в программе (prg) или методе класса/формы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141250
TёMochkiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Спасибо!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141373
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirTёMochkiN, это надо выполнять не в командном окне, а в программе (prg) или методе класса/формы.
Правильно. Но если очень надо, то после того как скопипастил в командное окно - выделить весь код, правая кнопка мыши, Execute selection
Иначе выполняется строка на которой стоишь. Если стоишь на ENDFOR - получишь Nesting error
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141400
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Почему вы решили, что вся программная жизнь состоит из "вытащить данные из дбф и быстренько сделать отчет"?
И почему решили, что ТС вам мешает сделать так как вам нравится?
Я так не решал, это чисто Ваше мнение, не мое.
Будет продолжение
sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность.
или нет?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141500
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300Как ботинки надевать, Вы написали, следущим шагом будете показывать как шнурки завязывать? А если по существу, то работать с классами в VFP9 тут не только Вы умеете. Думаете, что тут только prg-файлами да формами программируют? Что Вы пытаетесь показать? Хотите создать универсальный класс приложения? Думаю он у многих уже есть. Опять же, как он будет устроен и как работать будете знать только Вы, мне например вовсе неохота будет разбираться в Вашем коде. Да и не бывает универсального класса приложения, для разных задач нужен разный подход. В каждом приложении будет использоваться именно тот набор классов, который необходим. Для некоторых задач достаточно и одного prg-файла. Когда придет время искусственного интеллекта, тогда будет Вам один мозг для любой задачи, а пока продолжаю грызть попкорн и следить за темой...

Наклонившись, чтобы одеть ботинки, не спешите шнурки завязывать.
Посмотрите, что еще по пути можно сделать. (с)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141814
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey SizovТакое уже написано :) Именно для всех сетов, да еще и в нотации C# :)
Плохо матчасть знаете :) Но имеете наглость учить других.

Подведем итоги:
- с матчастью вы сблефовали,И можете это доказать?- по делу вы ничего путного сказать не смогли.О каком деле речь? Где тут дело? Или Ваш треп про портянки с case и прочий бред есть дело?
По теме.
По терминологии от ВладимираМ это и наз. "основами программирования".
Хотелось бы все-таки увидеть им рекламируемые "тыщи" FrameWork.Пока я не видел от него рекламы. Рекламу же Ваших наработок тут уже цитировали. Ждем-с.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141931
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Да не волнуйтесь вы так, с кем не бывает.
SET-функции и не такое могут преподнести.
Подумайте, вспомните, где вы эту свою матчасть затеряли.
Вы, случаем, ее с HELP не перепутали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38141956
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Да не волнуйтесь вы так, с кем не бывает.Так, с определением состояния оппонента тоже большие проблемы. :)SET-функции и не такое могут преподнести.Как я понимаю, у Вас есть диссертация на эту тему? Где бы почитать и просветиться?Подумайте, вспомните, где вы эту свою матчасть затеряли.Третий раз - пруфлинк в студию про "свою".Вы, случаем, ее с HELP не перепутали?Какая, однако, бурная фантазия! :) Боюсь, любителям попкорна грозят большие проблемы с со здоровьем в общем и с пищеварением в частности от Ваших изысков. :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142051
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Вам просто хочется языком помолоть.

Следующий вам вопрос, конкретно - у вас есть эти SET-функции, при запуске/выходе, хотя бы в одном приложении?
Если эти приложения у вас вообще есть, что вызывает сомнение.
Вы можете их представить, свои собственные SET-портянки?
А я покажу, как вам надо их переделать, чтобы они у вас перестали быть портянками.
Идет?
Или опять блефанете?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142212
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Вам просто хочется языком помолоть.Вы опять сели в лужу.
Следующий вам вопрос, конкретно - у вас есть эти SET-функции, при запуске/выходе, хотя бы в одном приложении?Давно уже нет. Уже давно все настроено. А Вы что подумали?Если эти приложения у вас вообще есть, что вызывает сомнение.А наличие у меня каких-то приложений как-то влияет на тот бред, который Вы тут несете? Или я перед Вами должен отчитаться по своим приложениям? Сами то что можете показать?Вы можете их представить, свои собственные SET-портянки?А они у меня есть? Вы опять что-то много за меня домысливаете :)А еще других обвиняте в домысливании.А я покажу, как вам надо их переделать, чтобы они у вас перестали быть портянками.Покажите, мы уже заждались и уже закормлены Вашими обещаниями нас поразить. Так когда? Почему до до сих пор еще не показали?Идет?Нет. Или опять блефанете?Опять Ваши фантазии. :)
Блефуете пока что только Вы. Грозитесь, кормите нас обещаниями, но так ничегошеньки еще не показали.
Мы дожемся хотя бы нормальной формулировки Вашей теории? Мы дождемся хотя бы нормальной формулировки проблемы, которую Вы так хотите обсудить? Или таки не обсудить, а пропиариться? Продемострировать собственную крутость? И понаехжать на ненавистных Вам местных "ГУРУ"?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142299
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно есть причины для "ненависти" А расскажи-ка, sg12, кто и на каком форуме тебя, сироту казанскую, обидел? :) И под какой личиной ты в то время флудил? Дружба с головой у тебя явно не сложилась, в FoxPro ты - ноль без проблеска, так что всего и осталось тебе - исходить словесным поносом.
А мамка-то знает, чем эт ты с компьютером-то занимаешься?..
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142308
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov,

Сдрейфил, орел?

Не надоело вам пустомелить из поста в пост - кому нужно эти ваши портянки, это ваше из пустого в порожнее.
Если уж вам так невтерпеж до чего докопаться, то закрывайте свой балаган, там посмотрим.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142372
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGM

Если уж Сизова вы к гуру причисляете - лучше уж на вашем родном ПустоТрепе это обсудим, попозже.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142381
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валяй, валяй... :) "Заходи - не бойся, выходи - не плачь"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142419
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov,

Сдрейфил, орел?Разводить на слабо еще не отучился? :)
Не надоело вам пустомелить из поста в пост - кому нужно эти ваши портянки, это ваше из пустого в порожнее. Ты самокритичен, надо признать. :) Так когда закончишь пустомелить и выполнишь свои же обещания?Если уж вам так невтерпеж до чего докопаться, то закрывайте свой балаган, там посмотрим.Мой? Ты же завел эту тему, ты ту вещаешь и просветляешь... А там - это где?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142420
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12GermanGM

Если уж Сизова вы к гуру причисляете - лучше уж на вашем родном ПустоТрепе это обсудим, попозже.На чьем это "вашем"? Родство докажешь? Ты меня на ПТ видел хоть раз? Докажешь?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142437
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovТак когда закончишь пустомелить и выполнишь свои же обещания

Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142449
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность.
Так обещанное продолжение все таки будет?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142468
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300sg12После этого я покажу вам, как надо перестроить эти библиотеки, чтобы то, что там есть полезного, приобрело практическую ценность.
Так обещанное продолжение все таки будет?

Да, конечно.
Ради вас я даже на ваш лексикон шнурков и ботинок перешел.
Вы что, не прочитали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142514
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая поговорка: "Не ошибается тот кто ничего не делает". Судя по 8 страницам топика его автор решил не ошибаться.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142528
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсть такая поговорка: "Не ошибается тот кто ничего не делает". Судя по 8 страницам топика его автор решил не ошибаться.

В этот раз вы правы.
Как видите, испытанный процесс затюкивания пока буксует.
И, похоже, это раздражает не только вас.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142533
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Как видите, испытанный процесс затюкивания пока буксует.Не обольщайтесь, сударь, Вы тут никому не нужны и затюкивание Вас никому никаких лавров не принесет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142534
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey SizovТак когда закончишь пустомелить и выполнишь свои же обещания

Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал.А оно мне надо? Чего сказать-то хотели?

Так когда будет обещанные свержение авторитетов и слом стереотипов?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142546
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12пропущено...


Вы нашли этот _framewrk? Для таких как вы продвинутых я подробно по шагам все расписал.А оно мне надо? Чего сказать-то хотели?

Так когда будет обещанные свержение авторитетов и слом стереотипов?

Если вы не в состоянии даже найти этот файл, то чего у вас свергать-то ... было бы что.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142552
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizovпропущено...
А оно мне надо? Чего сказать-то хотели?

Так когда будет обещанные свержение авторитетов и слом стереотипов?

Если вы не в состоянии даже найти этот файл, то чего у вас свергать-то ... было бы что.Откуда уверенность, что я его не могу найти? Каким образом ненахождение мной этого файла Вам мешает выполнить свои обещания? А если бы я тут ничего бы не писал, то свои обещания Вы точно не выполнили бы? Ибо без меня Вы их выполнить не можете? И мое нежелание искать уже давно мне известное поставит крест на выполении Вами Ваших же обещаний?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142594
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Да, конечно.
Ради вас я даже на ваш лексикон шнурков и ботинок перешел.
Вы что, не прочитали?
Ну почему же? Прочитал. И это не мой лексикон, просто привел пример аналогии, что Вы хотели показать то, что многим и так известно. Разве это не очевидно?
Предлагаю все таки Вам продолжить, а то словесная перепалка может длиться бесконечно.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142611
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Надо же, как загнули - сразу и не поймешь, о чем это ...

Ваша некомпетентность с эти файлом свидетельствует о том, что вы выдумали себе какие-то обязательства по отношению к себе, что связано с вашим высоким мнением о себе, обратно пропорциональным вашей компетентности.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142613
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300

Зачем предлагать, да еще в таком тоне - вы ведь не Владимир Максимов.
И эта вами скопированная строка была адресована ему, а не вам.
К вашему сведению, это авторитетный гуру и непререкаемый авторитет по многим вопросам.
И пусть вас не смущает тон дискуссии - этот вопрос будет продолжен, когда он примет это решение.
Или если проработанность ваших вопросов достигнет такого же уровня.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142631
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12 , из Вас получился бы отличный политик.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142701
TёMochkiN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TПравильно. Но если очень надо, то после того как скопипастил в командное окно - выделить весь код, правая кнопка мыши, Execute selection
Иначе выполняется строка на которой стоишь. Если стоишь на ENDFOR - получишь Nesting error
спасибо!!! теперь и это буду знать, очень пригодится! :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142891
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300 sg12 , из Вас получился бы отличный политик.

Политика здесь не при чем, надо знать проблематику вопроса.

В Интернете давно сложился тип людей - типа голубей.
Здесь клюнут, там поклюют - глядишь, к вечеру и насытились.
Кинешь горсть крошек со стола - слетаются. Поклевали - разлетелись.
Это даже не хобби, это образ жизни, вырабатывается он годами.
И они занимаются этим с увлечением, своего рода компетентность - обо всем и ни о чем.

Определить принадлежность оппонента к этой категории нетрудно - надо быстренько проверить глубину их компетенности.
Уточнение вопроса в конкретику их раздражает, а то и озлобляет, т.к. бьет по их самолюбию. Типичная их реакция - "СамТыКто".
Таких людей лучше использовать как поверхностные справочники, когда самому лень заниматься поиском информации.
Но вопрос, вынесенный в заголовок темы не для этой категории людей по определению - за пару дней и даже недель его не осилить.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142922
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300

От совета по шнуркам и ботинкам вы напрасно так легкомысленно отмахнулись.
Это хоть и иносказательное, но довольно точное определение вашей ситуации.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142970
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142989
sg12tor300

От совета по шнуркам и ботинкам вы напрасно так легкомысленно отмахнулись.
Это хоть и иносказательное, но довольно точное определение вашей ситуации.

Ну как бы это сказать помягче...
"Не говорите, что мне делать... И не скажу куда Вам идти..." (С), не моё

sg12Определить принадлежность оппонента к этой категории нетрудно - надо быстренько проверить глубину их компетенности.
Уточнение вопроса в конкретику их раздражает, а то и озлобляет, т.к. бьет по их самолюбию. Типичная их реакция - "СамТыКто".

Пока что не было никакой конкретики, никакого кода, который можно было бы обсуждать. Одни пространные рассуждения "ни о чем"... А попытки "уточнения вопроса в конкретику" Вас почему-то "раздражает, а то и озлобляет, т.к. бьет по самолюбию"...
Выложите работающий пример, который бы наглядно демонстрировал Ваши идеи и разбивал в пух и прах критику оппонентов! Если нет, то о чем тогда вообще разговор? О "сферическом коне в вакууме"?
Если так, то делаем логичный вывод, что "это даже не хобби, это образ жизни, вырабатывается он годами. ... компетентность - обо всем и ни о чем."
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38142991
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMПоциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :)
+1
Истинный политик, никакой конкретной информации, один бред (мое личное мнение, можешь не отвечать, твой диагноз ясен, пришел сюда самоутверждаться? ).
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143003
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущее сообщение адресовано sg12
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143041
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Взгляните на название темы - речь идет не о кодах.
Да и на этот вопрос я уже отвечал - если даже я выложу какие "чудо-коды", то что изменится.
Если даже несколько начальных кусков кода у некоторых уже вызвали нервный зуд.
А перевод вопроса в русло "СамТыКто" я только что комментировал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143072
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300GermanGMПоциэнт, в нарушение общепринятых этических норм, прилюдно занимается самоанализом... :)
+1
Истинный политик, никакой конкретной информации, один бред (мое личное мнение, можешь не отвечать, твой диагноз ясен, пришел сюда самоутверждаться? ).

Возможно.
Как видите, пара постов и вы нашли свое место в шеренге.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143077
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Надо же, как загнули - сразу и не поймешь, о чем это ...Ну, Вы на протяжении всего топика демонстрируете слабые мыслительные способности.
Ваша некомпетентность с эти файломНекомпетентность в чем? В выполнении Ваших мечтаний? Да, в этом я некомпетентен. А я их должен выполнять? Я брал на себя какие-то обязательства? свидетельствует о том, что вы выдумали себе какие-то обязательства по отношению к себе,Доказательсятва сего в студию. что связано с вашим высоким мнением о себе, И доказательства эт ого тоже.обратно пропорциональным вашей компетентности.Логический вывод сделанный на основе ложных утверждений ложный.

Вы продолжате настойчиво демонстрировать свои очень "своеобразные" видение мира и трактовку событий и фактов. :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143097
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Орел вылетел на охоту, поклевать.
И что в этот раз я должен отвечать вам?
Продолжать эту вашу перебранку - ваши способности мне известны.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143104
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovЛогический вывод сделанный на основе ложных утверждений ложный.Не ложный, а неопределённый.
Т.к. хотя (false ==> false) = true., но и (false ==> true) = true (вспоминаем мат. логику :))
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143115
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такая статья на глаза попалась. Просто inner join :))
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143134
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
IF loItem.Attributes and 4
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143154
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirSergey SizovЛогический вывод сделанный на основе ложных утверждений ложный.Не ложный, а неопределённый.
Т.к. хотя (false ==> false) = true., но и (false ==> true) = true (вспоминаем мат. логику :))

Вот где я с вами согласен!
Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан!

GermanGM, вы меня ошарашили глубиной своих познаний.
Сменили поклевку?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143216
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.
IF loItem.Attributes and 4


Если бы там было не "and", а "&" то я бы сказал, что третий бит проверяется на равенство 1....
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143252
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143284
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMsg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка?

Я не знаю, эту 4-ку я в первый раз увидел.
Спросить как-то постеснялся.
Поясните, что она означает, раз вы на WMI и скрипты решили переключиться - ничего не имею против, только приветствую такую вашу переквалификацию.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143301
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12GermanGMsg12, таки хотя бы один ответ по существу будет? :) Без твоих увиливаний и прочего лепета детсадовского уровня. Уточню суть: где в этой строке явная грубейшая синтаксическая ошибка?

Я не знаю, эту 4-ку я в первый раз увидел.
Спросить как-то постеснялся.
А чего стесняться? Спроси у того кто этот пост писал. Там уверенно написано. Видно что человек знает и понимает чего пишет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143398
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12пропущено...


Я не знаю, эту 4-ку я в первый раз увидел.
Спросить как-то постеснялся.
А чего стесняться? Спроси у того кто этот пост писал. Там уверенно написано. Видно что человек знает и понимает чего пишет.

Там написано "примерно так".
Могу и у вас спросить, что это означает, "писькомерянием" не страдаю.

Станислав С...кий. Вы не для таких вот ГУРУ предложили мне выложить коды?
Представляете, чем они изойдут, если я выложу класс для работы с WMI.
Не отмоешься потом.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143405
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, да причем тут WMI со скриптами. Нельзя бездумно "перекладывать" VBscript на FoxPro-шный диалект. Можно-то конечно, можно, вот только работать не будет
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143424
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Орел вылетел на охоту, поклевать.Спасибо за информацию, но Ваш род занятий тут уже известен.И что в этот раз я должен отвечать вам?Желательно правду, а идиотизмы. Хоть один ответ на хоть один вопрос будет?Продолжать эту вашу перебранку - ваши способности мне известны.Да неужели? Где, когда и при каких обстоятельствах Вы их узнали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143431
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан!Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143437
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12 "писькомерянием" не страдаю.Да неужели? А кто тут постоянно пытается меряться с ГУРУ?
Станислав С...кий. Вы не для таких вот ГУРУ предложили мне выложить коды?Таких - это КАКИХ? Определение дадите?Представляете, чем они изойдут, если я выложу класс для работы с WMI.А он есть? :) Вы такой знаток ГУРУ? Где и когда Вы их так изучили?Не отмоешься потом.Ну так не надо надо пИсать против ветра. :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143439
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Sergey Sizov]Желательно правду, а идиотизмы. Хоть один ответ на хоть один вопрос будет?[quot ]Читать так:
Желательно правду, а НЕ идиотизмы. Хоть один ответ на хоть один вопрос будет?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143494
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMsg12, да причем тут WMI со скриптами. Нельзя бездумно "перекладывать" VBscript на FoxPro-шный диалект. Можно-то конечно, можно, вот только работать не будет

"Причем WMI со скриптами" вы можете уточнить, прочитав пост полностью.
Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать.

Sergey Sizov, вроде на все ваши вопросы я отвечаю, неужели вы опять в обиде.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143515
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12что вам стоит эту функцию доработать.
Ключевое слово "стоит". Ты сразу уточняй сколько ты платишь за конкретную работу.
А то от тебя всем идет куча тупых предложений работу поработать. Может кто и не против если оплата достойная.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143630
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12что вам стоит эту функцию доработать.
Ключевое слово "стоит". Ты сразу уточняй сколько ты платишь за конкретную работу.
А то от тебя всем идет куча тупых предложений работу поработать. Может кто и не против если оплата достойная.

Рассмешили ...

Ладно - процент от прибыли.
Только вот ведь незадача - чтобы за работу платили, надо ее уметь делать.
Отсюда и процент.
Это ведь вам не студенческие курсовики, выпендриваться не получится.

Освоите хотя бы goApp - проценту поболе ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143634
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12Этот непризнанный ГУРУ не только SET-функции не знает, но и в мат.логике профан!Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп?

Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение.
А если нет, то что обижаться.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143811
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov, вроде на все ваши вопросы я отвечаю, неужели вы опять в обиде.Это вам только кажется. Пока еще ни на один вопрос ответа нет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143821
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizovпропущено...
Опять про ГУРУ вспомнили? Доказательства незнания будут или опять только безапеляционый и бездоказательный треп?

Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение.Утверждения Ваши, Вам и доказывать.А если нет, то что обижаться.Очередная демонстрация альтернативного видения мира. Где увидел обиду? Доказательства обиды будут?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143862
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12пропущено...


Если вы с SET-функциями хоть немного знакомы, то можете выложить свое умение.Утверждения Ваши, Вам и доказывать.

Суслика видишь? - Нет.
А он есть.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143883
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizovпропущено...
Утверждения Ваши, Вам и доказывать.

Суслика видишь? - Нет.
А он есть.Слив засчитан, треп продолжается.

ps: модератор, может пора уже закрыть сей топик? ибо конструктива ноль, есть только беспардонные наезды и раздача оценок всем вокруг от топикстартера с полным отказом оного отвечать на вопросы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143911
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov

Какой конкретно вопрос вас интересует?
Только без базара.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143949
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovps: модератор, может пора уже закрыть сей топик?
Не надо. Он в других топиках гадить начнет. Пусть ходит под себя.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143958
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Ладно - процент от прибыли.
поконкретнее, в цифрах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143962
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSergey Sizovps: модератор, может пора уже закрыть сей топик?
Не надо. Он в других топиках гадить начнет. Пусть ходит под себя.

Sergey Sizov
Вы только что жаловались модератору на "беспардонные наезды и раздачу оценок"
А это как на вашем языке называется?
Я кого-нибудь затаскиваю в эту тему насильно, чтобы мне здесь писали гадости?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143966
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Ладно - процент от прибыли.
поконкретнее, в цифрах.

Пожалуйста.
0% работы - 0% прибыли.
100% работы - все забираете.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38143977
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12100% работы - все забираете.
Я так и делаю. Объясни зачем мне нужны советчики что я должен делать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144005
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12100% работы - все забираете.
Я так и делаю. Объясни зачем мне нужны советчики что я должен делать?

Ну и делай, кто тебе мешает?
Если эта тема тебя так нервирует, то так и скажи.
Гадить-то зачем, а обвинять другого?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144008
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima Tпропущено...

Не надо. Он в других топиках гадить начнет. Пусть ходит под себя.

Sergey Sizov
Вы только что жаловались модератору на "беспардонные наезды и раздачу оценок" И опять двадцать пять, опять демонстрация альтернативного видения мира. Где жалоба? Не умеем отличать жалобу от преложения?А это как на вашем языке называется?На чьем это "вашем"? А у ВАс какой-то другой язык?Я кого-нибудь затаскиваю в эту тему насильно, чтобы мне здесь писали гадости?Тема не Ваша и писать тут может кто угодно. И не Вам возмущаться, Вы тут уже гадостей про других в несколько раз больше написали.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144011
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Sergey Sizov

Какой конкретно вопрос вас интересует?
Только без базара.Прелестно.
Значит так: кончаешь свой балаган и свое клоунское кривлянье и нормальным русским техническим языком без наездов на кого бы то ни было и прочего хамства, без обсуждения чьих-либо знаний, умениц и желаний излагаешь свое видение темы топика. Вопрос ясен?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144015
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12Sergey Sizov

Какой конкретно вопрос вас интересует?
Только без базара.Прелестно.
Значит так: кончаешь свой балаган и свое клоунское кривлянье и нормальным русским техническим языком без наездов на кого бы то ни было и прочего хамства, без обсуждения чьих-либо знаний, умениц и желаний излагаешь свое видение темы топика. Вопрос ясен?

Я повторяю:
Какой конкретно вопрос по теме вас интересует?

Если же вам хочется только со мной побазарить, то я опять вам предлагаю для этой цели "ПростоТреп".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144035
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima Tпропущено...

Я так и делаю. Объясни зачем мне нужны советчики что я должен делать?

Ну и делай, кто тебе мешает?
Если эта тема тебя так нервирует, то так и скажи.
Гадить-то зачем, а обвинять другого?
чего тать нервничать? Может я чего не знаю в этой жизни, поэтому искренне интересуюсь, пытаюсь понять чем мотивированы и на чем основаны подобные заявления:
sg12Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать.

PS Без обид. Может я на психиатра заочно учусь. А тут такая шикарная лабораторная :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144044
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tчего тать нервничать? Может я чего не знаю в этой жизни, поэтому искренне интересуюсь, пытаюсь понять чем мотивированы и на чем основаны подобные заявления:
sg12Раз вы умеете перекладывать "VBscript на FoxPro-шный диалект", то что вам стоит эту функцию доработать.

PS Без обид. Может я на психиатра заочно учусь. А тут такая шикарная лабораторная :)

У вас действительно болезненное восприятие.
Но на психиатора учатся не в очереди к нему на прием, что в вашем случае выглядит более правдоподобно.

И чем эта строка вас так занервировала?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144059
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12И чем эта строка вас так занервировала?
Ничем. Просто первая попавшаяся строка. Можно заменить на другую, например эту
sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144071
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12И чем эта строка вас так занервировала?
Ничем. Просто первая попавшаяся строка. Можно заменить на другую, например эту
sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы.

Если ничем, то зачем вы ее опять мусолите?
Строка как строка, разве нет слова "напильником".

А эта новая строка чем вас так возмутила?
Уж FSO в Фоксе не бог весть какая невидаль.
Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144127
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IF loItem.Attributes and 4

автор— А я ромашки собираю, — сказал asd_rider. — Раз — ромашка, два — ромашка!..
— Три — ромашка! — сорвал третью ромашку sg12 и запел:
пять — ромашка,
шесть — ромашка...
— Семь — ромашка, — подхватил asd_rider. — придумал! — Закричал он. — Надо подарить фоксистам ромашки!
— Погоди! — сказал sg12. — Четвертую надо сорвать...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144162
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Какой конкретно вопрос по теме вас интересует?Корректная\ формулировка основной темы топика. У Вас трудности с пониманием?
Если же вам хочется только со мной побазарить, то я опять вам предлагаю для этой цели "ПростоТреп".Вы опять себе льстите и опять демонстритуете неумение правильно оценивыать факты и события. Ну то есть альтернативное восприятие мира. Вы мне совершенно не интересны. Интересно ЧТО же такое Вы нам тут обещали показать, но скрываете не хуже партизана.

ps: в слове "психиатр" нет буквы "О".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144163
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте.Не Шутейко, а Шутенко. Кстати, вы его книгу читали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144170
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovps: в слове "психиатр" нет буквы "О".

Верно. Значит вы с ДимойТ из одной очереди, на этом я вас и поймал.
Теперь не отвертитесь.

ЗЫ. То-то вы синхронизировались ....
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144175
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov Вы мне совершенно не интересны. Интересно ЧТО же такое Вы нам тут обещали показать, но скрываете не хуже партизана.


Вы уж совсем ... того ... словно мальчик пляшет перед девочкой: "Сними да покажи!"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144176
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12Ю.Шутейко в свое время достаточно подробно многое описал на своем сайте.Не Шутейко, а Шутенко. Кстати, вы его книгу читали?

А что там у него есть интересного?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144178
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizovsg12Какой конкретно вопрос по теме вас интересует?Корректная\ формулировка основной темы топика. У Вас трудности с пониманием?


Так вы начните тему просто читать - по пять раз вопросы разжеваны, куда уж дальше.
А коды попробуйте набирать - может что и у вас начнет получаться ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144186
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov ps: модератор, может пора уже закрыть сей топик? ибо конструктива ноль, есть только беспардонные наезды и раздача оценок всем вокруг от топикстартера с полным отказом оного отвечать на вопросы.
Модератор: Хороший вопрос. Может перенести топик в ПТ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144228
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор Вопрос...
Не-не-не... Зачем? Здесь мы для поднятия настроения, потребляя продукт переработки злака, наблюдаем ректальное производство стройматериалов топикстартером. А там его местные гуру в два-три поста прихлопнут...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144277
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChМодератор: Хороший вопрос. Может перенести топик в ПТ?Давно пора ибо ничто фоксовое тут уже давно не обсуждается. Да и топикстартер сильно напрашивается на паузу для изучения норм поведения в обществе.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144280
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM.... А там его местные гуру в два-три поста прихлопнут... Не сразу, подергается немного... А здесь ему не место.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144388
Фотография justIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovSergey ChМодератор: Хороший вопрос. Может перенести топик в ПТ?Давно пора ибо ничто фоксовое тут уже давно не обсуждается. Да и топикстартер сильно напрашивается на паузу для изучения норм поведения в обществе.

Вы же сами его и кормите

А от тупо глумится над всеми, кто с ним встревает в разговор.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38144430
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...Да и, кстати, - где он? Куды подевался?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145071
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Притихли что-то ГУРУ ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145219
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Притихли что-то ГУРУ ...
Модератор: Видимо все ожидают переноса топика в ПТ
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145248
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Chsg12Притихли что-то ГУРУ ...
Модератор: Видимо все ожидают переноса топика в ПТ

Интересно будут смотреться слова "Основы FoxPro" рядом с темами про гопников, гинекологов и инопланетян .
А еще интереснее будет поглазеть, когда там местные гуру начнут разглядывать эти фокспрошные страсти.

Если же опять вернуться к теме, то опять тот же вопрос - а вообще, они существуют, эти "Основы программирования в VFP9"?
Неужто здесь нет никого, кто за восемь лет его существования не попытался найти хоть какой-то маломальский ответ на этот вопрос?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145255
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Отличная идея,тем более что сам использую такие форму, взаимодействующие также.
А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145262
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Dima T,

Отличная идея,тем более что сам использую такие форму, взаимодействующие также.
А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ?

И попутно опять вопрос - почему вы это делаете в форме, а не в классе?
А в форме не добавляете только изменения, вроде столбцов?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145276
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12thunder2Dima T,

Отличная идея,тем более что сам использую такие форму, взаимодействующие также.
А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ?

И попутно опять вопрос - почему вы это делаете в форме, а не в классе?
А в форме не добавляете только изменения, вроде столбцов?

Что именно "ЭТО" ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145298
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Что именно "ЭТО" ?

Например, ваше "взаимодействие форм", если оно решено в родительских классах - почему тогда у вас форма должна отреагировать на изменения столбцов, да еще адаптироваться?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145337
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12thunder2Что именно "ЭТО" ?

Например, ваше "взаимодействие форм", если оно решено в родительских классах - почему тогда у вас форма должна отреагировать на изменения столбцов, да еще адаптироваться?

По-моему у вас "каша" в голове. Во-первых, я не говорил, что что-то где-то решено. Я сказал, что использую такой же подход. Во-вторых, меня интересует совсем другое и я хотел бы дождаться ответа от DimaT.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145410
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12... Если же опять вернуться к теме, то опять тот же вопрос - а вообще, они существуют, эти "Основы программирования в VFP9"?
Неужто здесь нет никого, кто за восемь лет его существования не попытался найти хоть какой-то маломальский ответ на этот вопрос?
А зачем? Если Вы читаете по английски - написано много хороших книг на эту тему:
www.hentzenwerke или полный список
Владелец этого сайта Whil Hentzen сделал очень много в свое время по популяризации FoxPro. В этом издательстве даже есть книга, как правильно (по мнению авторов) написать свой Framework...

Happy reading!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38145482
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Dima T,

Отличная идея,тем более что сам использую такие форму, взаимодействующие также.
А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ?
Не только справочники. Есть класс формы для правки документов с табличной частью. В VFP9 c появлением Anchor компоновка форм значительно упростилась.
Таблицы в DE, поэтому добавление/изменение полей/колонок с помощью мыши. Последнее время работаю в основном с MS SQL, поэтому использую курсор-адаптеры в DE.
В общем трудоемкость создания минимальная. Основные трудозатраты на заточку тяжелых часто используемых форм, дописывание туда специфики конкретной задачи.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38146033
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

Если судить только по вашим довольно скромным описаниям вы все делаете в формах, которые заготовили на все случаи жизни.
А классы используете как хранилище для этих форм.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38146075
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima T

Если судить только по вашим довольно скромным описаниям вы все делаете в формах, которые заготовили на все случаи жизни.
А классы используете как хранилище для этих форм.
Прежде чем судить надо почитать то что я писал
Dima TБазовый класс "БазоваяФорма". От нее унаследованы ФормаСправочник, ФормаРедактирование и вообще все классы форм. Вобщем все построено на классе БазоваяФорма.
Классы я использую как хранилище повторно используемого кода. Для этого собственно они в ООП и задуманы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38146783
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

Ваше запутанное "я писал" и "БазоваяФорма" не мешают вам "все делать в формах".

А вот про ваши "хранилища кода" и ваше "задуманное" ООП можно подробнее, что-то интересно стало.

Из хелпа:
Visual FoxPro поддерживает как стандартное процедурное программирование, так и мощное и гибкое объектно-ориентированное программирование.
Объектно-ориентированный разработка и объектно-ориентированное программирование являются более современными и прогрессивными по сравнению со стандартным процедурным программированием.
Вместо того, чтобы думать о программе как о процессе последовательного выполнения строк кода, теперь надо думать о создании объектов.
Вы можете создавать объекты и манипулировать ими как самостоятельными компонентами приложения и применять их как в своих задачах, так и предоставлять для использования другим разработчикам.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38146808
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima T

Ваше запутанное "я писал" и "БазоваяФорма" не мешают вам "все делать в формах".
"Все делать в формах" это что по твоему? Ты распиши поподробнее как ты понял мною написанное.

sg12А вот про ваши "хранилища кода" и ваше "задуманное" ООП можно подробнее, что-то интересно стало.
Что конкретно интересует? Практические вопросы задавай. Не вижу смысла сферических коней в вакууме обсуждать. Я это умею - но не люблю лекции читать. Нужна теория - читай книги. Например ту что Сергей посоветовал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148057
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

"Все делать в формах" - у вас нет даже упоминаний о классах объектов.
И я "понял" так, что вы эти объекты программируете уже непосредственно в формах.
Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится.

Практический вопрос - свои интригующие "кодохранилища и ЗООП" вы сами придумали?
Это что-то новое.
Да еще на ходу под них какие-то теории подводите, под "сферических коней в вакууме".
Зачем выдумывать, если описание ООП есть в хелпе, с примерами.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148287
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima T

"Все делать в формах" - у вас нет даже упоминаний о классах объектов.
И я "понял" так, что вы эти объекты программируете уже непосредственно в формах.
Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится.
Неправильно понял. Есть классы форм, на всех кроме базовой есть контролы. Есть класс формы для правки, на форме кнопки "Сохранить, Отмена" , там все прописано.
Когда мне надо форму редактирования записи справочника - я просто создаю форму на основе класса формы правки и получается готовая форма с кнопками "Сохранить, Отмена".

Есть класс формы справочника где грид и кнопки "Добавить, Правка, Удалить ...". и т.д. и т.п.

Зачем кнопки выносить в отдельный класс? Лично мне никогда не требовались кнопки "Сохранить, Отмена" без формы или форма с двумя парами кнопок "Сохранить, Отмена". Всегда нужна форма на которой одна пара кнопок "Сохранить, Отмена".

В отдельные классы вынесено только то что может повторяться несколько раз на форме или использоваться без формы.
На все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148528
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12Dima T

"Все делать в формах" - у вас нет даже упоминаний о классах объектов.

Уважаемый, вы из какого ПТУ пришли ? Вы вообще VFP хоть раз запускали ? Формы в VFP давно являются классами. Перестаньте нести бред. То что вы смешиваете в одном методе разные действия свидетельствует о мягко говоря слабой теоретической подготовке. Может вам освежить знания парадигмы ООП ? А то, ей богу, стыдно за вас.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148533
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tthunder2Dima T,

Отличная идея,тем более что сам использую такие форму, взаимодействующие также.
А вот вопрос: таким чудным образом создаются только формы справочников ? Если "нет", как тогда "отреагирует" форма если изменить , например, типа столбца или добавить столбец. Какова трудоёмкость адаптации ?
Не только справочники. Есть класс формы для правки документов с табличной частью. В VFP9 c появлением Anchor компоновка форм значительно упростилась.
Таблицы в DE, поэтому добавление/изменение полей/колонок с помощью мыши. Последнее время работаю в основном с MS SQL, поэтому использую курсор-адаптеры в DE.
В общем трудоемкость создания минимальная. Основные трудозатраты на заточку тяжелых часто используемых форм, дописывание туда специфики конкретной задачи.

Я не получил ответа. Задам вопрос конкретно: имеем форму "Редактирование записи" (пока не важно чего Справочник или другой объект ИС). Изначально для этой записи была получена тем или иным способом форма (для sg12 - объект класса Form в терминах ООП). Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ?
Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ?
Спасибо заранее.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148831
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ?
Если поменять тип поля то ничего криминального в форме не случится. Текстбоксу без разницы какой тип поля ему достался. Гриду тоже.
Другое дело код где это поле используется, его весь перелопатить придется. По-хорошему о типе поля надо думать на этапе проектирования.
Я венгерскую нотацию использую. Первый символ в названии поля - тип, поэтому при смене типа изменится имя поля.
Исключение разве что изменение размера символьного поля. Тут текстбокс надо поправить (.MaxLenght)
thunder2Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ?
Спасибо заранее.
Открыть DE, вытащить поле мышкой на форму, сменить label.caption и порядок обхода записей поправить.
Если используется курсор-адаптер - сначала поправить его.

Стандартные механизмы фокса. Все быстро, легко и просто. Ничего самопального тут я не изобретал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38148834
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2,

уточню еще что конечная форма правки конкретного справочника - это именно форма (созданная CREATE FORM ... AS clsEditForm), а не класс формы (CREATE CLASS ... AS Form)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149288
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Dima T

"Все делать в формах" - у вас нет даже упоминаний о классах объектов.
И я "понял" так, что вы эти объекты программируете уже непосредственно в формах.
Попробуйте начать хотя бы с классов кнопок, "хранилищ" поубавится.
Неправильно понял. Есть классы форм, на всех кроме базовой есть контролы. Есть класс формы для правки, на форме кнопки "Сохранить, Отмена" , там все прописано.
Когда мне надо форму редактирования записи справочника - я просто создаю форму на основе класса формы правки и получается готовая форма с кнопками "Сохранить, Отмена".

Есть класс формы справочника где грид и кнопки "Добавить, Правка, Удалить ...". и т.д. и т.п.

Зачем кнопки выносить в отдельный класс? Лично мне никогда не требовались кнопки "Сохранить, Отмена" без формы или форма с двумя парами кнопок "Сохранить, Отмена". Всегда нужна форма на которой одна пара кнопок "Сохранить, Отмена".

В отдельные классы вынесено только то что может повторяться несколько раз на форме или использоваться без формы.
На все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить.

Как видите, вы сами подробно и в детялях подтверждаете то что сами и отрицаете - вы все делаете в формах.
И даже удивляетесь - зачем вам нужны классы.
Фактически это не ООП, без него вы обходитесь - разве что частично используете некоторые его удобные вам моменты с формами.
Но VFP9 заточено под объектно-ориентированное программирование.

Есть и другая сторона вопроса.
Конечно, это дело ваше, как вам программировать.
Но вы называете его ООП, хотя по факту оно таковым не является.
И таким образом вводите в заблуждение других, которые слепо вам верят.

К тому же вы имеете серьезные проблемы с модернизацией.
Даже на примере вопроса этого умника.

Объекты ведь не ограничиваются одним Textbox, это простейший случай.
Поле может быть типа мемо и потребуется EditBox. Хотя бы для обработки бланков простых текстовых документов.
Может быть картинкой-фото с поиском и даже небольшим редактированием типа обрезания краев картинки.
Может быть ID другого справочника и возможно более эстетичными будут ComboBox или ListBox (например, при нередактируемых небольших справочниках).
С числовыми полями порой красиво смотрятся маленькие калькуляторы, в полях типа дата - календарики.

Уточнение ваше вовремя - можно ведь еще вызывать и класс формы и динамически добавлять/убирать хотя бы тот же Control.
И даже вызывать другую форму - например, с вводимыми расчетами. Также данные могут оказаться вводимые со стороны.
Гридов может быть несколько, в т.ч. и динамический или просто с красивой шапкой.

Этот перечень можно продолжать до надоедливости. Примеры решений можно найти на сайтах/форумах/Фоксклубе.
Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.
А ООП в этих вопросах обладает куда большой гибкостью - часто решить вопрос можно один раз в одном месте несколькими строками вызова добавляемого класса/объекта.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149294
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2sg12Dima T

"Все делать в формах" - у вас нет даже упоминаний о классах объектов.

Уважаемый, вы из какого ПТУ пришли ? Вы вообще VFP хоть раз запускали ? Формы в VFP давно являются классами. Перестаньте нести бред. То что вы смешиваете в одном методе разные действия свидетельствует о мягко говоря слабой теоретической подготовке. Может вам освежить знания парадигмы ООП ? А то, ей богу, стыдно за вас.

Еще один грамотей.
Ладно бы еще что-то путное ляпнул.
Инкубатор где работает что-ли, кого только не заносит.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149356
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.А кто сказал, что элементы форм - это объекты базовых классов? Вроде бы общепринятая практика (у тех, кто действительно программировал на VFP) - в первую очередь сделать свой набор объектов. А вы тут им рассказываете, что они ООП не пользуют...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149377
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Как видите, вы сами подробно и в детялях подтверждаете то что сами и отрицаете - вы все делаете в формах.
И даже удивляетесь - зачем вам нужны классы.
Фактически это не ООП, без него вы обходитесь - разве что частично используете некоторые его удобные вам моменты с формами.
Но VFP9 заточено под объектно-ориентированное программирование.
Класс формы не класс? Изумительное измышление
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149389
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, ТС уже показал, "как надо", или всё ещё только критикует?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149402
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirDima T, ТС уже показал, "как надо", или всё ещё только критикует?
Он похоже еще не до конца определился "как не надо"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149486
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12можно ведь еще вызывать и класс формы и динамически добавлять/убирать хотя бы тот же Control.
А что мешает это делать в форме созданной на основе этого класса формы?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38149516
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMsg12Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.А кто сказал, что элементы форм - это объекты базовых классов? Вроде бы общепринятая практика (у тех, кто действительно программировал на VFP) - в первую очередь сделать свой набор объектов. А вы тут им рассказываете, что они ООП не пользуют...

Прочтите еще раз внимательно его описания, многое вначале темы - там нет даже упоминаний о классах и наборах объектов, разве что где мимоходом.
Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов.
Он даже удивляется - зачем они?
Единственный класс, которым он оперирует - это класс форм, где все и происходит - своеобразная форма процедурного программирования, но это не ООП.
А то, что местами используется, погоды не делает.

ДимаТ. Ничто вам не мешает так делать, если вам так хочется.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38150260
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов.
Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38150318
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12С числовыми полями порой красиво смотрятся маленькие калькуляторы, в полях типа дата - календарики.
Убил бы!
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38151243
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов.
Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ?

Вы удивитесь, но лекции по ООП в VFP9 есть готовые и они вполне доступны.
Лекции на русском языке, неплохо переведены.
Находятся они в HELP, вместе с описаниями учебных примеров.
Изучайте на здоровье.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38151249
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить.

Это сколько же бессмысленного труда потрачено ...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38151439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить.

Это сколько же бессмысленного труда потрачено ...
Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38151868
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12пропущено...


Это сколько же бессмысленного труда потрачено ...
Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь.

Ого, пять лет!
Плюс еще года два, как в сундук, в форму все подряд запихивали что влезало.
Какая тут к черту модернизация, нафиг она нужна - интересно даже взглянуть на такой шедевр.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38151983
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12 интересно даже взглянуть на такой шедевр.
Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152004
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tthunder2Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ?
Если поменять тип поля то ничего криминального в форме не случится. Текстбоксу без разницы какой тип поля ему достался. Гриду тоже.
Другое дело код где это поле используется, его весь перелопатить придется. По-хорошему о типе поля надо думать на этапе проектирования.
Я венгерскую нотацию использую. Первый символ в названии поля - тип, поэтому при смене типа изменится имя поля.
Исключение разве что изменение размера символьного поля. Тут текстбокс надо поправить (.MaxLenght)
thunder2Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ?
Спасибо заранее.
Открыть DE, вытащить поле мышкой на форму, сменить label.caption и порядок обхода записей поправить.
Если используется курсор-адаптер - сначала поправить его.

Стандартные механизмы фокса. Все быстро, легко и просто. Ничего самопального тут я не изобретал.

Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152010
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ?
В форме. Буферизация и TableUpdate() для сохранения.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152011
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152032
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки.

Код класса покажи, ... для файл-сервераидля клиент-сервера.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152130
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tthunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ?
В форме. Буферизация и TableUpdate() для сохранения.

Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152750
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12 интересно даже взглянуть на такой шедевр.
Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени.

Понятно.
Если уж за пять лет вы сами не смогли разобраться, что где нагородили ...

Вопрос вам:
Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152755
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки.

Это можно.
Таблицы ведь могут обновляться не только из ваших форм, но и из других мест (автообновление, интернет, другая программа, триггеры, toolbar и т.д.).
В таких случаях вы где создаете свои кодохранилища?
К примеру, объясните своему ученику, как ваше TABLEUPDATE() в его "класс модели" нужно перетаскивать... мышкой.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152851
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
local lcErr
if tableupdate(0, .T., thisform.cTable)
	lcErr = 'Ok'
else
	local array laErr[7]
	aerror(laErr)
	lcErr = laErr[1,2] + ' (' + alltrim(str(laErr[1,1])) + ')'
	if '[SQL Server]' $ lcErr
		lcErr = substr(lcErr, at('[SQL Server]', lcErr) + 13)
	endif
	do case
		case 'cannot insert duplicate key row' $ lcErr
			lcErr = 'Такая запись уже есть. ' + lcErr 
		case 'cannot insert an empty row' $ lcErr
			lcErr = 'Не заполнено ни одно поле. ' + lcErr 
	endcase
endif
return lcErr


thunder2Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ?
MVC это один из подходов к разработке, сам по себе он ни плох, ни хорош. Все зависит от конкретной реализации. Я бы даже сказал от общей идеологии разработки, которая включает в себя в т.ч. подход к проектированию БД.
Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению. Поэтому на уровне приложения остается только сохранить и проверить на ошибки. Поэтому в большинстве случаев надобности нет в излишних классах (писать туда нечего). Классы типа "контроллеров" нужны в случаях какой-то сложной логики, которую в БД не вынести, но с ними в каждом случае все индивидуально, поэтому нет смысла выносить их в какой-то глобальный класс на все случаи жизни.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152857
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima Tпропущено...

Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени.

Понятно.
Если уж за пять лет вы сами не смогли разобраться, что где нагородили ...

Вопрос вам:
Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм?
Даже не знаю чего и сказать на этот бред.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38152939
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как много умных слов - и какой идиотский вопрос :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153071
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistпропущено...


Код класса покажи, ... для файл-сервера и для клиент-сервера.
Выше написал - не хочу выкладывать. Без подробных объяснений понимать сложно будет. Спрашивай чего конкретно интересует. Сразу предупрежу - ничего особо экзотического я не изобрел. Все что можно было сделать просто - сделано просто.
TableUbdate() для обоих вариантов один и тот же:



ОК, мне схема интересна :)

Код: sql
1.
2.
if tableupdate(0, .T., thisform.cTable)
	lcErr = 'Ok'



Ну давай по порядку, вопросы (пока смотрим файл-сервер):

1. Где начинается и заканчивается транзакция, в каком месте класса-формы?

2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов?

3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера?

4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153222
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12пропущено...


Понятно.
Если уж за пять лет вы сами не смогли разобраться, что где нагородили ...

Вопрос вам:
Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм?
Даже не знаю чего и сказать на этот бред.

Почему же бред?

Пока из ООП вы демонстрируете некоторое знакомство только с несколькими объектами, которые научились перетаскивать мышкой на форму.
А формы перегоняете в классы с помощью "SAVE AS ..."
И только сейчас начали узнавать, что в VFP можно создавать свои классы и собирать их в библиотеки классов, и еще многое чего такого.
Даже на уровне кнопок вы плаваете с их заполнением.
Не говоря уже о невизуальных классах, которые оставят в ваших учебно-тестовых формах одни картинки.

Апломбу у вас хватает, но вы тут же тушуетесь, когда доходит до конкретики.
Для нормального освоения ООП вам понадобится года полтора.
Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят.
К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора.
И на форуме станет веселее - и развлечение, и обучение.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153316
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
local lcErr, lnId
lcErr = ThisForm.OpenTran()
if lcErr = 'Ok'
	lcErr = clsFormEdit::Save() && Сохраняем родительскую (мастера) и тут получаем nМастерID при добавлении
	if lcErr = 'Ok'
		* Проставляем добавленным деталям код мастера и сохраняем
		lnId = eval(ThisForm.cTable + '.' + ThisForm.cIdField)
		repl empty(eval(ThisForm.cChildTable + '.' + ThisForm.cIdField)) in (ThisForm.cChildTable) (ThisForm.cIdField) with lnId
		if TableUpdate(.T., .T., ThisForm.cChildTable)
			lcErr = 'Ok'
		else
			...
		endif
	endif
	if lcErr = 'Ok'
		lcErr = ThisForm.CommitTran()
	endif
	if lcErr != 'Ok'
		ThisForm.RollbackTran()
	endif
endif
return lcErr


в твоем примере:
cTable = 'Мастер'
cIDfield = 'nМастерID'
cChildTable = 'Деталь'

PaulWist4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные.
ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153439
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Для нормального освоения ООП вам понадобится года полтора.
Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят.
К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора.
И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете?
Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет.

ЗЫ. Что-то возникает у меня подозрение, что это из серии "покажите мне свой код, подробно объясните, что и как работает - я с удовольствем поимею его в своих поделках, да ещё и бабла нарублю за "эффективные собственные разработки"
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153479
P-032
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM, я это заметил со стариницы 4-й.
Уже двоим так кажется. Немного до статистики не дотягивает :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153537
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению.
Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153551
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2thunder2Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению.
Но подход MVC вовсе не влечет отказ от ХП, напротив, я сторонник как можно больше бизнес-логики перенести именно в ХП. Во-первых, такая база становиться пригодна для работы с другими приложениями (тем же ASP.NET, что архиважно в настоящее время), во-вторых, сами классы модели получаются проще. По сути, их реализация сведётся к вызову той иной ХП с передаче/получением данных.
Согласен. Сам к тому же стремлюсь. В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать.
Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности.
Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются.

Что касается web-приложений, то я считаю тут есть серьезное противоречие с десктопными. В обычной проге считаю надо выносить на клиента все что можно вынести (все расчеты не связанные с целостностью БД), т.к. суммарная мощь клиентских компов на порядки превышает серверную. С web наоборот, основная нагрузка на web-сервер (все для клиентов считается на нем) и с него надо нагрузку убирать по-максимуму, т.е. на сервер БД.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153591
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMsg12Для нормального освоения ООП вам понадобится года полтора.
Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят.
К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора.
И на форуме станет веселее - и развлечение, и обучение.Это вы сами с собой разговариваете?
Ибо никто тут (а особенно для вас) выкладывать бибилиотечный код не станет.

ЗЫ. Что-то возникает у меня подозрение, что это из серии "покажите мне свой код, подробно объясните, что и как работает - я с удовольствем поимею его в своих поделках, да ещё и бабла нарублю за "эффективные собственные разработки"

Какое бабло, какие библиотечные коды, какой эффект от кодохранилищ процедурного программирования восьмилетней давности, в которых сам автор не может путем разобраться.
На календаре 2013 год.
Это форумные учебно-тестовые формы для одного компьютера, модернизации не подлежат, бизнес-коды в них не вставишь, в комплексе они не работоспособны, в приложениях их не отладить и они никогда не отлаживались.

Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению."
Может кто расшифрует, что это значит.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153624
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T В теории все так, а на практике иногда приходится выбирать, например универсально или быстро. Если скорость важнее, то универсальностью приходится жертвовать.
Потом приходится выбирать как писать универсально или удобно (быстро). Лично мне удобство важнее если не влечет каких-то серьезных нарушений универсальности.
Универсальность тоже понятие относительное, все-равно придется какие-то доработки делать если потребуется альтернативного клиента писать. Вопрос только насколько серьезные будут доработки и какова вероятность что вообще альтернативный клиент когда-нибудь потребуется. Просто грустно тратить силы и время на создание возможностей, которые никогда не потребуются.


Раз это так грустно, то подавайте сюда и вашу "теорию" и ваше "например".
Только конкретно, не на пальцах и на ваших же кодах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153657
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД.

Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153752
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12...
Зачем, спрашивается, при этом пудрить мозги, особенно впечатляющими фразами типа "лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению."
Может кто расшифрует, что это значит.

Почему сразу "пудрить мозги", тут всё просто - сделан упор на 2-х звенку (в смысле реализация бизнес логики базы данных, а не в способе доступа к БД), что вообщем-то является правильным с точки зрения теории реляционной модели....таким образом достигается независимость БД от "клиента",... те БД выставляет интерфейс для работы с данными, а клиент может быть любым.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153839
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?
Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.

PaulWistВторое, select @@IDENTITY делать НЕЛЬЗЯ, @@IDENTITY возвращает последнее добавленное значение, если у тебя на Мастере навешен триггер с записью в табличку с IDENTITY (например табличка лога), то @@IDENTITY вернёт последнее значение именно из таблицы лога,... что бы вернуть IDENTITY от Мастера необходимо исользовать ф-ию SCOPE_IDENTITY()
Согласен. Натыкался на эти грабли. Последнее время SCOPE_IDENTITY() использую. Не оттуда скопировал :)

PaulWistDima Tпропущено...
ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД.
Хорошо, а для сложных "сохранений", через ХП сервра, какая у тебя схема кода класса?
Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи.
PaulWistчЁ
это слово больше не употребляй.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153909
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38153918
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.
...

Ну вот, правильное решение :)


И чем же оно правильное?
Только конкретно, а не на пальцах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154148
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

Нет класса на такие случаи, т.к. случаев таких нет, не использую такой подход. Все происходит в триггерах, но если изменения "тяжелые" то сохранение разбивается на две части: само сохранение и проведение. Проведение - вызов ХП, но тут только ID проводимой записи.


Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги?
Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно.
Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение".
Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать.

А где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема.

Для меня это задача из разряда "экзотики", поэтому никаких классов и прочих заготовок для нее нет. Классы использую для рутинных задач, когда из 9 случаев из 10 однотипные. Если 10 похожих случаев не накопилось, то нет смысла задумываться над однотипностью, пустая трата времени, напишешь хрень которую надо будет переписывать при очередном использовании.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154164
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWistпропущено...


Ну вот, правильное решение :)


И чем же оно правильное?
Только конкретно, а не на пальцах.
Тут тебе ссылку давали на статью с ответом на этот вопрос
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154178
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаТ

Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению?

Dima TPaulWistХорошо, а если связка сложнее Мастер - Детали1 - и от Детали1 - Детали 2,3,4 чЁ будешь делать, писать код класса для всех возможных случаев?
Я вообще не буду писать код класса для таких случаев. Тут нет стандартного интерфейсного решения, поэтому индивидуальная форма на основе clsFormEdit, а дальше как полет фантазии пройдет. Например с твоими деталями можно псевдо-дерево в гриде изобразить. Делал так однажды в проге для обсчета мебели.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154252
sg12ДимаТ

Какое отношение имеет ваша абстрактная ссылка к этому вашему конкретному утверждению?


Объясняю. Это высказывание:
Dima TЯ вообще не буду писать код класса для таких случаев.

возникло потому, что задача достаточно редкая и для нее:
Dima TТут нет стандартного интерфейсного решения... Например, можно псевдо-дерево в гриде изобразить.

В указанной по ссылке статье это описывается следующим образом:
... Многие считают, что «обобщенное» решение (с кучей возможностей для расширения) является лучшим способом справиться с будущими изменениями. ...практика показывает, что ... нет ничего лучше простого решения...

То есть, если ситуация встречается редко, один-два раза за всю карьеру, то можно (и даже нужно!) делать индивидуальные решения для каждого случая. Если же ситуация повторяется чаще и становится рутиной (например, встречается в каждом проекте), то в этом случае уже есть смысл думать об "обобщении", расписывать какие-то "особые классы" и их взаимодействие.

Попробуте поразмыслить ("помедитировать") на досуге. И вы начнете понимать ваших собеседников.

И, кстати, раз уж Вы критикуете решение ДимыТ, то предложите Ваше решение описанной ситуации, исходя из Вашей объектной модели.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154544
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Подкинули вы мне задачку, пришлось помедитировать.

Вы предлагаете мне дать решение там, где не видно задачи.
Я уже отмечал, что автор пудрит мозги своими "теориями", перемешав понятия.
Апломб меня в заблуждение не вводит.

Реального пока ничего нет, кроме библиотечного "REPLACE", на котором автор зашибает бабло.
Я уже делал замечания, что его кодохранилища не модернизируются, что тут же подтвердилось.
Незнакомство автора с "DO FORM ..." привело к тому, что автор нагородил кодов с три короба.
Но в приложениях справочники нормально вызываются через меню, что для автора очередная новость.

У него куча мифических приложений и таких же классов с грубыми ошибками якобы где-то работают лет пять.
Но с этими ошибками и классами он почему-то столкнулся только сейчас - одни отмазки.
Хотя уже после второго приложения ответы у него должны были бы от зубов отскакивать.
Не принимать же всерьез какое-то разделение чего-то от чего-то, когда автор не в состоянии отделить даже в своих процедурах транзакции от интерфейса.

Чтобы расписывать какие-либо "особые классы", надо сначала расписать "обычные".
Повторяю для автора еще раз - начать хотя бы с простого, с кнопок.
Начнет переделывать как положено и от его гордости останется только кошкин чих.

Как видите, по сути и нет ничего - только какая-то самоделка, выдаваемая за чудо природы.

На ваше вопрос об объектной модели я уже отвечал - не вижу смысла снова браться за это дело ради вот такого трепа, без практической пользы.
Начальные коды для затравки мною выложены, они прозрачны.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154587
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistпропущено...


Э-э-э, не понял, ... те само сохранение происходит по "обычной" схеме (TableUpdate), а вот вызов ХП в какой момент происходит и из какого модуля проги?
Сам подход позаимствовал из 1С, термин "проведение" оттуда же. Документ правится, периодически сохраняется но это своего рода "черновик" ни к чему не обязывающий. И только после проведения вносятся все корректировки в базу. После проведения дальнейшие изменения документа запрещены. Хотя 1С этот механизм довела до абсурда, там все можно.
Простой пример инет-банк. Платежку можно открывать, править, сохранять сколько угодно, но как только ты ее подписал, то все, это финансовый документ, деньги ушли, обратного пути нет. В данном случае подпись это "проведение".
Если честно прописывать это все муторно, поэтому стараюсь без острой необходимости не использовать.
...


Ну, я не совсем об этом спрашивал, ... это бизнес логика приложения, тут "хозяин-барин".


Dima TА где это вызвать не принципиально, вызываю там где пользователю удобнее. После нескольких дней написания навороченной ХП потратить 5-10 минут на вставку ее вызова в нужное место - не проблема.
...

Я именно про это спрашивал, где, из какого места кода и через что вызывается ХП?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154598
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Пожалуйста не переходите на личности. Используйте аргументированный подход при доказательстве Ваших идей. Спасибо.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154605
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, излишне резковато вышло, извиняюсь.

PaulWist, а вы что, знаете еще другие места вызова ХП?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154622
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154679
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.

Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154695
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Извиняюсь, что перебиваю - это у вас все еще продолжение обучения PaulWist или можно комментировать?
Комментируй.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154838
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist, а вы что, знаете еще другие места вызова ХП?

Да, знаю и не только я один :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154840
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistгде, из какого места кода и через что вызывается ХП?
Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.

Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154863
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistDima Tпропущено...

Через sqlexec() . Использую как в примерах их хэлпа.
Соединение с SQL-севером одно на все приложение, устанавливается при запуске, хэндл в глобальной переменной, поэтому вставить вызов можно куда угодно.
Если очень принципиально, то используется класс-обертка над sqlexec(), он нужен в основном для удобства обработки ошибок, ведения лога долговременных запросов и т.п.

Ага, ... ну ладно, ... собственно, пока моё любопытство удовлетворено :)

Может я помешал - перебил вам поток такой ценной информации?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154889
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Может я помешал - перебил вам поток такой ценной информации?

Нисколько,... всегда интересно узнать про решения других людей, особенно когда они подробно рассказывают про схемы решений и показывают код.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38154906
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistsg12Может я помешал - перебил вам поток такой ценной информации?

Нисколько,... всегда интересно узнать про решения других людей, особенно когда они подробно рассказывают про схемы решений и показывают код.

Решений пока не видно, схем, да и кода тоже - у ДимыТ это большой секрет, бабки он на этом зарабатывают.

А пока вы только узнали, что при процедурном программировании хендл это глобальная переменная.
Но надо заметить, что при ООП это только свойство класса, если загнать туда его "Соединение ...".
Еще вы узнали, что ДимаТ "принципиально" откопал этот аж класс для функции SQLEXEC(), хотя для нее и процедуры с гаком хватает.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38155000
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Решений пока не видно, схем, да и кода тоже - у ДимыТ это большой секрет, бабки он на этом зарабатывают.

...

Нууу, мне его пояснений и приведенного кода было достаточно, чтобы понять о чём речь.

sg12А пока вы только узнали, что при процедурном программировании хендл это глобальная переменная.
Но надо заметить, что при ООП это только свойство класса, если загнать туда его "Соединение ...".
Еще вы узнали, что ДимаТ "принципиально" откопал этот аж класс для функции SQLEXEC(), хотя для нее и процедуры с гаком хватает.

Свойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил.

Кстати, а куда на Ваш взгляд необходимо загнать SQLEXEC() в процедуру или в метод/свойство класса и если класса, то на основании какого базового класса, приведите схему кода?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38155174
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistСвойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил.
Были основания. Сначала хотел глобальный объект, но при этом неудобно писать, открываешь код класса (они у меня в VCX) и фокс предлагает убить объект, т.е. лишний раз в код класса не заглянуть. Но это еще мелочи.
Вторая проблема DE (я PrivateDS использую). Если SQLEXEC() вызывается внутри метода класса, то курсор с результатом запроса создается в DE расположения объекта. Победить я это не смог.
В итоге пришел к выводу что глобально надо хранить только хэндл соединения, для чего вполне достаточно переменной, делать класс только для хранения хэндла излишне по-моему.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38155215
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPaulWistСвойство класса конечно предпочтительне - он принял решение использовать Public переменную, ну так решил.
Были основания. Сначала хотел глобальный объект, но при этом неудобно писать, открываешь код класса (они у меня в VCX) и фокс предлагает убить объект, т.е. лишний раз в код класса не заглянуть....

Дык, причины мне понятны :) "не первый день замужем"

Dima T... Но это еще мелочи.
Вторая проблема DE (я PrivateDS использую). Если SQLEXEC() вызывается внутри метода класса, то курсор с результатом запроса создается в DE расположения объекта. Победить я это не смог.
В итоге пришел к выводу что глобально надо хранить только хэндл соединения, для чего вполне достаточно переменной, делать класс только для хранения хэндла излишне по-моему.

Это победитть нельзя, ну-у-у почти нельзя, есть правда обходной манёвр (правой рукой за левым ухом), - это сделано by Design , тут пояснения Алексея Цингауза
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38155903
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаТ, PaulWist, раз уж вы синхронизировались.

VFP9 "удобно" работает и с глобальными переменными и с объектами, и с их свойствами.
ООП это объектно-ориентированное программирование, а не способ хранения хендлов.
"Предложением убить" Фокс тактично вам напоминает, что объекты нужно не только создавать, но и закрывать.
Коды нужно выполнять не только из окна Фокса, но временами и в режиме run-time.
DE создается с Form, Formset и Report. Функционирует как контейнер для Cursor, CursorAdapter и Relation.
DS применимо к Form, FormSet, _Screen, Session, Toolbar.
Подробности в хелпе, а не за левым ухом.
Ваш принципиальный класс с SQLEXEC() можно открыть так:
Tools-Class Browser-Open-.vcx-класс.
Попробуйте в этот раз не на пальцах, и вы увидите все, что у вас есть.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38155991
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12 PaulWist

...Ваш принципиальный класс с SQLEXEC() можно открыть так:
Tools-Class Browser-Open-.vcx-класс.
...

1. Вы привели "интерфейс" открытия vcx из среды разработки, но не указали какую именно библиотеку и по какому пути необходимо открыть, видимо ошиблись при написании поста - уточните пожалуйста, какую библиотеку классов необходимо открыть, что бы "поглазеть" на неё.

2. Я вроде задал конкретный вопрос:

авторКстати, а куда на Ваш взгляд необходимо загнать SQLEXEC() в процедуру или в метод/свойство класса и если класса, то на основании какого базового класса, приведите схему кода?

Из вашего ответа мне не понятно, где необходимо писать SQLEXEC() в процедуре или методе класса,... а так же, если в методе класса, то на основании какого базового класса лучше всего написать "обёртку" над SQLEXEC() - уточните пожалуйста.

3. Что бы Вам было понятно, Алексей Цингауз (ссыку на его пост я дал выше) - это один из разработчиков Фокса начиная с 7-ой и по 9-ую версию, поэтому Ваше:

авторDS применимо к Form, FormSet, _Screen, Session, Toolbar.

мягко говоря не соотвествует действительности :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156372
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sq12:
3. Что бы Вам было понятно, Алексей Цингауз (ссыку на его пост я дал выше) - это один из разработчиков Фокса начиная с 7-ой и по 9-ую версию, поэтому Ваше:

авторDS применимо к Form, FormSet, _Screen, Session, Toolbar.

мягко говоря не соотвествует действительности :)Дополню - конкретно он занимался именно SQL в фоксе во всех его ипостясях, в том числе и SqlExec(). Но Вы можете продолжать отжигать. :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156407
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Для ВАС уточняю еще раз.

Класс с SQLEXEC() от ДимыТ, вам он его не откажет.
Фраза из хелпа, А.Цингауз ее вам подтвердит.
Свою ссылку попробуйте прочитать без маневра за левое ухо.

ЗЫ. Я не сомневаюсь в компетентности неизвестного мне А.Цингауза.
Меня интересует компетентность моих оппонентов относительно класса, входящего уже восемь лет в поставку VFP9.
Плохо он их обучал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156466
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Класс с SQLEXEC() от ДимыТ, вам он его не откажет.
ппц, как у тебя как все плохо с русским языком :(
Класс в форуме. Я его выкладывал. Ищи если интересно.
Только там ничего сверхъестественного нет.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156782
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12Класс с SQLEXEC() от ДимыТ, вам он его не откажет.
ппц, как у тебя как все плохо с русским языком :(
Класс в форуме. Я его выкладывал. Ищи если интересно.
Только там ничего сверхъестественного нет.

Раз вы опять стушевались, значит у вас с ним проблемы.
Иначе развернулись вы бы тут с поучениями ... всех и вся.
Класс уж проще некуда, для одной функции.

Или вас надо понимать так, что другие классы для вас "сверхъестественные"?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Раз вы опять стушевались, значит у вас с ним проблемы.
Хреновый из тебя психолог
Просто предупредил что за время потраченное на поиски можно самому тоже самое написать несколько раз.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156837
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Для ВАС уточняю еще раз.

Класс с SQLEXEC() от ДимыТ, вам он его не откажет.
...

надо понимать, что эта фраза ответ на этот мой вопрос:

автор1. Вы привели "интерфейс" открытия vcx из среды разработки, но не указали какую именно библиотеку и по какому пути необходимо открыть, видимо ошиблись при написании поста - уточните пожалуйста, какую библиотеку классов необходимо открыть, что бы "поглазеть" на неё.

Про класс Dima T я уже давно всё понял он всё доходчиво рассказал, меня интересует класс-обёртка над SQLEXEC, который ВЫ написали и рекомендуете использовать , те ещё раз повторю вопрос:

автор..., где необходимо писать SQLEXEC() в процедуре или методе класса,... а так же, если в методе класса, то на основании какого базового класса лучше всего написать "обёртку" над SQLEXEC() - уточните пожалуйста.

или иными словами приведите код класса/процедуры написанного/адаптированного лично Вами, ... Вы можете "зпостить" здесь? (меня устроит хоть ссылка, хоть аттач, хоть код в посте)

sg12PaulWist

Фраза из хелпа, А.Цингауз ее вам подтвердит.
Свою ссылку попробуйте прочитать без маневра за левое ухо.
...

У меня есть только один комментарий и тот из Козьмы Пруткова: "Если на клетке льва написано осёл, не верь глазам своим" :)

те, то что написано в хелпе не всегда соотвествует действительности.

sg12PaulWist

ЗЫ. Я не сомневаюсь в компетентности неизвестного мне А.Цингауза.
Меня интересует компетентность моих оппонентов относительно класса, входящего уже восемь лет в поставку VFP9.
Плохо он их обучал.

Ну вообщем, в данном треде меня тоже именно этот вопрос интересует :), хотя другие вопросы не менее, а даже более интересны.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38156882
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist, или иными словами приведите код класса/процедуры написанного/адаптированного лично Вами, ... Вы можете "зпостить" здесь? (меня устроит хоть ссылка, хоть аттач, хоть код в посте)
Хм, одна проблема: ТС пишет "прозрачный" (с) код...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157092
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я немного не по теме, но тут сейчас больше всего народа, вопрос, может у кого есть утилитка для подмены на формах базовых классов на свой? Если нету, не страшно, свою недолго сделать, следущий код будет правильным для формы?
Код: sql
1.
2.
3.
USE ?
UPDATE frm SET class='my_textbox', classloc='klass\mainapp.vcx' ;
WHERE platform='WINDOWS' and EMPTY(classloc) and class='textbox' and baseclass='textbox'


frm - открытая форма scx в виде таблицы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157177
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300, в качестве вынужденной меры разумеется...
Код верный, если нет необходимости "почистить" memo Properties, убрав параметры, которые должны наследоваться от my_textbox
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157391
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Вы начали передергивать, ой как некрасиво.

Козьму Пруткова перечитайте, хоть в этом освежите свои познания.
Про класс-обертку с SQLEXEC() по секрету "рассказал" для вас ДимаТ, а я только на время прервал ваше обучение с его разрешения.
Свои "открытия" по хелпу изложьте открыто, а не на своих любимых пальцах.
Коды я вам приводил, но вы тогда утухли уже на этапе своего goApp.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157462
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Козьму Пруткова перечитайте, хоть в этом освежите свои познания.
...

Э-э-э, не понял, в моей интерпритации суть аффоризма изменилась/утерялась?

sg12PaulWist
Про класс-обертку с SQLEXEC() по секрету "рассказал" для вас ДимаТ, а я только на время прервал ваше обучение с его разрешения.


Правильно ли я понимаю, что именно ВАМИ написанного класса/процедуры как обёртку для SQLEXEC() вы привести на форуме не можете ? Меня устроит ответ - "Нет, могу", либо "Да, не могу" :)


sg12PaulWist
Свои "открытия" по хелпу изложьте открыто, а не на своих любимых пальцах.


Уж не знаю как прокомментировать, вроде ссылку на пост разработчика фокса дал, куда уж более открыто,... ладно, а что Вы понимаете по фразой:

sg12изложьте открыто

как это сделать?

sg12Коды я вам приводил, но вы тогда утухли уже на этапе своего goApp.

1. Ну что же, возможно я что-то пропустил, поэтому прошу, ещё раз приведите Ваш код, ... например для обёртки над SQLEXEC(), если такового нет, то обёртку над TableUpdate().

2. А собственно, чем не понравился код класса, который я привел, что в нём не правильного и как необходимо сделать на Ваш взгляд правильно,... допишите код класса и приведите здесь на форуме.


sg12Вы начали передергивать, ой как некрасиво.

Стоп-стоп, мы вроде осуждаем технические проблемы, а не личные качаства, ...поэтому если я перешел на личности, то прошу извинить.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157748
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаТ
Выполняю вашу просьбу.
Пока меня интересует ваша отмазка по поводу вашей строки:
WScript.Sleep(7000)

PaulWist
Вы откровенно пытаетесь втянуть меня в ваш родной ПустоТреп.
Но мне он не интересен - сюда заглядывали ПустоТрепщики и покруче.
Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157760
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ДимаТ
Выполняю вашу просьбу.
Пока меня интересует ваша отмазка по поводу вашей строки:
WScript.Sleep(7000)
Что именно тебе непонятно в этой строке?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157804
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12ДимаТ
Выполняю вашу просьбу.
Пока меня интересует ваша отмазка по поводу вашей строки:
WScript.Sleep(7000)
Что именно тебе непонятно в этой строке?

Где и как вы создаете этот объект.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157833
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12ДимаТ
Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор.

ОК, договорились,.. ВНИМАНИЕ ВОПРОС:

Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38157879
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().

Покажите место, где я обещал вам такой класс.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158028
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().

Покажите место, где я обещал вам такой класс.

Тут , процитирую ещё раз:

sg12PaulWist
...
Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор .

Мой выбор сделан,... ответ за Вами :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158045
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima Tпропущено...

Что именно тебе непонятно в этой строке?

Где и как вы создаете этот объект.
Во-первых при цитировании надо указывать источник. А то на заборе "йух" напишут, а ты меня спросишь что я под этим подразумеваю.
Во-вторых надо читать чего пишут, т.е. контекст сказанного. Там я четко сказал что Wscript.Shell и прочие обертки над CreateProcess() не использую т.к. есть своя.
Исходя из вышесказанного мой ответ: "нигде".

PS на вопрос PaulWist будешь отвечать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158095
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tбудет так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WshShell = CreateObject("WScript.Shell")
WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep(7000)
TextStream = WshExec.StdOut
Str = ""
do While Not TextStream.AtEndOfStream
    Str = Str + allTrim(TextStream.ReadLine()) + chr(13)
enddo
MessageBox(Str)



Это ваш код или вы его на заборе писали?
Вы отличаете Wscript.Shell от Winapi?
Поясните строку: WScript.Sleep(7000)

PaulWist
Что-то в вашем "туте" я не увидел "SQLEXEC", уточните или продублируйте цитатой.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158124
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12 авторПоясните строку: WScript.Sleep(7000)
Вначале поясни, что тут пояснять :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158133
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist
Что-то в вашем "туте" я не увидел "SQLEXEC", уточните или продублируйте цитатой.

ОК, вот цитата:

sg12PaulWist
...
Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор .

"разберём" Вашу цитату

авторПоэтому вам я буду отвечать только на один ваш вопрос

те, Вы готовы ответить только на один вопрос, ну хорошо я задал только один вопрос.

Далее:
авторна ваш выбор

я выбрал и задал вопрос про SQLEXEC() всё в соотвествии с Вашими же обещаниями.

Если Вы с этим не согласны, то прошу, перечислите те вопросы на которые Вы готовы ответить, тогда я из них уже выберу
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158140
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().

Это ваш вопрос, чтобы вы его не забыли.
Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(), уточним.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158142
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMsg12 авторПоясните строку: WScript.Sleep(7000)
Вначале поясни, что тут пояснять :)

Вопрос был такой:
Где и как ДимаТ создает этот объект WScript?
Код перед вашими глазами.
Интерес вызывают его отмазки.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158147
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().

Это ваш вопрос, чтобы вы его не забыли.
Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC(), уточним.

Ещё раз, Ваша цитата:

авторPaulWist
...
Поэтому вам я буду отвечать только на один ваш вопрос, на ваш выбор

Вы сами предложили мне задать вопрос на МОЙ выбор, я задал про SQLEXEC().

Более того, предполагая, что возможно вы не можете привести код по SQLEXEC, я так же предложил "опубликовать" список вопросов на которые вы сможете ответить и привести код, что бы я выбрал из них.

Или что в Вашем понимании означает фраза - "на ваш выбор", поясните пожалуйста.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158158
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Вы задаете сразу очень много вопросов.
Я же вам обещал отвечать только на один ваш вопрос, вопрос вы выбрали сами.
Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().
Или так и будете глазки строить?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158159
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, вы, внимательно читаете, что вам пишут? Или привычно выдергиваете из контекста словесные обороты, годные для "продолжения приятного разговору"? :) ИМХО, не столь важен вопрос, (код, приведенный Дима Т, вполне самодостаточный, "где" и "как" его применить - в общем случае, неважно). Занятнее предыстория этих навязчивых расспросов, не так ли? (см соседнюю тему)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158211
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMsg12, вы, внимательно читаете, что вам пишут? Или привычно выдергиваете из контекста словесные обороты, годные для "продолжения приятного разговору"? :) ИМХО, не столь важен вопрос, (код, приведенный Дима Т, вполне самодостаточный, "где" и "как" его применить - в общем случае, неважно). Занятнее предыстория этих навязчивых расспросов, не так ли? (см соседнюю тему)

Я то как раз внимательно читаю и прочитанное процеживаю.
Не с целью вас обидеть, упаси боже - но вы разглядываете вопросы с позиции равнодушного бездельника.
И если отбросить привычную для вас словесную шелуху, то суть становится иной.

Коды ведь выставляются для людей, чтобы ими пользовались те, кто в них нуждается.
И самодостаточен этот известный сайт, и Wscript.Shell, а роль ДимыТ здесь невелика.
Думаю, что немногие сходу сумеют объяснить этот на 90% им скопированный код и найти ему практическое применение.
И таких кодов на том сайте уйма, не надо выставлять это учебный код как некую невидаль.
Тем более, что ДимаТ только начал посещать этот сайт, иначе бы быстро убедился, что этот известный объект там торчит на каждом углу.
Но раз он этот объект скопировал не глядя, значит этот свой код не отлаживал - причем здесь самодостаточность.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158301
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Браво! Браво, sg12 ! (давлюсь кукурузой)
Вы уличили кого-то в том, что он "не тестировал код". Тему-то хоть читали? Там обязательно нужно было тестировать? Или просто указать направление? Между прочим, в той теме "переведенный" с VB на VFP код вполне себе работает (если исключить этот самый "камень преткновения" WScript.Sleep, который там по тексту не упёрся ни разу). И это чем-то кому-то помешало (кроме вас, трулляля вы наша)? И с чего бы Вас занесло в другие топики? - здесь перестали обращать внимание?
Так я вам больше скажу - минимум половина моего, например, кода, опубликованного прямо на форуме (а не в приложенных файлах) - имеет фички-ошибки. Как раз для таких как вы "любителей копипасты"... Ну, - наезжай на меня, родной, наезжай...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158368
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторяю: цитируй полностью. поправил немного.
sg12 Взято тут
Dima TUAPНепонятный синтаксис.
Почти как фоксе, немного отличается.
Например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep 7000
Set TextStream = WshExec.StdOut
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & Trim(TextStream.ReadLine()) & vbCrLf
Wend
MsgBox Str


будет так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WshShell = CreateObject("WScript.Shell")
WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep(7000)
TextStream = WshExec.StdOut
Str = ""
do While Not TextStream.AtEndOfStream
    Str = Str + allTrim(TextStream.ReadLine()) + chr(13)
enddo
MessageBox(Str)


Это ваш код или вы его на заборе писали?
Вы отличаете Wscript.Shell от Winapi?
Поясните строку: WScript.Sleep(7000)
Не ко мне вопрос. Я показал как пример на VB отсюда на фоксе переписать. Если тебя перевод кода с VB интересует, то спрашивай. Помогу чем смогу.

PS А вообще твой подход к цитированию надо развивать. В следующий раз спроси зачем я виндовс написал.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158439
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMБраво! Браво, sg12 ! (давлюсь кукурузой)
Вы уличили кого-то в том, что он "не тестировал код". Тему-то хоть читали? Там обязательно нужно было тестировать? Или просто указать направление? Между прочим, в той теме "переведенный" с VB на VFP код вполне себе работает (если исключить этот самый "камень преткновения" WScript.Sleep, который там по тексту не упёрся ни разу). И это чем-то кому-то помешало (кроме вас, трулляля вы наша)? И с чего бы Вас занесло в другие топики? - здесь перестали обращать внимание?
Так я вам больше скажу - минимум половина моего, например, кода, опубликованного прямо на форуме (а не в приложенных файлах) - имеет фички-ошибки. Как раз для таких как вы "любителей копипасты"... Ну, - наезжай на меня, родной, наезжай...

А что наезжать, по мне давитесь кукурузой хоть пачками.

Но речь идет ведь как раз об этом, об этом известном "камне преткновения".
Раз ткнули человеку в его ляпу - ну, умылся: "извиняюсь, недогляд, поторопился, исправлю, звездочку щас пробью и т.п." - и делов-то, скромность украшает.
Я ведь только комментриую отмазки и наезды на меня, его и ассистентов.
Посмотрите, он снова с гонором: "Если тебя перевод кода с VB интересует, то спрашивай. Помогу чем смогу."
Хотя он только один код скопировал из уймы того что там есть на этом насыщенном сайте, и то с огрехами, и объяснить его сам не может.
Тут уж его отмазки становятся интересней, чем его ответы - что еще придумает.

ДимаТ. Вы сначала попробуйте ответить хотя бы на те вопросы, что заданы.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158485
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Вы задаете сразу очень много вопросов.
...

Любопытство не порок - это не вопрос, а утверждение :)

sg12PaulWist

Я же вам обещал отвечать только на один ваш вопрос, вопрос вы выбрали сами.
...

Да, готов "услышать" ответ, про класс обёртку над SQLEXEC() - это опять же не вопрос, а утвеждение.

sg12PaulWist

Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().


Вы обещали ответить на ВЫБРАННЫЙ МНОЙ вопрос , я его выбрал и задал (повторюсь, про обёртку над SQLEXEC() ), ... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код, хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности... жду ответа с кодом :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158533
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().
Или это ваши фантазии?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158566
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().


Вы видимо невнимательно прочли мой предыдущий пост, в нём написано:

sg12 ... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код , хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности ...

И в соотвествии с Вашими же обещаниями ответить на вопрос на мой выбор я задал вам вопрос про SQLEXEC(), ... хорошо, упростим вопрос - КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме? ... меня устроит ответ Да, приведу , либо просто Нет
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158591
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Приведите код класса написанного/адаптированного Вами, как обёртка над SQLEXEC().

Это ваш вопрос, а то вы его подзабыли.
Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158610
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12...Укажите конкретно или приведите цитату, где я обещал написать вам класс-обертку для SQLEXEC().

В третий раз повторяю:

... если вы хотите ссылку/цитату, то к сожалению Вы не написали список тех вопросов на которые можете ответить и привести код, хотя я вам предлагал это сделать, поэтому "привести" вашу цитату нет возможности ...

попробую "перевести": НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ

на сей раз я отвтеил на ваш вопрос про ссылку или цитату? Меня устроит ответ Да или Нет
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158620
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, только не перекормите его! :) И так уже еле пишет. Сбежит еще куда-нибудь...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158652
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistменя устроит ответ Да, приведу , либо просто Нет Ага, а на второй вопрос - "ну когда же, когда Вы его приведёте?" - афтар отвечать откажется, и приедъявить ему будет уже нечего
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158654
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirприедъявить*предъявить
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158877
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ


Если у вас ничего нет (да и не было с самого начала), то ради чего вы на пустом месте весь этот свой онанизм устроили?
Или вы как ... когда коту делать нечего он ...
Непохоже что-то, чтобы вас в этом вашем "SQLEXEC" что-то вообще всерьез интересовало, и уж тем более в ООП.

Еще раз вам повторяю - процедурное программирование меня давно не интересует, т.к. оно себя изжило и это тупиковый путь.
И никакой особенный чудо-класс погоды не сделает.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38158964
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist НЕТ ВОЗМОЖНОСТИ ПРИВЕСТИ ССЫЛКУ ИЛИ ЦИТАТУ


Если у вас ничего нет (да и не было с самого начала), то ради чего вы на пустом месте весь этот свой онанизм устроили?
Или вы как ... когда коту делать нечего он ...
Непохоже что-то, чтобы вас в этом вашем "SQLEXEC" что-то вообще всерьез интересовало, и уж тем более в ООП.

Еще раз вам повторяю - процедурное программирование меня давно не интересует, т.к. оно себя изжило и это тупиковый путь.
И никакой особенный чудо-класс погоды не сделает.

Стоп-стоп.

На ваш вопрос я ответил.

Теперь Вам необходимо ответить на мой вопрос, во всяком случае хотя бы из вежливости, (так сказать даш-на даш, тем более Вы прилюдно обещали ответить на вопрос на моё усмотрение), итак, внимание вопрос:

КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме? ... меня устроит ответ Да, приведу, либо просто Нет
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159016
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC()

Мыло-мочало ...
Действительно, вам делать нечего, поэтому ...

Ладно, раз уж вас так приспичило ... на этот класс.
Что вас в существующем классе не устраивает?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159036
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC()

Мыло-мочало ...
Действительно, вам делать нечего, поэтому ...

Ладно, раз уж вас так приспичило ... на этот класс.
Что вас в существующем классе не устраивает?

Что-то я не обнаружил в вашем посте ответа, а именно "Да, приведу", либо просто "Нет " на мой предыдущий вопрос.

Поэтому, давайте по порядку, сначала закончим с предыдущим вопросом, повторю:

КОД КЛАССА ОБЁРТКИ НАД SQLEXEC() Вы "приведёте" на форуме?

Варианты ответа я дал тремя строчками выше, хотелось бы что бы вы именно так односложно ответили.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159060
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Вы уж совсем ... того ... мне мои ответы начали диктовать.
Вы на форуме находитесь, а не в школе, диктант диктуете.

Вам нужен:
PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC()
Что вас не устраивает в существующем классе?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159126
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Вы уж совсем ... того ... мне мои ответы начали диктовать.
Вы на форуме находитесь, а не в школе, диктант диктуете.
...

Ну хорошо, оставим это.

sg12PaulWist

Вам нужен:
PaulWist КОД КЛАССА ОБЁРТКИ НАД SQLEXEC()
Что вас не устраивает в существующем классе?

Базовый класс,... а кстати, на основе какого базового класса построен класс?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159202
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Какой у вас базовый класс? Лучше всего подходит класс Custom.
Что еще вас смущает в существующем классе?

ЗЫ. Это случаем не тот класс-самоубица от ДимыТ, который сам автор не смог запустить, потому что тот прилюдно просил его "убить"?
И который сам автор загнал куда-то подальше, чтобы не брать себе на душу такой грех.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159280
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Какой у вас базовый класс? Лучше всего подходит класс Custom.

...

ОК, вот уже предметный разговор.

Хорошо, пусть будет Custom.

У меня тоже Custom.

sg12PaulWist

Что еще вас смущает в существующем классе?

...

Как инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр?


sg12PaulWist

ЗЫ. Это случаем не тот класс-самоубица от ДимыТ, который сам автор не смог запустить, потому что тот прилюдно просил его "убить"?
И который сам автор загнал куда-то подальше, чтобы не брать себе на душу такой грех.

Давайте условимся, у нас технический разговор, и не будем в нашем треде отвлекаться на других участников.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159372
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistКак инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр?


Это уже серьезный вопрос.
Я бы посоветовал забыть, что это класс только для SQLEXEC() и начать на его основе создавать глобальный класс вообще для работы со всем SQL-сервером.
Так как это тема достаточно посещаема, и надеюсь не только троллями, то могу остановиться на этом объемном вопросе подробнее.
Но сразу замечу, что некоторые вопросы у меня еще "сырые" - в свое время их забросил за отсутствием необходимости.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159428
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWistКак инициализируется этот класс, те в какой момент происходит его создание (Creat/NewObject), поясню созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр?


Это уже серьезный вопрос.
Я бы посоветовал забыть, что это класс только для SQLEXEC() и начать на его основе создавать глобальный класс вообще для работы со всем SQL-сервером.
...

Отлично, задам вопрос по другому:

Как инициализируется этот ГЛОБАЛЬНЫЙ класс, те в какой момент происходит его создание (Creat/NewObject), созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр?


sg12Так как это тема достаточно посещаема, и надеюсь не только троллями, то могу остановиться на этом объемном вопросе подробнее.


Мы вроде договорились, обсуждать технические проблемы, а не личные качества участников.

sg12Но сразу замечу, что некоторые вопросы у меня еще "сырые" - в свое время их забросил за отсутствием необходимости.

Не ошибается тот кто ничего не делает, ... значит класс всё таки есть, можете его запостить на форуме?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159602
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistКак инициализируется этот ГЛОБАЛЬНЫЙ класс, те в какой момент происходит его создание (Creat/NewObject), созданный на основе этого класса обьект является общим для приложения или же для каждого обьекта приложения создаётся свой экземпляр?


Этот глобальный класс, назовем его _server должен находиться в том же .vcx, где у вас нахолится _application.
Если заполнен его Init, то его нужно освободить во временную процедуру _server._init, к этому можно будет вернуться позже.
Этот объект лучше добавлять AddObject() к goApp, но сейчас это у вас вызовет затруднения, знаю по себе.
Поэтому сейчас лучше объявлять его как глобальную переменную goServer (условимся названия принимать мои, чтобы избежать ненужных разночтений).
Он один и объявляется примерно после того, когда у вас закончились SET-настройки и установлены пути.
PUBLIC goServer
goServer = CREATEOBJECT('_server') (я использую CREATEOBJECT(), может и есть какая разница от NEWOBJECT(), мне неважно)
Теперь его методы и свойства будут доступны как глобальные для всего приложения, и в него можно начать закачивать все необходимые процедуры для работы с SQL-сервером.
Однако это не исключает, что в случае какой необходимости вы на местах можете писать свои процедуры.
При закрытии приложения этот объект обязательно нужно закрывать, иначе он будет торчать в памяти.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159747
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 обьект всё рано останется в памяти?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159805
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

_server вместе c _application необязательно в одной библиотеке (назовем _appobj.vcx/_appobj.vct), но намного удобнее, это будет часть фреймворка.
Методы _server не используются (init,destroy,error ..., да и вообще это слово "метод" с _server не будем употреблять, только слово "процедуры"), но у вас ведь там могут быть коды.
Чтобы они не пропали для следующей переделки, мы их сохраняем в специально созданных нами временных процедурах в этом же классе с приставкой "_".
Куда-то нам их сейчас надо деть, после переделки кодов эти временные процедуры нам будут не нужны.
"Закачивать" - неудачный термин. Вы будете создавать в этом классе новые нужные вам процедуры и постепенно переносить процедуры из разных углов и форм в этот класс.
Разумеется, продуманно и с отладкой - теперь этот класс у вас "резиновый" и модифицируется.
Но это надо смотреть конкретно, когда приступите к этому.
Например, вы уже можете начать переносить процедуры подключения к серверу.
Закрывать объекты обязательно, повторно они не используются. Вообще, с объектами правило жесткое - что создано, открыто - должно быть продуманно и вовремя закрыто.
Иначе заставит это сделать обработчик ошибок, если вообще закроете программу. Да и по новой они не запустятся, запросят "убить", т.е. очистить из памяти.
Команды типа QUIT, CLEAR ALL и т.п. в основном надо привыкать рассматривать как аварийные - значит где-то в программе недоделки, хотя они все уничтожают.
Если при процедурном программированни такой метод сходит, то с объектами быстро выявляется через ошибки.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38159846
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

...Методы _server не используются (init,destroy,error ..., да и вообще это слово "метод" с _server не будем употреблять, только слово "процедуры"), но у вас ведь там могут быть коды.
Чтобы они не пропали для следующей переделки, мы их сохраняем в специально созданных нами временных процедурах в этом же классе с приставкой "_".
Куда-то нам их сейчас надо деть, после переделки кодов эти временные процедуры нам будут не нужны.
...

А, вот оно что, а я думал что "init,destroy,error" - это события, а не методы, и считал, что код в родительском классе не обязательно сохранять как отдельный метод, а достаточно пергрузить код связанный событиями и методами из дочернего класса и при необходимости код родителя вызвать из дочернего класса ... ну да ладно, как условились будем их называть процедурами.

sg12PaulWist
"Закачивать" - неудачный термин. Вы будете создавать в этом классе новые нужные вам процедуры и постепенно переносить процедуры из разных углов и форм в этот класс.
...

Ок, не возражаю.

sg12PaulWist
Например, вы уже можете начать переносить процедуры подключения к серверу.


Хорошо, а покажите код который Вы используете для подключения к серверу?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160190
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160267
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ну мне вот всё-таки стало интересно.
sg12, о чём говорил Владимир, и чего я не пойму - ну зачем процедура/метод с кейсом, если внутри кейса разные по смыслу действия производятся? Чем DoSQL('Otkr') и DoSQL('Zakr') лучше OpenConnection()/ExecuteSQL() и CloseConnection()?
Смысл таких изменений какой? Вы уже 15-ю страницу только и делаете, что обвиняете других в троллизме, глупости и пр., но сами так и не удосужились внятно разъяснить преимущества своего подхода, или хотя бы недостатки других подходов.
ЗЫ. На всякий - да, я прочитал всю ветку. Объяснений не было. Правда, посты с закидыванием собеседников какашками я сразу же пропускал, не читая до конца.
ЗЗЫ. А что делает DoSQLEx?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160269
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 становится отличным от нуля.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160305
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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: трюк с плохим и хорошим полицейскими таки сработал :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160477
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 начал просматривать тему - это что-то значит.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160526
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Разница в том, что в своем варианте вы на каждый код геройски бросаетесь каждый раз в каждом приложении как на амбразуру.
Нет такой разницы - см. ниже.
>Просмотрите темы, в основном выясняется - не там не та буква проставлена и поиск ее приравнивается к подвигу.
Если "не та буква" проставлена внутри кейса, а не внутри процедуры, это как-то облегчит нахождение места ошибки??
>Если у вас аллергия на DO CASE, то вы можете разделить процедуры и возиться с вызовами вместо Otkr/Zakr, с постоянными поисками нужных названий и ошибок в синтаксисе.
У меня аллергия на пихание в ду кейс всего подряд.
И какая всё-таки разница, что искать - название процедуры или название параметра?
Ну и ошибки синтаксиса опять же могут быть что в отдельной процедуре, что в одном из "кейс"ов...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
*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

Код: sql
1.
2.
3.
4.
5.
6.
Структура DoSQLEx() типовая:
DO CASE
CASE tcCase == 'Соединение'
CASE tcCase == 'Проверка'
* и т.д.
ENDCASE

Вообще не понял. То есть имеется метод goApp.oInfo.ServerList('SQL'), который может возвращать некую строку. Потом в DoSQL эта строка разбивается на "слова", которые скармливаются DoSQLEx-у. Вопрос - вот, например, запустили DoSQL с параметром "открыть", получили строку со словом "соединение", скормили эту строку DoSQLEx-у. Что там в кейсе соответствующем будет? Соединение с сервером? А параметры соединения откуда возьмутся? Из другого свойства/метода объекта goApp? Или всё-таки формат строки lcStr несколько иной?
Как по мне, так проще - чисто для читабельности даже - сделать отдельный метод для соединения, туда и параметры соединения можно сразу прописать (в смысле, как параметры метода), а не подтягивать не пойми что где-то посреди кода, который кому-то, возможно, ещё и в наследство достанется.

>Если вы в постах ищете только какашки, то это ваша проблема.
У меня проблема несколько иного характера - я их не ищу, но, к сожалению, они там есть. И при просмотре темы "находятся" сами собой.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160533
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirИли всё-таки формат строки lcStr несколько иной?Хотя нет, именно такой, количество параметров DoSQLEx не оставляет в этом сомнений.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160564
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял зачем этот огород с кэйсами. Чтоб в строчку последовательность действий написать и циклом вызвать по очереди
Код: sql
1.
lcStr = 'Соединение,Проверка,Параметры,Инициализация,БазаДанных,ИмяСервера,Логин,Регистрация'


Только я так и не понял что такого криминального в последовательности вызовов методов
Код: sql
1.
2.
3.
This.Соединение()
This.Проверка()
...


И как в этой однострочной схеме параметры передавать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160570
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИ как в этой однострочной схеме параметры передавать?Подозреваю, что так:
tanglirА параметры соединения откуда возьмутся? Из другого свойства/метода объекта goApp?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160613
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чего делать когда код мегаметода DoSQLEx() дорастает до 64к и перестанет работать?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160628
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Накидайте. Только напомню, что вы один раз накидывали, только не процедуры, а "сусликов".
И не переоценивайте себя - здесь не только "полицейские", на компетентно сформулированные вопросы я отвечаю серьезно.
И если уж сам tanglir начал просматривать тему - это что-то значит.Самолюбование продолжается :) Аргументов опять 0.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160658
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
PUBLIC goSet, goServer, o

goServer = CREATEOBJECT('_server')

goSet = CREATEOBJECT('Empty')
ADDPROPERTY(goSet, 'hSQL', 0)

o = CREATEOBJECT('gridcommand')
o.show(1)

DEFINE CLASS _Server as Custom
PROCEDURE DoSQLEx
LPARAMETERS cStr
LOCAL server, uid, pwd
***************************
** Заполнить реквизиты !!!!
***************************
server = 'MyServer'
uid = 'MyUser'
pwd = 'MyPwd'
DO case
	CASE cStr = 'Connect'
		goSet.hSQL=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=" + server + ";UID=" + uid + ";PWD=" + pwd)
		IF goSet.hSQL < 0
		ERROR 'Ошибка подсоединения'
		ENDIF  
	CASE cStr = 'SQLEXEC'
		SQLEXEC(goSet.hSQL, 'select @@version', 'SqlResult')
ENDCASE 
ENDDEFINE

DEFINE 

DEFINE CLASS gridcommand AS form
	Caption = "Form1"
	Name = "Form1"
	datasession = 2


	ADD OBJECT grid1 AS grid WITH ;
		Height = 169, ;
		Left = 12, ;
		Top = 12, ;
		Width = 349, ;
		Name = "Grid1"


	ADD OBJECT command1 AS commandbutton WITH ;
		Top = 192, ;
		Left = 12, ;
		Height = 37, ;
		Width = 349, ;
		Caption = "Жми", ;
		Name = "Command1"

PROCEDURE command1.click
	goServer.DoSQLEx('Connect')
	goServer.DoSQLEx('SQLEXEC')
	IF USED('SqlResult')
		WITH thisform.grid1
			.recordsource = 'SqlResult'
		ENDWITH 
	ELSE 
		MESSAGEBOX('НЕТУ алиаса SqlResult', 0, 'ПОПАДОС :)')
	ENDIF 	
ENDPROC 

ENDDEFINE



И после этого прочтите ещё раз ссылку от Алексея Цингауза.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160794
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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') вынесите из формы в свою процедуру запуска приложения до открытия форм - сначала надо подключиться к серверу.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38160844
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
PUBLIC goSet, goServer, o

goServer = CREATEOBJECT('_server')

goSet = CREATEOBJECT('Empty')
ADDPROPERTY(goSet, 'hSQL', 0)

***************************
** Заполнить реквизиты !!!!
***************************
server = 'MyServer'
uid = 'MyUser'
pwd = 'MyPwd'

goSet.hSQL=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=" + server + ";UID=" + uid + ";PWD=" + pwd)
IF goSet.hSQL < 0
	ERROR 'Ошибка подсоединения'
	RETURN 
ENDIF 

o = CREATEOBJECT('gridcommand')
o.show(1)

function _DoSQLExec()
	SQLEXEC(goSet.hSQL, 'select @@version', 'SqlResult')
ENDFUNC 

DEFINE CLASS _Server as Custom
PROCEDURE DoSQLEx
LPARAMETERS cStr
LOCAL server, uid, pwd
DO case
	CASE cStr = 'SQLEXEC'
		_DoSQLExec()
ENDCASE 
ENDDEFINE

DEFINE 

DEFINE CLASS gridcommand AS form
	Caption = "Form1"
	Name = "Form1"
	datasession = 2


	ADD OBJECT grid1 AS grid WITH ;
		Height = 169, ;
		Left = 12, ;
		Top = 12, ;
		Width = 349, ;
		Name = "Grid1"


	ADD OBJECT command1 AS commandbutton WITH ;
		Top = 192, ;
		Left = 12, ;
		Height = 37, ;
		Width = 349, ;
		Caption = "Жми", ;
		Name = "Command1"

PROCEDURE command1.click
	goServer.DoSQLEx('SQLEXEC')
	IF USED('SqlResult')
		WITH thisform.grid1
			.recordsource = 'SqlResult'
		ENDWITH 
	ELSE 
		MESSAGEBOX('НЕТУ алиаса SqlResult', 0, 'ПОПАДОС :)')
	ENDIF 	
ENDPROC 

ENDDEFINE
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161048
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Что-то вы меня совсем запутали с этим 'НЕТУ алиаса'.
Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки.
Алиас появляется?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161100
RAZ_DVA_TRI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161103
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки.
Это ж отстало-ущербное процедурное программирование

Как же свелое будущее:
sg12избавим наши формы от необходимости чуть не в каждой писать индивидуально эти же процедуры, от которых рябит в глазах.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161165
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Что-то вы меня совсем запутали с этим 'НЕТУ алиаса'.
Добавьте в вашу форму эту процедуру _DoSQLExec() и вызовите ее из этой же кнопки.
Алиас появляется?

Ну, так дело не пойдёт, мы же вроде договорились, я написал тестовый пример, а вы модифицируете его и показываете результат,... те добавьте в форму процедуру и запостите код на форуме.

PS но не забудьте про парадигму ООП, что бы в итоге не вышло процедурного программирования :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161170
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T[Это ж отстало-ущербное процедурное программирование

Не спешите.
Надо сначала найти этот алиас.

ООП не означает наличие аллергии на процедурное программирование.
В фоксе ведь предусмотрено SET PROCEDURE TO, которым мы можем подключить (и подключаем) глобальный процедурный модуль mainutil.prg
А там мы можем на законных основаниях тоже глобально разместить эту процедуру DoSQLEXec().
И т.п., если возникнет в этом необходимость.

И если в форме этот алиас найдется, то эту процедуру мы можем глобально разместить в родительском классе без ущерба для здоровья.
Но пока разберемся с тем, что есть, не все еще потеряно.

RAZ_DVA_TRI
Вы не могли бы разместить здесь полностью этот свой код с картинки.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161174
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Давайте сначала найдем этот алиас.
Он появился?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161190
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWist

Давайте сначала найдем этот алиас.
Он появился?

Вы тестовый код-то запускали?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161261
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistsg12PaulWist

Давайте сначала найдем этот алиас.
Он появился?

Вы тестовый код-то запускали?

Нет. Я вам вполне доверяю.
Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161282
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок.
Я нашел глобальный косяк. Ошибку проектирования ООП приложения. Вот он
Код: sql
1.
goSet.hSQL


Это же хэндл соединения. единственная связь с БД !!! Его надо максимально изолировать от остального кода приложения, а то вдруг какой криворучка напишет
Код: sql
1.
goSet.hSQL = .F.


и все. капец.

Инкапсуляцию в ООП ведь придумали не зря. Надо hSQL объявить PRIVATE и никуда не давать даже через методы goSet, а то криворучка напишет
Код: sql
1.
SqlDisconnect(goSet.Get_hSQL())


и опять капец.

Чего делать будем?
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161310
alexzima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12, Ты гений
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161326
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЧего делать будем?

Если честно, то я и сам сомневаюсь, насколько целесообразно загонять хендл сервера в goSet - уж больно он перегружен параметрами и процедурами, которые с ними работают.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161352
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima TЧего делать будем?

Если честно, то я и сам сомневаюсь, насколько целесообразно загонять хендл сервера в goSet - уж больно он перегружен параметрами и процедурами, которые с ними работают.
и какие будут предложения?

Применение ООП это не только повторное использование кода. Второй плюс инкапсуляции снижение ошибок при командной разработке, тут опытный разработчик пишет ядро, инкапсулирует все критически важное в свои классы, защищая ядро от ошибок неопытного, которому доверено незначительная часть работы. А тут мы всем и вся хендл сервера раздаем. Может явно его закрывать никто не будет, но запросто могут, например, запрос сделать с докачкой (.FetchAsNeeded = .T.) и тут все работать перестанет пока результат не докачался.
Поэтому следуя правилам ООП надо прятать хэндл глубоко и доверять его использование только проверенному на 10 раз коду.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161659
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Я вот пока так и не понимаю. Точнее, "смысл" я понимаю, но не вижу существенных отличий в лучшую сторону от "не-дукейсового" подхода. Таких, чтобы всё бросать и срочно переписывать весь код.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38161749
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12PaulWistпропущено...


Вы тестовый код-то запускали?

Нет. Я вам вполне доверяю.
Наоборот, у меня интерес, чтобы вы (и не только вы) нашли как можно больше ошибок и недоработок.

1. У меня вопрос - а Вы умеете/знаете как запустить приведённый тестовый код? и если знаете, то что вам помешало это сделать?

2. Дык, я уже чуть ли не неделю пытаюсь получить код класса для SQLEXEC() написанный вами, а кода всё нет и нет,... обьясните, как можно найти ошибку, в том чего нет.

Судя по всему, такого кода вы никогда не писали, а честно признаться "религия" не позволяет хотя я могу ошибаться.

3. Главная ошибка в самом принципе построения, предложенный подход используется в процедурном программировании, в ООП совсем другие "парадигмы", причём вариантов реализации достаточно много, собственно об этом уже многие говорили, в том числе и ВладимирМ :)

То что Вы предлагаете - это бредсивкэйбл, через это проходят почти все новички,... ничего личного, просто констатация факта.

4. Если есть конкретные вопросы, то задавайте, лучше всего в таком виде: "я делаю так-то и так-то, получается то-то, а хочу получить то-то"

PS Ещё раз повторю, ничего личного. Удачи.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38162582
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

Переход на избитые темы типа "СамТыКто" и "КтоТытакой" не является аргументом в таких вопросах.

Такой класс имеется в поставке VFP9, находится в FFC-dataquery.vcx-execsp, вполне доступен. Он тоже глобальный и перетаскивается мышкой на формы.

Я немного просмотрел материалы по этому вопросу. Проблема вами изложена достаточно четко, но она неоднозначна.
Во избежание казусов возможным решением является передача в процедуру goServer.DoSQLExec() как параметров DS или THISFORM, с последуюющей обработкой сессии. Т.е. примерно так, как на картинке несколькими постами выше.

Еше один глобальный класс на основе Custom.
Создайте его под именем _mediator в новой библиотеке _custobj.vcx. Добавьте в него эту процедуру DoSQLExec(). Затем откройте свою форму и мышкой добавьте туда этот объект под именем oMediator.
Тогда строка вызова из кнопки примет вид THISFORM.oMediator.DoSQLExec().

Как видите, решений достаточно и нет необходимости в вашем классе.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38164009
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Есть предложение закрыть тему, так как посты постоянно переходят на обсуждение личных качеств участников дискуссии...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38164155
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Ch

Вернемся к теме.
Вопрос: Что означает "правильно спроектированное приложение"?
Мое мнение - этот термин в Фоксе игнорируется и под этим понятием почти каждый понимает свое творчество.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38164162
RAZ_DVA_TRI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12RAZ_DVA_TRI
Вы не могли бы разместить здесь полностью этот свой код с картинки.

тама
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38164203
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38165486
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Вопрос: Что означает "правильно спроектированное приложение"?
Мое мнение - этот термин в Фоксе игнорируется и под этим понятием почти каждый понимает свое творчество.
И как много "творчества" было проанализировано для столь серьезного заявления? Какая была репрезентативность выборки?

и неплохо было бы услышать с чем сравнивалось, т.е. что подразумевается под словами "Мое мнение".
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38166907
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38166961
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Почему же вы так высокомерно ставите слово "творчество" в кавычки, скромностью вас не попрекнешь.

Я просматриваю и изучаю почти все, что более-менее связано с этой тематикой.
Что и вам уже советовал, чтобы не выдумывали новые теории.
Могу сказать, что отдельных решений очень много хороших, и по отдельности большинство вопросов было решено еще лет пять назад.
Но все они канули в пустоту из-за отсутствии в фОксе концепции программирования - некуда внедрять, у каждого свой паровоз.

Сравнивать - хотя бы здесь, с мнением поочередных ГУРУ.
Аргументов мизер, в основном абстрактный треп с передергиванием понятий.
Не говоря уже об основном козыре - примитивных комментариях моей личности.
Даже на примере вашего учебного SQLEXEC-чудо класса это видно.

Если вы опять рветесь "мериться", могу разнообразить.

К примеру, тот сайт, с которого вы так гордо сумели скопировать один пример, у меня почти весь давно уже находится в черновом классе.
Сумеете перевести хотя бы одну статью - покажу как это делается.
Потрясающий пример скромности :) Как обычно: в чужом глазу и т.д. И обязательные ГУРУ в тему и не в тему :)Или вот вам начало кода универсального объекта oWinapi, работающего с winapi-функциями непосредственно в формате из MSDN.
DO CASE
CASE tcCase == 'Fun'
...
DECLARE &lcDeclare
...
luResult = &lcStr
...
Еще одно потрясение :) Потрясающе по новизне, оригинальности, форматированию :)
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38167012
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И тут же следует подтверждение ПустоТрепа, даже попытка разнообразить не помогла.
Очень уж кому-то хочется, чтобы я его к гуру причислил.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38167120
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12

АнекдотНовичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!

Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.

Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!

Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?

Новичок: Чем мне нравиться этот форум - из двух ответов ниодного конкретного. Одни вопросы неподелу!

Старожил: Не нравится - тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят,
то лучше бы тебе сначала школу закончить.

Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт!
У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!! Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее!
Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!!

Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:

Новичок: Спасибо, братан! То что нужно!!!
Вы выступаете в роли автора проекта деревянного небоскреба. Проблема в том, что Вы сейчас просто не в состоянии понять то, что Вам пытаются объяснить. Но не потому, что это что-то сложное или заумное. А по той причине, что Вы уже придумали для себя некий примерный ответ и все то, что не попадает в Ваш "шаблон ответа" просто отбрасывается.

Вы не можете сейчас адекватно воспринять ответ, что "небоскребы из дерева не строят". Вы уже настроились на то, что Вам скажут породу дерева или способ его обработки. Любой другой вариант ответа воспринимается Вами как подколки, наезды, пустотреп и т.п. "Ведь у дедушки ничего не ломается!" Ну, что же, "берите дуб". Через год..полтора посмотрим, что у Вас получится...
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38167157
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

И как вы мне прикажете воспринимать теперь эти ваши психологические опыты?
Детсад какой-то - дубы, сосны, колобка только не хватает.
...
Рейтинг: 0 / 0
Общие принципы построения приложения в FoxPro
    #38167302
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: По многочисленным просьбам участников форума я закрываю данный топик как потерявший конструктивность.
...
Рейтинг: 0 / 0
424 сообщений из 424, показаны все 17 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Общие принципы построения приложения в FoxPro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]