Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2008, 10:20
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию Процедура с необязательным параметром

Всем доброго времени суток!

Народ кто знает подскажите плиз. Надо создать процу с необязательным входящем параметром или второму параметру присваивать определенное значение в качестве по-умолчанию если оно не передоется.
смысл такой:
Код:
type
 TCliType = (New,Edit,View);
...
procude EditCli(TypeCli: TCliType,CliID: variant);
begin
 case TypeCli of
  New: Proc1;
  Edit: Proc2(CliID);
  View: Proc3(CliID);
 end;
end;
...
// вызов в идеале
EditCli(New);
Editcli(Edit,GetVal('ID'));
EditCli(View,GetVal('ID'));
При последующем неправильном оформлении кода БАН.

как видно для вызова с параметром New передавать второй параметр не нужно. Даже не знаю как поступить может передавать типа 0 (все равно не используется)?
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.

Последний раз редактировалось Admin, 23.09.2008 в 10:28.
Ответить с цитированием
  #2  
Старый 23.09.2008, 11:07
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Параметр типа variant не может иметь значения по умолчанию.
И чего так мучиться, если Proc1 все равно не имеет параметров. Ну передать в этом случае NULL и все дела (EditCli(New, NULL).
Слово New в Delphi зарезервировано и применять его в качестве имени перечисляемого типа не корректно.
__________________
Не забывайте делать резервные копии

Последний раз редактировалось san-46, 23.09.2008 в 11:09.
Ответить с цитированием
  #3  
Старый 23.09.2008, 11:14
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

В том то и дела что null не передается. решил пока вопрос при помоши передачи нуля (0).
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #4  
Старый 23.09.2008, 12:14
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Передавай nil
Ответить с цитированием
  #5  
Старый 23.09.2008, 12:29
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Цитата:
Сообщение от Rat
Передавай nil

некатит, ошибка.

[Error] unitAgent.pas(23750): Incompatible types: 'Variant' and 'Pointer'
[Fatal Error] Agents.dpr(12): Could not compile used unit 'unitAgent1C.pas'
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #6  
Старый 23.09.2008, 12:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,090
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
procude EditCli(TypeCli: TCliType; CliID: variant = null);

Вот так. Дефолтными могут быть только последние параметры.
Еще вопрос. А зачем ты используешь вариант, когда у тебя там явный тип (Integer)?
Ответить с цитированием
  #7  
Старый 23.09.2008, 13:52
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

У меня не явный тип данных. Эт я так для примера. Использую DOA. А там может быть и Число и строка и SubStraction и все насвете.
Все равно не катит ругается все равно просит указать второе значение.

Ладно буду указывать че нить все равно использоваться не будет.
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025