Um eine Tabelle zu erweitern würde ich direkt auf die Struktur-Informationen zugreifen.
Diese sollten auf bei Firebird in einer System-Tabelle abgelegt sein.
Findet man das Feld dort nicht, dann per Script die Änderung an die Datenbank schicken.
Jetzt muss man alle Tabellen und Queries die diese Tabelle referenzieren einmal neu laden.
(Worst Case: Close - Open)
Wieso wird Feldtyp eigentlich als String übergeben und dann nach TFieldType geparsed? Wäre es anders herum nicht sinniger?
Vermutlich, weil die Informationen als Text vorliegen.
Sinnigerweise sollte man diese Umwandlung aber in einer eigenen Funktion erledigen.