![]() |
![]() |
comanche |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Имеются два модуля, в первом описан тип record и массив соответствующих записей. Во втором модуле- процедура, которая сортирует этот массив.
Чтобы использовать в первом модуле процедуру второго, нужно чтобы в процедуре имелся параметр-переменная массива записей из первого модуля. Верно? Так вот, как я могу описать тип этого параметра во втором модуле? Если модуль использует другой модуль, возникает ошибка: "Cyclic uses list in interface part of unit Students", а так, второй модуль не знает что в первом модуле есть такой тип записей. Сообщение отредактировано: comanche - 29.03.2006 14:02 -------------------- Released by Demons
|
![]() ![]() |
comanche |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Реальное имя: Эдд Репутация: ![]() ![]() ![]() |
Заголовки в разделе int/imp не совпадают т.к. паскаль TMT, не расчитываю сюда код кидать.
Частичка первого модуля с описанным типом: Код Unit Students; Interface Uses CRT; Type TStudent = record Name: String[20]; AverMark: Single; Address: String[20]; Group: String[5]; end; TStudents = Array [1..10] OF TStudent; TRecords = object private Records: TStudents; Size: Byte; end; Implementation // zdes xo4u ispolzovat' proceduru sortirovki, naprimer Begin SearchByName(Records); End. Частичка модуля с процедурой: Код Unit SortSear; Interface Uses CRT, Students; Type TSortSear = object Procedure SearchByName(var RecordsToSort: TStudents); end; Implementation Procedure TSortSear.SearchByName; var Name: String[20]; i: Byte; SearchResult: Boolean; SearchCounter: Byte; begin SearchResult := False; SearchCounter := 0; TextColor(Black); For i := 4 To 6 Do begin GotoXy(1, i); ClrEOL; end; GotoXy(1, 4); WriteLn('þ Search by Name/Surname:'); Name := ReadName(WhereX+1, WhereY+1, 20); TextColor(Black); Write('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); For i := 1 To Size Do if Pos(UpperCase(Name), UpperCase(Records[i].Name)) > 0 Then begin inc(SearchCounter); SearchResult := True; {#} Write(SearchCounter:3, ')'); {#} {#} Write(Records[i].Name:21); {#} {#} Write(Records[i].Group:11); {#} {#} Write(Records[i].AverMark:11:1); {#} {#} WriteLn(Records[i].Address:25); end; if NOT SearchResult Then begin TextColor(Red); WriteLn('þ No results found!'); TextColor(Black); Write('þ Press any key to continue...'); end; ReadKey; end; End. -------------------- Released by Demons
|
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 7:25 |