| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Delphi+Firebird самый удобный-простой метод работы |
| Автор: delphicoding 5.7.2011, 19:09 |
| Добрый день! С Delphi вообще не знаком. Программировал ранее на языке программирования с куда более "логически очевидным кодом" и в другой области прикладного программирования и графики. Так получилось, что попросили помочь - отредактировать старый проект Delphi + Firebird. Пытаюсь освоить... по началу всё как-то тупо и непривычно, утомляет всякая имхо неудобная фигня и лишние строки, непонятные приставки итд. Например, нужно добавить показ в таблице ещё одной колонки данных - пол дня вожусь хз как это сделать - колонку добавил, объявил в начале исходника, данные колонке из БД назначил, программа компилируется но колонка пустует... открываю файл БД там ещё тонна кода - ну таблицы понятно, тригеры понятно, но полно ещё каких-то процедур, доменов, индексов... Конечно, всё это нужно изучать, но всё же возможно вы сможете как-то помочь вначале... 1. Прошу профи посоветовать - как под Delphi 2009 + Firebird (+FIBplus +DevExpress +JVCL) наиболее легко и удобно с точки зрения логики и простоты понимания и отслеживания цепей процессов организовать работу с Firebird? Например, год назад вдруг потребовался MySQL - разобрался в нём за час! - научился создавать БД, таблицы, строки, определять типы данных, записывать данные, очищать, удалять, итд. Но в данном проекте видимо используется слишком большое кол-во шагов: создание переменной, определение типа переменной, создание процедуры для переменной, создание в интерфейсе компонент и назначение переменных, отсыл к общему блоку в Delphi работы с СУБД, взаимодействие с неким процедурами СУБД, получение, разбиение, итд. Можно ли упростить цепочку? Мне было бы намного проще: а) работать с визуальными копонентами автоматически объединяемыми в блоки (например, как в html создаётся блок с кнопкой Enter, а все поля заполняются и отправляются автоматически без необходимости каждое поле объявлять, обозначать, процедуры для него писать, без необходимости объединять все эти запросы, итд); б) работать с БД напрямую вручную - мне проще перечислить текстом 50 таблиц, чем разделять код программы на 10 различных типов кода (объявление, назначение, процедуры, функции, потом тоже самое опять в СУБД, итп), кроме того код не содержит почти никаих комментариев - тк непривычно и всё это вместе выглядит как каша! :( Вот ещё пример, объект с выпадающим списком называется TJvDBLookupCombo и в нём есть возможность напрямую указать данные из БД, а вот в колонках DevExpress так и не нашёл как указать напрямую нужные из БД таблицы-данные?? :( 2. Можно ли как-то автоматически перевести весь проект на более удобный-простой метод общения с БД? 3. Возможно также есть возможность в настройках скрыть весь код автоматически генерируемый Delphi при работе с графическим интерфейсом (формами), чтобы отображался только код написанный вручную? Чтобы просто не мешал на первых порах... 4. Посоветуйте книги по Delphi + DevExpress + FIBplus + Firebird... Заранее спасибо за подробные полезные ответы! |
| Автор: superVad 6.7.2011, 19:25 |
| Что бы добавить колонку в грид - надо сначала добавить нужное поле в запрос в датасете, а потом добавить колонку в грид (обычно надо 2 раза клацнуть на него сначала, но я с DevExpress не работал) и настроить ее на это поле. Там из автоматически сгенерированного только описание контролов вначале - не вижу смысла их прятать. По DevExpress попробуйте в этом блоге посмотреть - http://delphi2010.ru/?tag=devexpress Книги по базам, фибам, ФБ попробуйте тут на сайте в разделе - Базы данных и репортинг. |
| Автор: delphicoding 6.7.2011, 21:14 |
| Спасибо, попробую! |
| Автор: delphicoding 8.7.2011, 00:31 |
| После нескольких дней ковыряния проекта, среда Delphi не особо радуют... :( -1 Прежде всего кривые хрен знает откуда взятые названия терминов... например Unit - шозанах?! Оказывается это Code. А, что Form не может быть по-английски Unit?? это самый просто пример, таких примеров "странных названий" полно. Сильно мешает. -2 Слабая стандартизация компонент, вот несколько блоков кода одного проекта с совершенно разным синтаксисом, хрен разберёшь что где как делать: With spReport do begin (без "do" никак?) close; SQLs.SelectSQL.Text:='SELECT * FROM '+ProcName+'(:DATE_FROM, :DATE_TO, :source_id, :temp_ID, :USER_ID)'; (тут появилось двоеточие) Params[0].Value:=pDateFrom; (почему параметры они тупо по циферкам не понял) Params[1].Value:=pDateTo; freport.Variables['Директор']:=''''+gDirector+''''; (оппа появились кавычки в огромном колве и даже плюсики, а переменная уже в квадратных скобках, оппа) -3 удацкая конструкция взаимодействия с данными БД - нельзя просто написать хоть в коде, хоть в Value графического объекта значение вида "FBSQL.db.table.column" например "FBSQL.basa.COMPANY.DIRECTOR" или даже ещё проще "FBSQL.DIRECTOR", нет, нужно всё друг другу переназначить по 10 раз и завести новые переменные с абсолютно аналогичными названием типа: gDirector:=GetParams('DIRECTOR',''); edDirector.Properties.Value:=gDirector; SetParams('DIRECTOR',gDirector); gDirector:=GetParams('DIRECTOR',''); -4 собственно о процедурах - нахрена их объявлять по два раза?! в начале и при запуске процедуры? какой смысл?! type procedure ShowReport(ProcName, ReportName, ReportType:string); procedure ShowReport(ProcName, ReportName, ReportType:string); begin ... end; end; -5 наверно Delphi делали чтобы было легче программировать, например в пред пункте (ProcName, ReportName, ReportType:string) можно указать тип переменной не для каждой, а сразу для группы - типа удобнее же и быстрее! но в реальности это менее наглядно и приходится выискивать какого же собсвтенно типа одна из десятка переменных?! где же объявлялка там затерялась?! -6 видимо разработчик оригинала проекта работал не очень аккуратно и поэтому постоянно скачут пробелы и отступы - редактор Delphi абсолютно не умеет форматировать текст самостоятельно, убирать лишние пробелы или наоборот поддерживать заданные интервалы между активными символами. -7 очень не хватает инспектора связей способного выстроить графическую цепочку движения данных по проекту - например забиваешь gDirector и видишь где данные появляются, как проходят и где сохраняются или отправляются например в отчёт - очень этого не хватает при освоении чужих проектов! -8 объекты на графической форме не только нельзя расположить точно по абсолютным значениям пикселей, а только относительно предыдущего объекта, но и нельзя создавать сетки привязки объектов по координатам - в результате сложные формы с кол-вом графических объектов более 30-50 задолбаться можно выравнивать, и нет блокировки от случайного движения мышкой - через раз выбирая объект слегка его дёрнешь куда-нить в сторону в итоге все разъезжаются... -9 куча левых приставок вида spDirector, exDirector, TDirector, TfDirector итд... офигеть можно, зачем всё это?! Есть некие данные в БД назовём просто "FBSQL.DIRECTOR" также пускай будет переменная хранящая и передающая значение из БД "var.Director" если переменная назначена графическому объекту - пускай у него будет имя и свойства вида "obj.EditFiledDirector.Width" итп. Всё прекрасно видно, понятно и работать легко и ничего не перепутается! Тут же в Delphi бардак полный у всех однотипные имена и хрен поймёшь сразу что где и чем отличается от соседнего?! слишком много для одних данных разных переменных и объектов. Опять же не хватает параметра для всех переменных вида local/global - создал один раз переменную global и обращайся к ней напрямую из любого места проекта, а тут постоянно приходится указывать откуда эта переменная родом, где была заявлена - лишний код и груз. -10 зачем нужен begin-end в каждой процедуре?! нельзя просто скобочками или типа того?! procedure TfLocalReport.btPrintClick(Sender: TObject); begin fDesign:=false; PrintReport; end; намного компактнее и проще для визуальной проверки было бы: procedure TfLocalReport.btPrintClick(Sender: TObject) { fDesign:=false; PrintReport } В общем пока вижу только, что в Delphi довольно легко сделать лёгкий проект, но разобраться в сложном проекте - охренеть. :( Если можете чтото подсказать по повышению удобства работы в Delphi - было бы здорово! PS Не ругайтесь - целый день ковырялся пытался исправить ошибку разработчика вытащить одно поле из БД которое он забыл вывести в отчёт - исправил несколько ошибок, оптимизировал код блока отчётов в почти два раза! всё что было работает... но нужное новое поле так в отчёте и не появляется.... мля... бесит! :wall: |
| Автор: Данкинг 8.7.2011, 01:19 | ||||
Перевести требуется, что ли? А code - шозанах?
Не знаю, никогда не мешало, даже в голову не приходило ни о каких странностях. Кстати, в Билдере то же самое. "do" вообще-то во многих языках встречается. И begin тут непосредственно с do никак не связано, т.е. без него бы как раз фигня и вышла. Первый, второй, третий, а тут-то что не так? Снова-таки, в Билдере ещё хуже.
А если бы были скобочки, ты к чему бы тогда придрался? Опять Билдер вспомним. |
| Автор: Akella 8.7.2011, 08:59 |
Ты чё сюда пришёл? Высказать недовольство относительно Delphi? Марш сюда: http://forum.vingrad.ru/forum/holy-wars.html Если есть вопросы конкретные вопросы, создавай нормально тему, задай по-человечески вопрос. А нет? До свидания! |
| Автор: delphicoding 8.7.2011, 09:04 |
| Так конкретные! Может по другим пунктам знаете как решить неудобство, например: п.6, п.7, п.8 (как заблокировать элементы формы от случайного сдвига, ведь для движений объектов не работает Ctrl+Z )? п.2 - не понимаю почему такой разный синтаксис в каждом блоке |
| Автор: Akella 8.7.2011, 09:07 | ||
можно без begin, но без do никак
|
| Автор: delphicoding 8.7.2011, 09:22 |
| Так конкретные! Может по другим пунктам знаете как решить неудобство, например: п.6, п.7, п.8 (как заблокировать элементы формы от случайного сдвига, ведь для движений объектов не работает Ctrl+Z )? п.2 - не понимаю почему такой разный синтаксис в каждом блоке |
| Автор: Akella 8.7.2011, 09:24 | ||||
тупо надо почитать документацию из которой узнаешь, как можно обращаться к параметра по имени, а не по "циферкам" Или клавиша F1 выламана? Мож в гугле забанили за частый поиск? Добавлено @ 09:26
пиши тип для каждой, кто мешает, в чем проблема? Добавлено @ 09:27 просто так - никак может быть ты найдёшь какую-нибудь утилиту, эксперта для дельфи, но по-другому никак |
| Автор: Данкинг 8.7.2011, 09:27 |
Да единый синтаксис там. Если ты будешь Паскаль с Дельфи 2010 будешь сравнивать - там, конечно, синтаксисы разнятся. |
| Автор: Akella 8.7.2011, 09:28 | ||||||||||
и это очень хорошо!!!!! и удобно! ну а ты можешь себе поставить отдельно какой-нибудь delphi Code Formatter, хотя в JEDI весть есть же Добавлено через 2 минуты и 1 секунду
НУ И БРЕД 1. Используй перетаскивание с помощью Shift/Ctrl/Alt, можно перемещать мышкой или стрелками клавиатуры. Добавлено через 2 минуты и 35 секунд
чтобы тебя запутать бедного Добавлено через 3 минуты и 33 секунды
Ну дык тебе и карты в руки Добавлено через 5 минут и 1 секунду Ейбогу, граждане.... я бы после этого товарища проект не стал бы дописывать. Такое впечатление, что автор темы ранее писал на каком-то неизведанном языке собственного производства aka Brainfuck Добавлено через 13 минут и 18 секунд
Так надо. Как минимум для того, чтобы определить область видимости. |
| Автор: Akella 8.7.2011, 09:45 | ||||||||
да, по-твоему правильно было бы так:
И то правда, нафиг нам эти пробелы, с ними больше мороки Добавлено через 9 минут и 4 секунды
Пиши на сях, там от скобочек тебе в глазах рябить не будет Добавлено через 9 минут и 52 секунды Нужно будет тему отправить в Песочиницу или в холивары. Только нужно её ещё чуть-чуть подразвить Добавлено через 10 минут и 59 секунд
В любом достаточно сложном проекте можно охренеть даже профессионалу, не говоря о тебе ;) |
| Автор: Akella 8.7.2011, 10:02 | ||
Вместо Begin/End скобочки поставил |
| Автор: delphicoding 8.7.2011, 10:49 |
Модератор: Сообщение скрыто. |
| Автор: Данкинг 8.7.2011, 11:02 |
Гы. |
| Автор: Akella 8.7.2011, 13:26 |
Добавлено через 2 минуты и 36 секунд так уж и быть, за оскорбление банить тебя не буду, настроение ты мне поднял своими сообщениями |
| Автор: bems 8.7.2011, 13:34 |
| Модератор: один топик - один вопрос. Троллинг не приветствуется. Школьные вопросы задают в разделе для новичков. Тема закрыта. |