|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.10.2007, 14:24 | #11 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да кста попутный вопрос, Горынычер, ты вполне можеш использовать вместо записей класс TStringList, где каждый элемент записи будет разделен скажем ";". Тогда если первым элементом у тя будет номер группы этот класс сам отсортирует его тебе. И в файл все запишет, и прочтет правильно. Это будет лучовей, если препод по башке не даст за такие выкрутасы
I'm learning to live...
|
22.10.2007, 14:26 | #12 |
Регистрация: 22.10.2007
Сообщений: 7
|
Вот как раз цикл for i:=1 to 2 do begin для нахождения эти двух минимальных.
|
22.10.2007, 14:29 | #13 | |
Регистрация: 22.10.2007
Сообщений: 7
|
Цитата:
|
|
22.10.2007, 14:33 | #14 | ||
Форумчанин
Регистрация: 15.10.2007
Сообщений: 147
|
Цитата:
Цитата:
|
||
22.10.2007, 14:41 | #15 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Так. Вот что я тебе советую перед сохранением в файл отсортируй СтрингГрид по нужной тебе колонке Вот функа (Делфи Ворлд)
[I]procedure SortGridByCols(Grid: TStringGrid; ColOrder: array of Integer); var i, j: Integer; Sorted: Boolean; function Sort(Row1, Row2: Integer): Integer; var C: Integer; begin C := 0; Result := AnsiCompareStr(Grid.Cols[ColOrder[C]][Row1], Grid.Cols[ColOrder[C]][Row2]); if Result = 0 then begin Inc(C); while (C <= High(ColOrder)) and (Result = 0) do begin Result := AnsiCompareStr(Grid.Cols[ColOrder[C]][Row1], Grid.Cols[ColOrder[C]][Row2]); Inc(C); end; end; end; begin if SizeOf(ColOrder) div SizeOf(i) <> Grid.ColCount then Exit; for i := 0 to High(ColOrder) do if (ColOrder[i] < 0) or (ColOrder >= Grid.ColCount) then Exit; j := 0; Sorted := False; repeat Inc(j); with Grid do for i := 0 to RowCount - 2 do if Sort(i, i + 1) > 0 then begin TMoveSG(Grid).MoveRow(i + 1, i); Sorted := False; end; until Sorted or (j = 1000); Grid.Repaint; end; Это потом кемпери в файл и уже из файла выбирай две крайние записи. И радуйся...
I'm learning to live...
|
22.10.2007, 15:10 | #16 |
Регистрация: 22.10.2007
Сообщений: 7
|
To Stilet:
А можно немного описать эту процедуру, а то я не очень здорово в делфи понимаю.) |
22.10.2007, 15:34 | #17 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
ТЫ сначала попробуй, а потом уж и описать проси.
Собственно тут все просто: в цикле по всем строкам вызывается функа Sort которая сравнивает две строки, далее по результатам этой функи строка перемешается в нужное место. Кста загляни на Делфи ворлд там для этого есть много приколов
I'm learning to live...
|
22.10.2007, 21:49 | #18 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
маленький совет: называйте переменные адекватными именами (min, max если их несколько min1, min2), тогда предпод возможно не так сильно по башке даст, не такой злой будет после разбирания кода
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 22.10.2007 в 21:54. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на Delphi | evrey | Общие вопросы Delphi | 1 | 01.06.2008 20:37 |
Задача в DELPHI. | Absent | Помощь студентам | 7 | 25.02.2008 14:04 |
Задача в Delphi | Oksana11 | Помощь студентам | 3 | 22.12.2007 00:12 |
Задача! (ListBox, Delphi.) | Mr.User | Помощь студентам | 6 | 16.11.2007 08:39 |
Задача с матрицей на Delphi | POPOV | Помощь студентам | 28 | 29.10.2007 06:39 |