Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массив Record

Автор: Олег 26.03.2007 16:51

Есть тип рекорд вида:

Type block=Record
Nick,City:string[10];
Score:byte;
Goals:integer;
Surname:string[10]
End;
File1=file of block;
Var X:block; F:file1;


Необходимо сортировать в этом файле записи по введенному полю (Score, Goals итп)
Вопрос: как перевести введенную строку в X.строка ? То бишь чтобы можно было начать поиск по эти значениям?

Автор: volvo 26.03.2007 16:54

А зачем?

Вот так сортируется массив записей по любому полю:
http://forum.pascal.net.ru/index.php?s=&showtopic=7663&view=findpost&p=54239

Автор: Lapp 26.03.2007 17:07

Цитата(Олег @ 26.03.2007 12:51) *

как перевести введенную строку в X.строка ?

Если я правильно понял, ты хочешь, чтобы когда юзер ввел с клавиатуры, например: "Goals" - программа выполнила сортировку по полю X.Goals. Верно?

Если так, то разочарую тебя. Узноать имя переменной во время исполнения программы невозможно. Ты должен запрограммировать специальный механизм соответствия, если хочешь, чтоб оно было.
Например, можно предусмотреть дополнительные поля в записи, типа так:
Type block=Record
Nick,City:string[10];
Score:byte;
Goals:integer;
Surname:string[10]
NickName,CityName,ScoreName,GoalsName,SurnameName:string[10]
End;

а в начале программы присвоить:
with X do begin
NickName:='Nick';
CityName:='City';
...
end;

и дальше выполнять:
if s=NickName then {сортировка по NickName}
else ...

Но только это громоздкий способ..