![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Проблема в следующем, есть к примеру 2 структуры
Код:
type TUser = record user_id : Integer; user_name : String[16]; user_mail : String[32]; user_age : Integer; cat_id : integer; end; и Код:
type TCat = record cat_id : Integer; cat_name : String[16]; user_date : String[16]; end; У меня не получается написать процедуру по чтению файла. В качестве аргументов желательно должны передаватся 1 название файла, 2 название структуры которую использовать для выборки. Проблема возникает в том как обльявлять локальную файловую переменную функции. var F :File of //здесь должен быть тип но он должен зависить от структуры которую использую. Наверняка нужно использовать указатели но я перебробовал разные комбинации не получается. Как можно реализовать такую функцию. |
|
#2
|
|||
|
|||
|
Если вы уверены, что не будете одновременно пользоваться в переменной полями обоих вариантов структуры, можно использовать условное описание вашего типа:
Код:
TUser = record
cat_id: Integer;
case View: Byte of
1: (user_id : Integer;
user_name : String[16];
user_mail : String[32];
user_age : Integer);
2: (cat_name : String[16];
user_date : String[16]);
end;Последний раз редактировалось Nyctos Kasignete, 06.06.2009 в 10:19. |
|
#3
|
||||
|
||||
|
Для решения такой проблемны (только с классами), я создавал один объект-базовый. А остальные его наследовали. В функцию передавалась переменная базового типа, а там уже приведение типов или что угодно.
в вашем случае достаточно создать 2 нужных класса. В функцию передавать переменную типа TObject. Внутри разбираетесь какой тип передан - и выполняете нужные действия. Единственный минус, что чтение с файла нужно будет ручками делать. File of тип данных - тут уже не подходит. |