Warum hörst du nicht auf das, was dir dein Compiler bestimmt zu sagen versucht?
Zitat:
if zahl1 <> zahl2 then
Zahl2 ist hier noch garnicht initialisiert, weil DU dieser Variable noch nichts zugewiesen hast, denn das machst du erst danach,
und da lokale Variablen nicht (alle) automatisch initialisiert werden, steht darin ein Zufallswert.
Außerdem, du willst nur sie Anzahl wissen, aber lädst gleich alles runter? Ein bisschen unnötig viel Traffic und Speicher.
SELECT count(ts_number.id) FROM ts_number WHERE ts_number.id = 2
MyQuery2.FieldByName('count').AsInteger
bzw.
MyQuery2.Fields[0].AsInteger