|
 | | |
| Autor | Správa |
mariachi
 Užívateľ
 Založený: 10.09.2008 Príspevky: 103 Bydlisko: Bratislava
 | Zaslal: Ne 10.05.09 12:35 |   |
Zdravím. Potreboval by som pomôcť.
Na formulári mám jeden StringGrid (3sx11r) a potreboval by som zoradiť riadky podľa hodnoty v jednom stĺpci. To by nebol až taký problém pretože sa to dá spraviť jednoducho cez StringList.Short, ide ale o to že sú to čísla a ono ich zoraďuje "abecedne" a ja potrebujem aby ich zoraďovalo podľa veľkosti...
 |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Ne 10.05.09 13:38 |   |
Ja by som to spravil takto:
Všetky čísla si uložiš do poľa. Potom pole zotriediš a takto zotriedené hodnoty od najväčšieho zapíšeš do StringGird. |
| |
   |
 |
mariachi
 Užívateľ
 Založený: 10.09.2008 Príspevky: 103 Bydlisko: Bratislava
 | Zaslal: Ne 10.05.09 19:09 |   |
Lenže to mi zoradí iba čísla, ale mená hráčov ostanú nezoradené.....
Skúsil som to dvojrozmerným poľom, avšak kvôli menám hráčov to musí byť pole stringov, takže keď chcem zoradiť musím používať konverziu typov. Program mi to v pohode skompiluje, ale keď to chcem spustiť tak vypíše chybu. Procedúra vypadá asi takto:
| citácia: | procedure TTop10.Zorad;
var i,j,pom: integer;
opakovat: boolean;
pole: array [2..10,1..10] of string;
begin
for i := 1 to 2 do
for j:= 1 to 10 do
pole[i,j] := Najlepsi.Cells[i,j];
repeat
opakovat := FALSE ;
for i := 1 to 10 do
if strtoint(pole[2,i]) > strtoint(pole[2,i+1]) then
begin
opakovat := TRUE;
pom := strtoint(pole[2,i+1]);
pole[2,i+1] := pole[2,i];
pole[2,i] := inttostr(pom);
end;
until(opakovat = FALSE);
for j := 1 to 10 do
for i:= 1 to 2 do
StringGrid1.Cells[i,j] := pole[i,j];
end; |
|
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Ne 10.05.09 19:38 |   |
No myslím, že to ide aj trošku ľahšie. Skús si prerobiť svoj program takto:
Zadefinuj si record, kde budú mená hráčov a ich skóre:
| kód: | type
TTabulka = record
poradie: integer;
meno: string[100];
end; |
a deklaruj pole recordov:
| kód: | var
Tabulka: array[1..10] of TTabulka; |
Potom, ako som vyššie popísal, zotriediš prvky v poli Tabulka (pričom pristupuješ k poradiu, teda takto: Tabulka[i].poradie). A po zotriedení budeš mať zotriedené aj mená. |
| |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
| |