|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWist Что-то ваш ГУРУ притих, а то все молнии метал - и про HELP, и про DOS, чуть не весь алфавит перебрал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 15:53 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Мы просто все запаслись попкорном - и... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 15:58 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Да-да, продолжайте. Может, в конце более понятно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 16:51 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
IgorNGsg12, Да-да, продолжайте. Может, в конце более понятно будет. Вопрос этот нелегок, так как давят годами накопленные стереотипы. Попробуем зайти с другого бока. ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 17:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12ДимаТ, в соседней теме вы вбросили что-то про FSO. Покажите, как вы его вписываете в свои программы. Поищи по форуму. Показывал где-то. Правда боюсь тебя мой код сильно расстроит. Я FSO в функцию обернул, на вход маска с путем, на выходе курсор со списком файлов подпадающих под маску. Но как я понял (по твоим репликам выше) тебе не надо вдумываться и вникать суть написанного, достаточно просто выдернуть строку из моего поста и развернуть его критику на полстраницы. Поэтому ищи по форуму, дергай сюда и критикуй. Я не против. А я как все ... с попкорном посижу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 20:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Попробуем разобраться сами. Речь ведь не идет о какой-то отдельно взятой крутой функции, словно о какой-то невидали. В FSO, кроме возможности непосредственной работы с самим объектом FSO, есть еще коллекции Drives,Folders,Files и объекты Drive,Folder,File,TextStream со своими свойствами и методами. В основном функции работы с ними сами по себе несложные, хелп по ним доступен. Чтобы не заморачиваться на названиях, для краткости пронумеруем их условно так: Процедура 1,2,3... и т.д. У большинства наберется немало программ, где функции FSO могут применены, порой они могут оказаться весьма полезны. Работа с ними происходит примерно так: К примеру, в программе 1 используются Процедуры 1,7,22, В программе 2 - Процедуры 3 и 15, В 3 - Процедуры 1,2,11,17 И т.д. Т.е. каждый программист в каждый программе каждый раз решает заново все вопросы работы с этими функциями. Чем иной раз круто гордится. Или ищет примеры решений. И не всегда всегда вопрос решается удачно. Но ведь есть и другой путь. В глобальном объекте собрать все обертки функций FSO в одну процедуру через то же ненавистное DO CASE. Процедура будет большая, но вполне терпимая. Функции отлаживаются один раз. А в приложениях пишется только их вызов с соответствующими параметрами. И тогда FSO станет "карманным" объектом VFP. А ведь есть WSH, WMI, Winapi ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 20:20 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Кажется кое-кто получил задание - написать курсовик на тему "хоть_какая_нибудь_обертка_хоть_над_чем_нибудь"! И теперь хитростью пытается заставить уважаемых людей сделать за него эту задачу!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 21:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Redrik Давненько вас не было ... Насколько помнится, вы клятвенно клялись не троллить больше со мной. Понимаю вас, в этот раз решили узнать, что такое "обертка", а то помнится, при слове "классы" у вас округлились от удивления глаза. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2013, 21:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Привет, sg12! Клятву я не нарушил - я лично к Вам не обращался, а ляпнуть чего-нибудь - святое право каждого! Просто я делаю жалкие попытки привлечь остальных к своей, данной Вам, клятве! P.S. Глаза округлятся у кого-хошь! Это ж надо - молиться на "классы", а агитировать за процедуру с миллионом CASE'ов!!! Хотя, конечно, новичку простительно - уж больно хочется получить нечто абсолютно универсальное: скачал и думать не надо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 09:11 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Redrik Я уже думал, что в прошлый раз вы все свои восклицательные знаки израсходовали. RS. Сколько новостей порой узнаешь на форуме. Очередной хит - "CASE несовместим с классами!". Это надо же - увидав новое незнакомое слово, человек полночи ДУМАЛ, чтобы ЛЯПНУТЬ такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 10:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 Если Вы пытаетесь доказать, что создание неких "оберток" всегда и для всего - есть светлое будущее программирования, то так и надо было называть тему Однако пока Вы так и не привели ни одного сколько-нибудь убедительного примера правильности Вашего вывода. Почему-то "обертки" оказываются более ограниченными в применении, чем прямое использование команд и функций. Каждый, абсолютно каждый, без исключения (!), новичек в программировании начинает с того, что пытается создать нечто универсальное. На все случаи жизни. Пока ни у кого не получилось. Все время что-то "выпирает" и "не влезает" в эту самую "универсальную штуку". Как правило, после длительных попыток приходят к разумному компромису. Да, "универсальное", но при выполнении ряда дополнительных условий и ограничений. PS: Ваша идея насчет глобальной процедуры с DO CASE для выбора принципиально разных операций - мягко говоря, не разумная. Даже в рамках процедурного программирования, не говоря про ООП. Это просто лишний посредник. DO CASE используется при выборе однотипных операций. Например, разных алгоритмов расчета. Но использовать DO CASE для анализа того, что именно будем делать (добавить/удалить) - бессмысленно. Мы уже ДО вызова DO CASE знаем это. Зачем же "переспрашивать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 11:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМЗачем же "переспрашивать"?Чтобы вместо add() или remove() писать mycoolproc('add') или mycoolproc('remove'), это же очевидно PS. Прекратите уже его кормить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:22 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Тема названа так, как вы хотели. Это ВАШ термин и не надо придумывать новые термины. Об обертках, на последнем примере о FSO. Вы еще с тех старых времен хорошо знакомы с циклом статей Ю.Шутейко. Покажите реализацию этих функций. Всех. И не так, как любят ГУРУ: "Ищи!", а так: "Коды в студию, пожалуйста". На чем основано ваше утверждения про DO CASE, да еще с приплетением не к месту красивых бантиков типа "процедурное программирование,ООП"? К примеру, вот цитата из вашей статьи: "Проблематично написать парные процедуры загрузки-выгрузки, если они требуют некоторого "внешнего" по отношению к этим процедурам хранилища данных. Например, восстановление исходных настроек среды FoxPro требует где-то сохранить эти самые настройки." Чуть выше я показал, что таких проблем нет. Чтобы вы и этот вопрос не заболтали - выложьте свой учебный пример. Ваше утверждение об однотипности операций с DO CASE вообще глупость. Вот краткий пример: WITH объект DO CASE CASE !_SCREEN.Visible MESSAGEBOX(2*2) CASE tcCase == 'Свойство1' RETURN .свойство1 CASE LEFT(tcCase,5) == 'Метод' .метод() ENDCASE ENDWITH Этот прием позволяет в одной процедуре компактно собрать необходимое для работы с конкретным объектом, а не расписывать для этого целые классы. Об универсальности - непонятно вообще, что вы имееете ввиду. У вас какие-то абстрактные рассуждения, о чем-то своем, наболевшем. К примеру, если я заготовлю заранее парные кнопки "OK и Отмена", то их нельзя будет применять по вашей теории универсальности? А если покнопочно рисовать их в каждой форме приложения, то пожалуйста. Вы наизусть выучили HELP к фоксу, все его команды и функции, но плохо изучили сам девятый VFP - в нем почти все МОЖНО И НУЖНО выносить в универсальные базовые классы. А в приложениях оставлять только специфику, для каждого приложения она своя. VFP9 так заточен и если у вас это не получилось, отсюда не следует, что это плохо. В VFP9 имеется свой механизм работы с проектами, причем довольно мощный. Убедиться в этом может каждый, запустив учебный проект. Вы в свое время перепутали понятия механизм и его реализация. Сам механизм встроен в VFP, а его реализация выполнена в директориях FFC и Wizards. Причем очень плохо, да и устарело. Смените реализацию на свою и в вашем распоряжении окажется этот мощный механизм для работы с приложениями, позволяющий их создавать заново или переделывать старые. И еще использовать кучи готовых решений, которые лежат мертвым грузом по той простой причине, что их некуда внедрять. Но спасовав однажды перед этим вопросом, вы уже восемь лет продолжаете проповедовать идеологию, что в VFP9 надо писать как в VFP3-VFP5, приводя в качестве образца Tastrade. Когда все, что можно и что нельзя, делается в приложениях. И у каждого свой паровоз, каждый изворачивается как может. На чем основана эта ваша уверенность, непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 18:39 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Извините, а Вы можете хотя бы одну тему довести до логического конца? Без "потока сознания"? Или Вам главное просто поболтать, а о чем - не имеет значения? С чего началось обсуждение и родилась данная тема? sg12А здесь всего три процедуры "Добавить, Удалить, Изменить" в двух вариациях. Неужели нельзя было за десять лет написать одну универсальную обертку, где можно один раз отладить все проверки, и куда можно было бы просто передавать параметры из таблиц. Т.е. Ваш исходный посыл: Существует некая универсальная процедура (обертка) для операций "Добавить, Удалить, Изменить" Для начала, Вам показали на примерах, что это не так. Не существует. Всегда есть "что-то", что не укладывается в эту самую "универсальную" процедуру. Далее я заметил, что в одном DO CASE обычно не делают выбор принципиально разных процедур. Это не значит, что это нельзя сделать в принципе. Это всего-лишь значит, что ТАК не делают в виду бессмысленности подобной операции. Вы можете объяснить ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case. Остановимся на этих двух вопросах: отстутствие универсальности и бессмысленность "переспрашивания". Все остальное у Вас крутится вокруг этого. Ответы будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 18:57 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ, забей на него. Стандартный психологический прием троля: обратится к конкретному человеку. Подстава в том что любой нормальный человек считает что должен отвечать раз к нему обращаются. Считает неправильно, т.к. если изначально понятно что спрашивающий ждет не ответа а продолжение диалога. Поэтому надо просто помолчать, какой бы бред не писался. То что это бред понимают все. Так что пусть пишет. Не будет ответов, сам исчезнет отсюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 19:29 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Извините, но я только пунктуально ответил на вопросы, которые ВЫ затронули. Прочитайте свой пост. И насколько я понял, ответы "новичка" застали вас врасплох. На каких примерах вы что показали? Ваш компаньон морочил мне этим голову, теперь вы. Повторяю - вы хоть можете не на пальцах, а хоть что-то показать, хоть примитивный проект для новичков, соответствующий вашей теории? И покажите мне ваше туманное "что-то". Свою фразу: "ЗАЧЕМ мне повторно указывать что именно я хочу сделать, если я и так уже знаю, что будут делать? Я знаю, что я собираюсь делать еще ДО вызова Case." переведите на нормальный русский язык, пожалуйста. Об универсальности я достаточно четко и однозначно сформулировал предложения, куда уж дальше. Что у вас вызывает затруднения? Может быть то, что "универсальность" оказалась для вас неожиданностью? RS. Кстати, к вам и подмога подоспела, вовремя. ДимаТ Если человек не может ответить на вопросы, то лучше не пытаться отвечать, а то попадешь в глупое положение. Если человек, двадцать лет изучающий FoxPro, не может ответить на вопросы "новичка", то вдвойне. И речь идет об ответах, а не поучениях, на что горазды многие ГУРУ, пока дело не доходит до конкретики. Я лично стараюсь отвечать на все вопросы, в том числе и ваши. И если что непонятно, всегда готов уточнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 19:47 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12RS. http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D1%82%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D1%83%D0%BC] P S сокращение от P ost Scriprum . sg12Я лично стараюсь отвечать на все вопросы, в том числе и ваши. Не вижу ни одного ответа по существу. Ни на мои вопросы, ни на чужие. Вижу только вопросы и использование ответов для продолжения монолога. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 20:08 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМ Теперь вернемся к вашей коронному номеру: "Добавить,Удалить,Изменить". Приведите комплект ВАШИХ кодов этих функций, и я покажу ВАМ, как их переделать их через DO CASE. И объясню вам, почему в вашем случае модернизация приложений вызывает известные затруднения, а после перестройки их в главный модуль нет. ДимаТ. Ладно, можете повторить вопросы, если что непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 20:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
ВладимирМWord - это текстовый редактор. Предназначен для ввода/отображения текста . Для него таблицы - это вспомогательный инструмент отображения того же текста. И именно в небольших объемах. Порядка нескольких десятков записей. Если речь идет об отображении тысяч и десятков тысяч записей, то текстовый редактор для этого мало пригоден. Нужно использовать инструмент, специально для этого и предназначенный. Т.е. табличный редактор Excel. Гораздо проще нарисовать некую шапку в Excel, чем мучиться с выводом большой табличной части в Word. Хороший совет. Но возникает новый вопрос - а что мешает в этот раз эти коды вам сделать универсальными? Хотя бы из курсора для начала и без шапки, ее потом можно будет пристроить. Т.е перенести их в глобальный базовый модуль, и тогда ни новичок, ни опытный программист не будут больше постоянно тыкаться с такими вопросами, а просто в эту процедуры будут передавать параметры. Вы можете это объяснить на конкретном примере, а не на пальцах? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 23:14 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
"Универсализм кодов"... "Классы-наше всё"... "Давайте свернём Гланый Модуль"... Начинает напоминать мантры и некие братства Вот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD... Убедите меня, что мой подход неверен ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 01:25 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMВот давайте я вам, дорогой наш sg12 , подкину вопрос: А если мне и надо-то только обработать некий набор данных, заменить некие значения, получив при этом отклик о том, что необходимые действия выполнились верно. На десятке таблиц в полтора-два миллина записей, и быстро - желательно ещё вчера... Я буду посреди тайги искать "универсальный класс" для "Добавления/Удаления/Изменения" (учитывая, что Инета, например, нет или очень мало)? Создавать Хглавный Проэкт с "универсальным кодом"? Или просто напишу десяток-другой строк в виде обычной программы? Причём не заморачиваясь с установкой VFP9, если в наличии имеется только 8, 6 или вообще FPD... Убедите меня, что мой подход неверен А в чем проблема? Кто мешает вам написать эти строчки кода, пишите на здоровье. Но логические ваши ошибки в рассуждениях могу отметить: Главный модуль (а не проект) вам не надо создавать, он у вас уже на флешке, вместе с dll-ками. Если уже не на компе. Вполне вероятно, что ваша задача не так уж сложна и она уже есть в Главном проекте. И возможно вам остается только на худой конец скопировать нужные вам коды, а не писать их заново. А в тестовом шаблоне-проекте она вообще может оказаться только строкой вызова с параметрами. На календаре 2013 г, 9-ка загибается, а вы сидите на 8,6,FPD ..., это говорит о вашем уровне. Где уж тут речь вести о Главном модуле. И посмотрел бы я, как вы будете мыкаться с переносом этих ваших FPD на что-то другое, а здесь системная часть у вас уже готовенькая. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 10:15 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, не думаю, что кому-то из участников, имевших неосторожность вступить с тобой в полемику, что-либо мешает писать. Проблемы, похоже, у тебя. Озвучивать суть их не буду, т.к. это противоречит правилам форума, отмечу лишь то, что явно наличествует в твоих "простынях" - клинический случай резонерства. А вообще - забавно, когда на форуме появляется очередной апологет какой-либо сверхценной идеи, так что -давай, пиши еще! P.S. А "R.S" - это что обозначало-то: "Rectum scriptum" что ли? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 11:12 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Про то, на чём я сижу (или не сижу) я уже, вроде, упоминал - не надо за меня выражаться И мысль, которую я вам пытаюсь донести с момента вашего появления в теме "Чем заменить..." - я лично не буду искать где-то чей-то готовый код (который ещё неизвестно, решит ли именно ту задачу, что требуется), если я вижу, что мне проще и быстрее написАть несколько собственных строк. Если же я вижу, что для решения требуется что-то, что я писАть буду долго и нудно - да, я найду и встрою. Кроме того, возможно, я уже знаю и видел нужные мне части реализации, поэтому я искать не буду, а сразу воспользуюсь, либо решу вопрос с автором функционала. В общем, кредо примерно таково - не "эффективность" кода, а эффективность трудозатрат. И не надо мне говорить, что сборка из "конструктора" быстрее и качественнее. Всё познается на опыте, и мне мой вопит (в противоположность всему нынешнему маркетингу от разработки продуктов), что где-то в чём то я намного более прав, нежели дипломированные (и наслушавшиеся их) "розроботчики". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:02 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTM С чего вы решили, что речь идет о "сборке из конструктора"? С чего вы решили, что "трудозатраты" увеличиваются, а не уменьшаются?. С чего вы решили, что код придется искать? На самом деле опытные программисты этот Главный модуль имеют, только называют его по другому, к примеру так - "наработанные решения". Только хранится он вразброд и при необходимости процедуры перекопируются в программы с небольшими корректировками. Чем хуже собрать их и только вызывать их из приложения. К примеру, зачем переписывать код вывода отчета в Word или Excel в каждом приложении в каждом отчете, если будет возможность использовать универсальный код, который можно написать. Свежий пример, кусок кода из соседней темы: LParameters tnID if type("m.tnID") <> 'N' or m.tnID <= 0 m.tnID = 0 endif Убейте меня, ну не пойму я - почему лучше в каждой форме нужно героически сочинять эти коды, если эти вопросы можно решить один раз в базовом модуле для всех форм. И такое впечатление, что слово ООП употребляется только для красного словца. Вот пример универсального кода передачи собственно объекта и сессии, написанный для Init А.Климовым лет восемь назад: LPARAMETERS toForm WITH THISFORM DODEFAULT() IF PCOUNT() = 1 AND UPPER(VARTYPE(m.toForm)) == "O" AND UPPER(m.toForm.BASECLASS) = "FORM" .pForm = m.toForm ELSE IF VARTYPE(_SCREEN.ACTIVEFORM) == "O" AND UPPER(_SCREEN.ACTIVEFORM.BASECLASS) = "FORM" .pForm = _SCREEN.ACTIVEFORM ENDIF ENDIF IF VARTYPE(.pForm) == "O" AND UPPER(.pForm.BASECLASS) = "FORM" SET DATASESSION TO (.pForm.DATASESSIONID) ENDIF ENDIF Чем он плох, зачем нужно заново открывать Америку в каждой форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:43 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12, Ну так и я о том же, в принципе. То есть "наработанные решения", естественно, не переписываю каждый раз заново. Вот только мы с вами разошлись в оценке того, какой код нужно "унифицировать". Вы утверждаете, что нужно сделать универсальным всё вплоть до операций обслуживания базы. Я же говорю, что одно дело - отчеты, обработка ошибок, интерфейс. И другое - работа с БД. Не нужно (и даже вредно) делать универсальной работу с данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:50 |
|
|
start [/forum/topic.php?fid=41&msg=38131357&tid=1583148]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 155ms |
0 / 0 |