![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
delphicoding |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.7.2011 Репутация: -2 Всего: -2 |
Добрый день!
С 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... Заранее спасибо за подробные полезные ответы! Это сообщение отредактировал(а) delphicoding - 5.7.2011, 23:07 |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Что бы добавить колонку в грид - надо сначала добавить нужное поле в запрос в датасете, а потом добавить колонку в грид (обычно надо 2 раза клацнуть на него сначала, но я с DevExpress не работал) и настроить ее на это поле.
Там из автоматически сгенерированного только описание контролов вначале - не вижу смысла их прятать. По DevExpress попробуйте в этом блоге посмотреть - ссылка Книги по базам, фибам, ФБ попробуйте тут на сайте в разделе - Базы данных и репортинг. |
|||
|
||||
delphicoding |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.7.2011 Репутация: -2 Всего: -2 |
Спасибо, попробую!
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
намёк на тему для холивара ![]() Добавлено через 1 минуту и 19 секунд В таких случая нанимается программист, который знает Delphi и Firebird ;) Добавлено через 3 минуты и 34 секунды Сколько это будет стоить? Ну примерно 10-30 долларов за час работы. В зависимости от квалификации программиста. Не-не, я не намекаю, что я хочу взяться за проект. Просто уверен, что так будет быстрее, чем ты сначала изучишь: Delphi, SQL, Firebird, саму среду программирования Delphi, да ещё и IBExpert ;) Добавлено через 4 минуты и 6 секунд оооооо, да тебе работы хватит ![]() Добавлено через 5 минут и 21 секунду
таких книг нет Добавлено через 10 минут и 36 секунд Документации на русском по DevExpress нет. Есть только на английском на офсайте в виде справочный файлов и маловато + скудноватые примеры. По FibPlus есть документация по компонентам и по свойствам компонент, а также примеры. Всё на русском и английском. По Firebird есть книга "Firebird: руководство разработчика баз данных" от Хелен Борри на русском. Но если разобрался в мускуле, то и в FB подавно разберёшься, SQL ведь - это стандарт ![]() Книгу по дельфи??? Их столько.... Почитай Марко Кэнту. Добавлено через 11 минут и 52 секунды Задавайте вопрос на нашем форуме, вот разделы: http://forum.vingrad.ru/forum/Interbase-database.html http://forum.vingrad.ru/forum/delphi-db-da...-reporting.html http://forum.vingrad.ru/forum/delphi-general.html http://forum.vingrad.ru/forum/forum-331.html Добавлено через 12 минут и 2 секунды http://forum.vingrad.ru/forum-440.html Добавлено через 13 минут и 34 секунды Вообще-то можно довольно быстро написать приложение на дельфи с базой Firebird без ввода кода ![]() |
|||
|
||||
delphicoding |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.7.2011 Репутация: -2 Всего: -2 |
После нескольких дней ковыряния проекта, среда 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: |
|||
|
||||
Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Перевести требуется, что ли? ![]() А code - шозанах? ![]()
Не знаю, никогда не мешало, даже в голову не приходило ни о каких странностях. Кстати, в Билдере то же самое. "do" вообще-то во многих языках встречается. И begin тут непосредственно с do никак не связано, т.е. без него бы как раз фигня и вышла. Первый, второй, третий, а тут-то что не так? ![]() Снова-таки, в Билдере ещё хуже. ![]()
А если бы были скобочки, ты к чему бы тогда придрался? ![]() Опять Билдер вспомним. -------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Ты чё сюда пришёл? Высказать недовольство относительно Delphi? Марш сюда: http://forum.vingrad.ru/forum/holy-wars.html ![]() Если есть вопросы конкретные вопросы, создавай нормально тему, задай по-человечески вопрос. А нет? До свидания! ![]() |
|||
|
||||
delphicoding |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.7.2011 Репутация: -2 Всего: -2 |
Так конкретные!
Может по другим пунктам знаете как решить неудобство, например: п.6, п.7, п.8 (как заблокировать элементы формы от случайного сдвига, ведь для движений объектов не работает Ctrl+Z )? п.2 - не понимаю почему такой разный синтаксис в каждом блоке ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
delphicoding |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.7.2011 Репутация: -2 Всего: -2 |
Так конкретные!
Может по другим пунктам знаете как решить неудобство, например: п.6, п.7, п.8 (как заблокировать элементы формы от случайного сдвига, ведь для движений объектов не работает Ctrl+Z )? п.2 - не понимаю почему такой разный синтаксис в каждом блоке ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
тупо надо почитать документацию из которой узнаешь, как можно обращаться к параметра по имени, а не по "циферкам" Или клавиша F1 выламана? Мож в гугле забанили за частый поиск? Добавлено @ 09:26 пиши тип для каждой, кто мешает, в чем проблема? ![]() Добавлено @ 09:27 просто так - никак может быть ты найдёшь какую-нибудь утилиту, эксперта для дельфи, но по-другому никак |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Да единый синтаксис там. Если ты будешь Паскаль с Дельфи 2010 будешь сравнивать - там, конечно, синтаксисы разнятся. ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
и это очень хорошо!!!!! и удобно! ну а ты можешь себе поставить отдельно какой-нибудь delphi Code Formatter, хотя в JEDI весть есть же Добавлено через 2 минуты и 1 секунду НУ И БРЕД ![]() ![]() ![]() ![]() ![]() ![]() ![]() 1. Используй перетаскивание с помощью Shift/Ctrl/Alt, можно перемещать мышкой или стрелками клавиатуры. Добавлено через 2 минуты и 35 секунд
чтобы тебя запутать бедного Добавлено через 3 минуты и 33 секунды Ну дык тебе и карты в руки ![]() ![]() ![]() ![]() Добавлено через 5 минут и 1 секунду Ейбогу, граждане.... я бы после этого товарища проект не стал бы дописывать. Такое впечатление, что автор темы ранее писал на каком-то неизведанном языке собственного производства aka Brainfuck ![]() Добавлено через 13 минут и 18 секунд Так надо. Как минимум для того, чтобы определить область видимости. |
|||
|
||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
да, по-твоему правильно было бы так:
И то правда, нафиг нам эти пробелы, с ними больше мороки Добавлено через 9 минут и 4 секунды
Пиши на сях, там от скобочек тебе в глазах рябить не будет ![]() Добавлено через 9 минут и 52 секунды Нужно будет тему отправить в Песочиницу или в холивары. Только нужно её ещё чуть-чуть подразвить ![]() Добавлено через 10 минут и 59 секунд
В любом достаточно сложном проекте можно охренеть даже профессионалу, не говоря о тебе ;) |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |