![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| stalkerok |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
Добрый день! как в Delphi передать тип данных в процедуре, например:
есть несколько типов
Как в процедуре передать тип?
|
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
вижу несколько вариантов:
1. Простой - Написать 3 перегруженных процедуры, каждая из которых работает со своим типом. 2. Более сложный - усложнить структуру. ввести поле "тип данных" и поле-указатель на сами данные, а в процедуре уже разбираться, что пришло. 3. Отказаться от записей и процедур и перейти на ООП. -------------------- There are always someone smarter than you... |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
4. Перейти на D2009 и использовать дженерики
-------------------- Обижено школьников: 8 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
а с дженериками как бы решение выглядело? я просто еще "не перешел" и "не использовал" ))) -------------------- There are always someone smarter than you... |
|||
|
||||
| stalkerok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
bems я на 2009, да действительно как бы это выглядело?
|
|||
|
||||
| bems |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
ну это зависит от того, что именно нужно )))
например что-то такое
Глобальные переменные тут только потому что у топикстартера это процедура с одним параметром (типом). А вообще можно и что-то такое
ну и ниже в коде как-то так:
-------------------- Обижено школьников: 8 |
||||||
|
|||||||
| stalkerok |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
разбирался... так и не получается... я хочу написать процедуру сохранения масивов в файл с разными типами
типы
а вот процедура
и затем просто вызывать её
Это сообщение отредактировал(а) stalkerok - 12.12.2008, 00:46 |
||||||
|
|||||||
| stalkerok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
Может поможет кто.
|
|||
|
||||
| elvis79 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.11.2008 Где: Украина, Ивано-Фр анковск Репутация: нет Всего: нет |
Array -- это массив записей (array of DotRec, array of LinkRec, array of NameGridRec)
Если я правильно понял, то я б организовал через TObjectList. А также создал предка с виртуальными методами и от него породил бы DotRec, LinkRec и NameGridRec. Реализация методов была в каждом предке своя
Реализация
если заинтересует пиши, помогу |
||||
|
|||||
| stalkerok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
elvis79 Спасибо!
Насколько я понял всё равно придётся писать для каждого типа данных свою процедуру и эти процедуры будут одинаковые(в моём случае с сохранением массива в файл) а отличаться будут в процедурах только тип используемых переменных, а если типов данных 10 то писать 10 одинаковых процедур? Но если использовать дженерики, там только написать одну процедуру, при вызове которой передавать тип данных? заранее Спасибо! |
|||
|
||||
| NewDima |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
ну и сумбур
звать так:
такой процедуре корми что захочешь, Но мой тебе совет, не используй эти функции:
большие структуры будут долго писаться (пишутся то по байтам), используй CreateFile, WriteFile
как вишь, никакого цикла, скорость большая, но есть ограничение записываемого буфера. использование даже изменять не надо Это сообщение отредактировал(а) NewDima - 17.12.2008, 07:43 |
||||||||
|
|||||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
я дальше код привел, еще раз вставить?=)
найди пять различий а вообще, гибкость и расширенные возможности Это сообщение отредактировал(а) NewDima - 15.12.2008, 16:17 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
NewDima, не вижу преимущества в приведенном коде. кто виноват, что ты объявил типизированный файл в первом варианте?
-------------------- There are always someone smarter than you... |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
с типизацией файла начал топикстартер.
рады? Я сторонник WinAPI и его гибкости; Это сообщение отредактировал(а) NewDima - 17.12.2008, 07:50 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |