Der Code ist soweit richtig, habs getestet.
Es könnte an der Zeile
Datei := ExtractFilePath('Garantie_Abfrage.exe') + 'Datenbank-Connection.udl';
liegen.
Und ist das try ... finally eigentl. an der richtigen Stelle? Die Stringlist wird nämlcih nur freigegeben wenn es die Datei gibt