Wenn Du jetzt noch dazu schreibst, wo Dir konkret Werte "verloren" gehen, könnte man sich das genauer anschauen. Das Programm ist allerdings für meinen Geschmack durch zu viel copy and paste reichlich unübersichtlich.
Man sollte beim Erstellen von Programmen wo es geht Schleifen und arrays verwenden, statt mittels copy and paste gewaltige Codemengen zu produzieren - so ein Programm ist nämlich wesentlich fehleranfälliger und schwerer zu warten, und die Fehlersuche ist viel mühsamer, weil einfach viel mehr Code zum Überprüfen da ist.
Also z.B. statt
Delphi-Quellcode:
temp_data[0] := Store_Buffer[i] mod 2;
temp_wert := Store_Buffer[i] div 2;
temp_data[1] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[2] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[3] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[4] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[5] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[6] := temp_wert mod 2;
temp_wert := temp_wert div 2;
temp_data[7] := temp_wert mod 2;
einfach
Delphi-Quellcode:
temp_wert := store_Buffer[i];
for a := 0 to 7 do
begin
temp_data[a] := temp_wert mod 2;
temp_wert := temp_wert div 2;
end;
Wenn Du statt data1, data2, data3... und cd1, cd2, cd3...
Felder Data: array [1..8] und cd: array[1..8]
verwendest, und den immer wiederkehrenden Code in eine Schleife legst, würde das Program um einiges übersichtlicher werden.
Noch ein nono:
if dispmarker1.Visible = true then
.
Statt dessen:
if dispmarker1.Visible then
.
Es würde natürlich auch so gehen:
if ((((dispmarker1.Visible = true) = true) = true) = true) then
.
Sollte die repeat-Schleife in prepaire_data nicht doch eher eine for Schleife sein - ich meine, steht die Anzahl der Durchläufe nicht schon zu Schleifenbeginn fest? In dem Fall entspricht die Verwendung einer repeat Schleife nämlich einer Täuschung des Gegners
edit: Irgendwie versteht die Forumsoftware meine delphi tags nicht