[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