[fpc-pascal] Food for thought - language string improvement
Graeme Geldenhuys
mailinglists at geldenhuys.co.uk
Thu Jul 6 16:13:52 CEST 2017
Ever had a problem like this? You have some SQL, say:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;
and you want to add that SQL to the SQL property of a query at runtime.
You end up either having to turn this into a string like this:
'SELECT Customers.CustomerName, Orders.OrderID' +
'FROM Customers' +
'FULL OUTER JOIN Orders' +
'ON Customers.CustomerID = Orders.CustomerID' +
'ORDER BY Customers.CustomerName;'
or manually in each line like this (oh please NEVER do this!):
FDQuery1.SQL.Add('SELECT Customers.CustomerName, Orders.OrderID');
FDQuery1.SQL.Add('FROM Customers');
FDQuery1.SQL.Add('FULL OUTER JOIN Orders');
FDQuery1.SQL.Add('ON Customers.CustomerID = Orders.CustomerID');
FDQuery1.SQL.Add('ORDER BY Customers.CustomerName;');
Now this has normally not been much of a problem for me, because part of
tiOPF's support tools, there is a tool name tiSQLEditor that does
bi-directional conversions for you - to and from quoted strings for SQL.
And even straight from/to the clipboard. This tool has been around for
17+ years. But why must this be a tool problem or a IDE problem? Why
can't the Object Pascal language solve this for us!
[the following part quoted from a online discussion by somebody else - I
fully agree with his thoughts though]
Imagine if FPC had type inference and multi-line strings, neither very
exotic features. The code then becomes:
=========================================
var query := '''SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;'''
FDQuery1.SQL.Add(query);
=========================================
Easier to read, easier to edit, no need for a IDE wizard or external tools.
Language features like this is what increases productivity. But
unfortunately it seems we all rather rely on a specific tool or IDE to
improve our productivity - thus also locking us into using those tools only.
Regards,
Graeme
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/
My public PGP key: http://tinyurl.com/graeme-pgp
More information about the fpc-pascal
mailing list