Fastreport 4.12

отредактировано November 2014 Раздел: FastReport 4.0
Здравствуйте. FastReport 4.12 используется в качестве Дизайнера отчетов в Лоцмане ПГС. Мне нужно создать двумерный массив в отчете с двумя
полями: ФИО и ID, потом отсортировать его по алфавиту. С одномерным все получилось, но в этом случае я имею выпадающий список отсортированных
фамилий в диалоге, но у них нет ID. Поэтому никакую информацию уже не вытянуть. Видела, что можно представить 2-мерный в виде одномерного :
"...Двумерный массив A2[0..n, 0..m] можно представить в виде одномерного A1[0..(m+1)*(n+1)-1]
Обращайтесь к ячейке A2[i,j], как A1[(i+1)*(j+1)-1]..." Но не понимаю, как в таком случае правильно в сортировке писать:

procedure QuickSort (var A: array of string; Lo, Hi: Integer);
var
x, y: string;

procedure Sort (l, r: Integer);
var
i, j: integer;
begin
repeat
x := A[(l + r) div 2];
i := l; j := r;
repeat
while CompareText( A, x ) < 0 do
inc (i);
while CompareText( A[j], x ) > 0 do
dec (j);
if i <= j then
begin
y := A; A := A[j]; A[j] := y; { поменять A и A[j] значения местами }
inc(i);
dec(j);
end;
until i > j;

if l < j then Sort (l, j);

l := i;
until l >= r;
end;

begin
Sort (Lo,Hi);
end; {QuickSort}

Нужно сортировать по алфавиту, сохранив ID.

Комментарии

  • отредактировано 22:44
    Сортировка одномерного массива выполняется однозначно, т.к. там одна строка.
    Двумерный массив - это в общем случае матрица N x M. И как её сортировать? По строкам? По столбцам?
    Если у тебя в таблице только две строки, то я считаю, лучше вообще не заморачиваться и создать 2 одномерных массива одинаковой размерности:

    A: array[0..N] of String;
    B: array[0..N] of Integer;

    Сортировка видоизменяется, но принцип такой: сортируешь A, и если A = A[j], тогда сравниваешь B и B[j], и меняешь их местами, если надо.
    Плюс, когда меняешь местами A и A[j] делай то же самое для B и B[j].
    Итог: B меняется в двух участках кода, A - в одном.

    P.S. Форматируй код. Иначе представь ситуацию, что у тебя 5000 строк кода. Как ты в них разберёшься?
  • отредактировано 22:44
    Массив из 2 колонок : ФИО и ID. А строк много - переменное количество, примерно 400. Сортировать по ФИО, но чтобы реальный ID остался при ФИО( по нему не надо сортировать).
  • отредактировано 22:44
    Вопрос сортировки массивов - это не к FastReport.
    Читай теорию, с сортировкой должен уметь работать любой человек, называющий себя программистом.

    http://edunow.su/site/content/algorithms/sortirovka_massiva
    http://www.programmersforum.ru/showthread.php?t=122381
  • отредактировано 22:44
    Вы правы.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.