Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Функция возвращает оценку из строки st(из файла)
- // в целочисленном типе
- // n- это порядок оценки 1,2,3
- function GetMark(st:string; n:integer):integer;
- begin
- // сначала удалим из строки всё лишнее и оставим только оценки
- delete(st,1,27);
- // теперь нужно извлечь n-ую оценку из строки
- // Более короткий вариант
- // st:=copy(st, 1 + (n-1)*2,2);
- //Всё ещё строковое представление!!!
- if n = 1 then st:= copy(st,1,2) // извлекаем первую оценку
- else if n = 2 then st:= copy(st,3,2) // извлекаем вторую оценку
- else st:= copy(st,5,2); // извлекаем третью оценку
- // Преобразуем в целое число
- GetMark := StrToInt(st);
- end;
- procedure SpecialLoadFromFile(n:integer);
- var f: textfile;
- st: string;
- index,i:integer;
- begin
- // Сначало очистим Memo1
- Form1.Memo1.Clear;
- // Подготовка файла к чению
- AssignFile(f, sf); // sf -глобальная переменная
- Reset(f);
- // Чтобы сравнивать строки, нужно чтобы хотябы одна была в Memo
- Readln(f, st); // Пусть это будет первая строка из файла который мы считываем
- Form1.Memo1.Lines.Add(st);
- While not EOF(f) do
- begin
- readln(f, st); // Построчно считываемм строки из файла
- // Находим место куда нужно вставить строку
- with Form1.Memo1 do
- begin
- index:=0;
- for i:=0 to Lines.Count-1 do
- if GetMark(st,n) >= GetMark(Lines[i],n) then index:=i+1;
- // И вставляем её туда
- Lines.Insert(index, st);
- end;
- end;
- closefile(f);
- end;
- // Это твоя функция обрабтчик
- procedure TForm1.miSortedPoOcenkeClick(Sender: TObject);
- var n:integer;
- begin
- n := StrToInt(inputbox('Номера оценки', 'Введити номер оценки для сортировки','1'));
- SpecialLoadFromFile(n);
- case MessageDlg('Сортировка прошла успешно'+#13+'Сохранить изменения?', mtConfirmation,[mbYes,mbCancel],0) of
- mrYes: miSaveClick(self);
- mrCancel:;
- end;
- end;
- // сразу предлагаю тесты
- {
- 1 Serebrochkevic RKTEN 5 1 3
- 2 Serebrochkevic RKTEN 4 2 3
- 3 Serebrochkevic RKTEN 3 3 3
- 4 Serebrochkevic RKTEN 2 4 3
- 5 Serebrochkevic RKTEN 1 5 3
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement