Hallo
Ich bin dabei, meine Lazarus- bzw. Pascalkenntnisse aufzufrischen und habe ein Problem, was ich mir selber nicht wirklich erklären kann. Zunächst einmal kurz die Info: ich habe schon mehrere Foren und Webseiten durchsucht und zwar ähnliche Themen gefunden, aber eine Lösung für mein Problem hat es mir nicht gebracht...
Mein Ziel: ein Programm, mit dem ich zwei zufällige eindimensionale Arrays vom Typ integer vergleichen kann.
Mein Ansatz: ich generiere über zwei Buttons jeweils ein Array (ja man könnte es auch mit einem Button machen, aber das spielt erstmal keine Rolle
) mit 5 unterschiedlichen Zahlen zwischen 0 und 10.
Als Beispiel mal einer der beiden Buttons (der andere dann eben mit j statt i):
Code:
procedure TForm1.b_arraycreate1Click(Sender: TObject);
begin
randomize;
for i := 1 to 5 do
arr1[i] := random(10);
end;
(Hinweis dazu: die Variablen i und j sowie die Arrays arr1[i] und arr2[j] habe ich global deklariert.
Code:
var
Form1: TForm1;
arr1: array[0..5] of integer;
arr2: array[0..5] of integer;
i,j:integer;
)
Soweit, so gut. Ich habe die jeweilige Belegung der Arrays auch zum Test, ob die beiden Arrays wirklich immer wieder per Knopfdruck zufällig generiert werden, in ein Memofeld ausgeben lassen. DAS funktioniert noch.
Jetzt aber das Problem, der Vergleich beider Arrays.
Ziel: ich möchte per Knopfdruck ein Ausgabefenster erhalten, das mir mitteilt, ob eine Zahl in beiden Arrays vorkommt und falls ja, an welcher Stelle in Array 1 und an welcher Stelle in Array 2.
Hier mein Code dazu:
Code:
procedure TForm1.b_vergleichClick(Sender: TObject);
var v:boolean;
begin
for i := 1 to 5 do begin
for j := 1 to 5 do begin
if arr1[i] = arr2[j]
then
begin
v:=true;
end
else
begin
v:=false;
end;
end;
end;
if v = true
then
begin
ShowMessage('Es gibt eine Übereinstimmung in beiden Arrays! Es handelt sich um den Wert ' +IntToStr(arr1[i])+ ', der sich in Array 1 an Position ' +IntToStr(i)+ ' und in Array 2 an Position ' +IntToStr(j)+ ' befindet.');
end
else
begin
ShowMessage('Es gibt keine Übereinstimmung in beiden Arrays. Generiere doch einfach zwei neue Arrays!');
end
end;
Lazarus kriegt das auch problemlos kompiliert, nur leider zeigt der mir - egal wie die Arrays bestückt sind - an, dass es keine Übereinstimmung gibt. Auch wenn beide Übereinstimmungen haben. Noch bekloppter: wenn ich das "else" mit der Anzeige für fehlende Übereinstimmung rausnehme, funktioniert das (mehr schlecht als recht, da das Fenster nach Knopfdruck nur erscheint, wenn die Arrays gleiche Elemente enthalten) plötzlich.
Ich habe wirklich absolut keine Ahnung, woran das liegen könnte und ich würde mich sehr freuen, wenn mir hier jemand helfen könnte
Egal, ob ja oder nein, vielen Dank schon mal für's Lesen
Liebe Grüße
Delphinus