Porównanie wartości editów i szukanie duplikatów

2016-05-12 18:19
Pogromca123
0

Chciałbym porównać 10 pól edycyjnych i jeżeli liczba powtórzy się w którymś z nich to wyskakuje wiadomość.
Sam napisałem coś takiego kompiluje się wszystko lecz nie działa


if strtoint(edit1.text)=strtoint(edit2.text) or strtoint(edit3.Text) or strtoint(edit4.text) or  strtoint(edit5.text)  or strtoint(edit6.text) or strtoint(edit7.text) or strtoint(edit8.text) or strtoint(edit9.text) or strtoint(edit10.text)
then
showmessage('Wpisales dwa razy lub wiecej ta sama liczbe!')

Proszę o pomoc!

Pozostało 580 znaków

2016-05-12 18:45
1

Jeśli miałbyś 100 editów (w sumie dziwny pomysł, ale co tam) to też byś napisał takiego if'a? Zapisz te liczby z editów do tablicy 10 elementowej (możesz to zrobić za pomocą pętli + http://docwiki.embarcadero.co[...]en/FindComponent_%28Delphi%29 ), posortuj a następnie sprawdź (w pętli) czy dwa sąsiadujące ze sobą elementy nie są takie same.

Pozostało 580 znaków

2016-05-12 19:42
Pogromca123
0

Ale mi pomogłeś,może poczekam na odpowiedź kogoś bardziej ogarniętego.
wolfik ..

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...

Pozostało 580 znaków

2016-05-12 19:55
2

@Mr.YaHooo dobrze podpowiedział - żeby kod wyglądał i działał sensownie, użyj np. tablicy, wpakuj tam wyniki konwersji treści pól edycyjnych i wtedy na spokojnie szukaj powtórek; Możesz się obejść bez konwersji i po prostu porównywać tekst, jednak to zależy od Twoich oczekiwań;

Wracając do problemu - kod nie działa właściwie, bo tak go zapisałeś; Pierwszy argument warunku to porównanie, reszta to wykonywanie alternatywy na zwróconym wyniku z porównania; I niby jak to ma szukać powtórzeń?

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...

Skoro jesteś mądrzejszy i wiesz lepiej, to dlaczego założyłeś wątek i prosisz o pomoc?


edytowany 2x, ostatnio: furious programming, 2016-05-12 19:56

Pozostało 580 znaków

2016-05-12 19:57
1

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...
Dokładnie jak @furious programming wspomniał. Po to aby kod wyglądał sensownie. Jeśli byś chciał to załatwić porównaniami musiałbyś porównać te elementy ze sobą:
1z2
1z3
1z4
1z5
1z6
1z6
1z7
1z8
1z9
1z10

2z3
2z4
2z5
2z6
2z7
2z8
2z9
2z10

3z4
3z5
3z6
3z7
3z8
3z9
3z10

4z5
4z6
4z7
4z8
4z9
4z10

5z6
5z7
5z8
5z9
5z10

6z7
6z8
6z9
6z10

7z8
7z9
7z10

8z9
8z10

9z10

Chyba nie chcesz mieć takiej ilości ifów??

Oczywiście można to zrobić za pomocą 2 pętli jedna w drugiej + FindComponent, ale to jest bez sensu.

Pozostało 580 znaków

2016-05-12 19:58
Pogromca123
0

Chodzi mi o poprawiony mój kod,chciałbym uniknąć tablicy.

Pozostało 580 znaków

2016-05-12 20:00
0

Twojego kodu nie da się poprawić inaczej niż wyrzucając go i pisząc od nowa, tym razem z użyciem bufora pomocniczego; Przy czym FindComponent przyda się do uzupełnienia macierzy;

Ja bym proponował, aby referencje do wszystkich editów wrzucić do jednej tablicy, następnie wyniki konwersji wrzucić do drugiej tablicy; Na koniec poszukać duplikatów w tej drugiej.


edytowany 3x, ostatnio: furious programming, 2016-05-12 20:01

Pozostało 580 znaków

2016-05-12 20:00
0

Ale popatrz ile wtedy musisz mieć porównań. Dlatego napisałem czy byś tak samo robił jakbyś tych editów miał 100.

Pozostało 580 znaków

2016-05-12 20:01
Pogromca123
0

Czyli zrobić to w tablicy,posortować i później porónywać np.

if t[1]=t[2] then ...
edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2016-05-12 20:02
0

Nie, używając pętli i algorytmu podobnego do sortowania bąbelkowego.


Pozostało 580 znaków

2016-05-12 20:05
Pogromca123
0

Nie rozumiem.

Co mam umieścić w tej pętli?

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0