![]() |
|
|
Регистрация | << Правила форума >> | 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 тип данных - тут уже не подходит. Нет повести печальнее на свете, чем повесть о заклиневшем Resete. ![]() |