Zaproponuję może swoje rozwiązanie, które powinno być dla pytacza zrozumiałe;
const
INDEX_FIRST = 0;
INDEX_LAST = 9;
type
TEditsArr = array [INDEX_FIRST .. INDEX_LAST] of TEdit;
TValuesArr = array [INDEX_FIRST .. INDEX_LAST] of Integer;
Deklaracja stałych i typów; Stałw przechowują indeksy dla macierzy, natomiast typy zawierają deklaracje macierzy do przechowywania editów oraz liczb, pozyskanych po konwersji tekstu z pól edycyjnych;
var
eaEdits: TEditsArr;
vaValues: TValuesArr;
Deklaracja zmiennych - eaEdits
zawierać będzie referencje do pól edycyjnych, natomiast vaValues
wyniki konwersji;
var
intEditIdx: Integer;
begin
for intEditIdx := INDEX_FIRST to INDEX_LAST do
begin
eaEdits[intEditIdx] := FindComponent(Format('Edit%d', [intEditIdx]));
if not TryStrToInt(eaEdits[intEditIdx].Text, vaValues[intEditIdx]) then
begin
ShowMessage(Format('Edit%d nie zawiera liczby.', [intEditIdx]));
eaEdits[intEditIdx].SetFocus();
Exit();
end;
end;
Uzupełnienie macierzy wskazaniami na komponenty pól edycyjnych; Brak zabezpieczeń, więc komponenty o szukanych nazwach muszą istnieć na formularzu; W tej samej pętli następuje uzupełnienie macierzy vaValues
- jeżeli konwersja nie powiedzie się, zostanie wyświetlony komunikat, następnie pole to zostanie aktywowane, a dalsze instrukcje w bloku kodu pominięte;
var
intA, intB: Integer;
begin
for intA := INDEX_FIRST to INDEX_LAST - 1 do
for intB := intA + 1 to INDEX_LAST do
if vaValues[intA] = vaValues[intB] then
begin
ShowMessage(Format('Edit%d zawiera powtórzoną liczbę.', [intB]));
eaEdits[intB].SetFocus();
Exit();
end;
Wyszukiwanie duplikatów; Po znalezieniu powtórki zostaje wyświetlony komunikat, pole z powtórką aktywowane, a dalsze instrukcje i iteracje pętli pominięte; Kod bardzo prosty, niezbyt nowoczesny, jednak ma być zrozumiały dla początkującego;
PS: Cały kod należy wpakować do jednego bloku kodu, np. zdarzenia OnClick
przycisku.