
int __fastcall CustomSortDecreaseInt(TStringList *Lista, int idx1, int idx2)
{
String cTemp1 = Lista->Strings[idx1];
String cTemp2 = Lista->Strings[idx2];
int x1 = cTemp1.Pos("^");
int x2 = cTemp2.Pos("^");
int rTemp1 = cTemp1.SubString(1, x1 - 1).Trim().ToIntDef(0);
int rTemp2 = cTemp2.SubString(1, x2 - 1).Trim().ToIntDef(0);
return -foo(rTemp1, rTemp2);
}switch(tsSort) //wybór sortowania
{
case tsIncrease: SortList->CustomSort(CustomSortIncrease); break;
case tsIncreaseInt: SortList->CustomSort(CustomSortIncreaseInt); break;
case tsDecrease: SortList->CustomSort(CustomSortDecrease); break;
case tsDecreaseInt: SortList->CustomSort(CustomSortDecreaseInt); break;
}
Mniej więcej rozumiem zastanawia mnie tylko funkcja cTemp1.Pos("^") i cTemp2.Pos("^"), jakbyś mógł napisać co ona oznacza
a i nigdzie nie widziałem przekazania wartości do funkcji idx1 oraz idx2 ale może to tylko moja nieuwaga, ale jeśli nie to co to są za wartości



for(int i = Grid->FixedRows; i < Grid->RowCount; i++)
{
temp = Grid->Cells[Col][i];
if(!temp.IsEmpty())
{
for(int z = Grid->FixedCols; z <= Grid->ColCount; z++)
{
if(Grid->Cells[z][i].IsEmpty()) Grid->Cells[z][i] = " "; //jesli komorka jest pusta dodaj biały znak
if(z != Col) //jesli z jest różne od kolumny po której sortujemy
temp = temp + "^" + Grid->Cells[z][i]; //Dodanie separatora ^ pomiędzy komórkami
}
SortList->Add(temp.SubString(0, temp.Length() - 1)); //Tworzenie listy do sortowanis
temp = ""; //wyczyszczenie temp
}
}


Cyfrowy Baron napisał(a):
Zauważ, że kod zawierał już odpowiednie rozwiązanie, lecz zamiast zera wstawiał spację:KOD cpp: UKRYJif(Grid->Cells[z][i].IsEmpty()) Grid->Cells[z][i] = " "; //jesli komorka jest pusta dodaj biały znak
Nawet było to opisane i wystarczyło tutaj zmienić:KOD cpp: UKRYJif(Grid->Cells[z][i].IsEmpty()) Grid->Cells[z][i] = "0";




switch(tsSort) //wybór sortowania
{
case tsIncrease: SortList->CustomSort(CustomSortIncrease); break;
case tsIncreaseInt: SortList->CustomSort(CustomSortIncreaseInt); break;
case tsDecrease: SortList->CustomSort(CustomSortDecrease); break;
case tsDecreaseInt: SortList->CustomSort(CustomSortDecreaseInt); break;
}int __fastcall CustomSortDecreaseInt(TStringList *Lista, int idx1, int idx2)
{
String cTemp1 = Lista->Strings[idx1];
String cTemp2 = Lista->Strings[idx2];
int x1 = cTemp1.Pos("^"); //pozycja separatora
int x2 = cTemp2.Pos("^"); //pozycja separatora
int rTemp1 = cTemp1.SubString(1, x1 - 1).Trim().ToIntDef(0);//wyciągamy wartosc z Listy usuwamy białe znaki i zamieniamy na int
int rTemp2 = cTemp2.SubString(1, x2 - 1).Trim().ToIntDef(0);
return -foo(rTemp1, rTemp2);
}int foo(int u, int i) /* funkcja pomocnicza */
{
int z = u - i;
return z;
}


foo potrzebna jest do sortowania wg. liczb. Jak widzisz funkcja ta jest wykorzystywana w funkcjach CustomSortDecreaseInt i CustomSortIncreaseInt.

Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości