Zunaechst mal folgende Kardinalfehler:
globale Variablen und Lokale Variablen haben bei Dir den gleichen Namen. Das ist eine Katastrophe und fuehrt zu Fehlern, die man in einem nichttrivialen Programm kaum noch ausfindig machen kann.
Am besten ueberhaupt
keine globalen Variablen gar nie nicht verwenden!
In Deinem code wird
A,B,C,D global als Array deklariert und in dem Event 'Bubblesortclick':
d,n,k,i, speicher : integer;
ist wieder eine Variable "d" als integer....
Niemals identifier so benamsen, dass es Ueberschneidungen mit Prozedurnamen aus der
VCL oder
RTL gibt.
(Hi und Lo sind Routinen der
RTL, die das hoeherwertige bzw. niederwertige Byte eines Integers zurueckliefern.
Warum hast Du vier Listen mit Zahlen (Arrays a,b,c,d) statt nur einer?
Es ist doch ohnehin ueberall das selbe drin.