Чего в Lazarus не хватает

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Чего в Lazarus не хватает

Сообщение Logo » 21.03.2009 15:18:28

Не хватает в Lazarus`е SQL функций, чтобы можно было прямо в программе, на ряду с паскалевским и ассемблеровским кодом писать SQL код с проверкой синтаксиса и всеми прелестями современного написания программ. Для этого можно было бы использовать ключи, или ввести в синтаксис функцию типа SQL. Например:
Код: Выделить всё
function Form1.SQLGetDBData: sql;
begin 
   SELECT pip_address, pip_regnum, pip_datereg, pip_registrator
     FROM publicip;

end;

procedure Form1.InitSQLQuery;
begin
   SQLQuery1.SQL.Text := SQLGetDBData;
   SQLQuery1.Open;
end;


По сути функция строчного типа, но внутри, этой функции, код пишется в виде sql запросов, что облегчит написание и читабельность сложных программ работающих с базами данных. Возвращается же строка с запросом, которую присваиваем SQLQuery1. Для динамических запросов, изменяемые параметры передаются в виде параметров функции. Конечно, это в рамках Lazarus не решить, нужно модифицировать компилятор, но интересно - на сколько актуальна данная тема, а там будем пробовать и договариваться :)

Другим решением, уже исключительно в рамках Lazarus, можно в редактор кода выводить содержимое техтовых полей, таких, как SQLQuery1.SQL. Текст во время редактирования виден в тексте программы, но обрабатывается по своим правилам, а во время компиляции игнорируется. Что-то вроде своеобразных окон в тексте программы. Это, по моему, можно решить чисто усилиями разработчиков Lazarus.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение Mr.Smart » 21.03.2009 17:27:04

Logo писал(а):Не хватает в Lazarus`е SQL функций, чтобы можно было прямо в программе, на ряду с паскалевским и ассемблеровским кодом писать SQL код с проверкой синтаксиса и всеми прелестями современного написания программ. Для этого можно было бы использовать ключи, или ввести в синтаксис функцию типа SQL. Например:
Код: Выделить всё
function Form1.SQLGetDBData: sql;
begin 
   SELECT pip_address, pip_regnum, pip_datereg, pip_registrator
     FROM publicip;

end;

procedure Form1.InitSQLQuery;
begin
   SQLQuery1.SQL.Text := SQLGetDBData;
   SQLQuery1.Open;
end;


По сути функция строчного типа, но внутри, этой функции, код пишется в виде sql запросов, что облегчит написание и читабельность сложных программ работающих с базами данных. Возвращается же строка с запросом, которую присваиваем SQLQuery1. Для динамических запросов, изменяемые параметры передаются в виде параметров функции. Конечно, это в рамках Lazarus не решить, нужно модифицировать компилятор, но интересно - на сколько актуальна данная тема, а там будем пробовать и договариваться :)

Другим решением, уже исключительно в рамках Lazarus, можно в редактор кода выводить содержимое техтовых полей, таких, как SQLQuery1.SQL. Текст во время редактирования виден в тексте программы, но обрабатывается по своим правилам, а во время компиляции игнорируется. Что-то вроде своеобразных окон в тексте программы. Это, по моему, можно решить чисто усилиями разработчиков Lazarus.

Лишнее это!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Чего в Lazarus не хватает

Сообщение Logo » 21.03.2009 17:43:38

Mr.Smart писал(а):Лишнее это!

Возможно, но меня лично, оно уже достало :(
Трудно писать, когда SQL кода больше, чем паскалевского и все это нужно тыкать плюсиками в строку.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение Mr.Smart » 21.03.2009 17:54:42

Используй внешний структурированный файл для хранения SQL кода. Я именно так делаю.
Один раз написал модуль к файлу "шаблонов" (я их так называю) и редактор и пользуешься.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Чего в Lazarus не хватает

Сообщение Logo » 21.03.2009 19:08:52

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

Один раз написал модуль к ....... и редактор и пользуешься.

Вот, вот именно этого я и хочу, - один раз написать и чтобы все пользовались :)
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение Timid » 21.03.2009 19:25:05

2 Logo, если нужен БД-ориентированный язык, то возьми FoxPro или Clipper. Нечего смешивать язык программирования и язык запросов.

Если есть сложность с большим объемом "оберточного" кода, то можно сделать препроцессор, который расставит кавычки и нужные фрагменты кода для объединения строк SQL-запроса.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Чего в Lazarus не хватает

Сообщение Bupyc » 21.03.2009 19:53:48

Стабильности Лазарусу не хватает, например под WinCE. Отсутствие специализированных средств для редактирования SQL запросов на фоне этого вообщем то и не недостаток. Так ... фигня.
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: Чего в Lazarus не хватает

Сообщение Logo » 21.03.2009 20:00:23

Timid писал(а):2 Logo, если нужен БД-ориентированный язык, то возьми FoxPro или Clipper. Нечего смешивать язык программирования и язык запросов.

Спасибо за позитив, давно так весело не было :mrgreen:

Если есть сложность с большим объемом "оберточного" кода, то можно сделать препроцессор, который расставит кавычки и нужные фрагменты кода для объединения строк SQL-запроса.

Подобное предложение уже выше было и ответ к нему.
------
Приблизительно пол года назад, я забросил С, Яву, всякие там булдеры, хотя изредка посматриваю их и полностью перешел на Lazarus. Знаете почему? А потому, что в рамках одного проекта, в одной среде я могу "балдеючи" писать демоны, системные утилиты, графический интерфейс юзера и эффективно работать с базами данных. Так вот с базами данных, я начал задалбываться и пришла в голову мысль о том, как превратить это дело в "балдеж". Хотя для других, как видно, SQL проблем не приносит.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение скалогрыз » 21.03.2009 22:05:14

Logo писал(а):Другим решением, уже исключительно в рамках Lazarus, можно в редактор кода выводить содержимое техтовых полей, таких, как SQLQuery1.SQL. Текст во время редактирования виден в тексте программы, но обрабатывается по своим правилам, а во время компиляции игнорируется. Что-то вроде своеобразных окон в тексте программы. Это, по моему, можно решить чисто усилиями разработчиков Lazarus.

интересная идея, а сколько платят за реализацию такого редактора?

а опыт написания расширений для IDE уже имеется:
LeakView
Manual Docker http://wiki.lazarus.freepascal.org/Manual_Docker

хотя почему бы тупо не использовать модуль с константами?

Код: Выделить всё
unit
  SQLMyQueries;

interface

const
  SQLGetDBData =   
     'SELECT pip_address, pip_regnum, pip_datereg, pip_registrator '+
     '  FROM publicip;';
end.


Код: Выделить всё
uses
  ...SQLMyQueries...;

procedure Form1.InitSQLQuery;
begin
   SQLQuery1.SQL.Text := SQLGetDBData;
   SQLQuery1.Open;
end;


не зря же в ВУЗах учат использовать константы ;)
Кстати, к такому "модулю из констант запросов" редактор будет ещё приятнее писать! гы.... может быть даже это дешевле в итоге выйдет...
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Чего в Lazarus не хватает

Сообщение Logo » 22.03.2009 00:16:03

скалогрыз писал(а):...
хотя почему бы тупо не использовать модуль с константами?
Код: Выделить всё
unit
  SQLMyQueries;

interface

const
  SQLGetDBData =   
     'SELECT pip_address, pip_regnum, pip_datereg, pip_registrator '+
     '  FROM publicip;';
end.

Потому, что тупо. Редактор свойства SQL гораздо разумнее.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение скалогрыз » 22.03.2009 02:01:44

Logo писал(а):Потому, что тупо. Редактор свойства SQL гораздо разумнее.

:) классное объяснение! и ещё о константах. если использовать функцию Format то с тем же успехов можно облегчить труд в РАЗы :)

ну ладно, а разработку редактора нет желания профинансировать? :)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Чего в Lazarus не хватает

Сообщение Logo » 22.03.2009 03:02:59

скалогрыз писал(а):
Logo писал(а):Потому, что тупо. Редактор свойства SQL гораздо разумнее.

:) классное объяснение! и ещё о константах. если использовать функцию Format то с тем же успехов можно облегчить труд в РАЗы :)

И что Format даст: проверку синтаксиса SQL, читабельность кода, производительность труда, головную боль...?
ну ладно, а разработку редактора нет желания профинансировать? :)

Сколько нужно? На каких условиях?
Я так понял, что речь идет о модернизации Lazarus редактора. Тоесть, SQL код будет в одном модуле с паскалевским кодом, с проверкой синтаксиса селективно для каждого диалекта (выбор диалекта можно опционально).
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение скалогрыз » 22.03.2009 08:19:34

Logo писал(а):Я так понял, что речь идет о модернизации Lazarus редактора. Тоесть, SQL код будет в одном модуле с паскалевским кодом, с проверкой синтаксиса селективно для каждого диалекта (выбор диалекта можно опционально).

нет, речь идёт не о редакторе Lazarus-a, а о дополнительном редакторке, встроенном в Lazarus. Который будем вызываться по какой-нить горячей клавише, и проверять весь возможный SQL синтаксис в модуле(ях) проекта Лазаруса.

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

ЗЫ: Format поможет при "сборке" динамических запросов.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Чего в Lazarus не хватает

Сообщение Logo » 22.03.2009 15:13:27

скалогрыз писал(а):
Logo писал(а):Я так понял, что речь идет о модернизации Lazarus редактора. Тоесть, SQL код будет в одном модуле с паскалевским кодом, с проверкой синтаксиса селективно для каждого диалекта (выбор диалекта можно опционально).

нет, речь идёт не о редакторе Lazarus-a, а о дополнительном редакторке, встроенном в Lazarus. Который будем вызываться по какой-нить горячей клавише, и проверять весь возможный SQL синтаксис в модуле(ях) проекта Лазаруса.

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

ЗЫ: Format поможет при "сборке" динамических запросов.

Ок! Вы меня убедили. Только следующий раз, прежде нежели начать дискуссию, - прочтите о чем идет речь. В данный момент достаточно сторонних средств для работы с SQL.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Чего в Lazarus не хватает

Сообщение Ask » 22.03.2009 23:05:10

Правильный план -- написать библиотеку для генерации SQL:

with publicip do
SQL.Select([address, regnum, dateref]).Where(regnum = myRegNum).Limit(10).Open;

Где address, regnum, dataref -- published properties объекта publicip, myRegNum -- просто переменная.

Преимущества:
1) настоящие проверки во время компиляции,
в том числе на соответствие типа параметра и типа поля, наличие выбираемых полей в указанной таблице и т.п.
2) переносимо между различными СУБД
Недостатки:
1) надо писать ;)
2) другой синтаксис, требует переобучения
3) требует перегрузки операций -- не будет работать на старых Дельфях
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru
cron