Das Ganze ist dann wie eine Tabelle anzusehen, mit Daten, die aus einem
MySQL Server kommen...
Aha!
Mir scheint dass dein gesamter Ansatz völlig umständlich ist.
Es gibt Komponenten, die eine sogenannte
Memory-Table oder auch Memory-Dataset nachbilden.
Das heisst, du kannst selbst Felder mit Namen und Datentyp (string, integer, Boolean,...) definieren
und so viele Datensätze einfügen wie der Hauptspeicher hergibt.
Das Speichern der Daten als
CSV-Datei und später erneute Laden aus der
CSV-Datei ist sehr einfach zu bewerkstelligen.
Auch das Löschen,Ändern und Anzeigen von Datensätzen ist total einfach (du brauchst dazu nur ein TDataSource und ein TDBGrid bzw. TDBEdits).
Also ich würde an deiner Stelle den Code wegwerfen und die Sache mit Hilfe einer Memory-Table angehen.
PS: du kannst auch nach best. Feldern Sortieren, Filtern und Suchen