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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.02.2012, 18:30
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию использовать объявленный тип

вот к примеру объявил тип
Код:
type
  PAI = record 
    pos: integer;
    index: integer;
  end;
и мне нужно вызвать функцию
Код:
function timer(nomer: PAI): string;

могу ли я как то вызвать не объявляя в том месте переменную PAI
Код:
var
n:PAI;
begin
n.pos:=1;
timer(n);
а проще что то вроде
Код:
timer((1,0))
не?
Ответить с цитированием
  #2  
Старый 18.02.2012, 19:03
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

PHP код:
timer(ai(1,0)) 

PHP код:
function ai(...): pai;
... 
Ответить с цитированием
  #3  
Старый 18.02.2012, 19:14
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

ну собственно так тоже можно..
значит ничего для этого нету в Delphi ?
Ответить с цитированием
  #4  
Старый 18.02.2012, 19:48
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Вы же явно указываете тип параметра. Зададите другой тип - вылетит "Неверный формат данных". А в данном случае еще и неверное количество переменных.
Так что самый простой вариант - создать функцию, как указал выше Pyro.
Ответить с цитированием
  #5  
Старый 20.02.2012, 11:29
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Явно такого нет. Но можно сделать чуть побольше кода в одном месте, что бы в остальных писать поменьше. Например так сделан TRect.
И тапы по-дельфийски надо называть в буквы T.

Код:
type
  TAI = record 
    pos: integer;
    index: integer;
  end;

function AI(Pos:Integer; Index:Integer):TAI;// добавляем вот такую функцию

...
implementation
function AI( Pos:Integer; Index:Integer):TAI;
begin // а здесь реализация
  Result.pos := Pos;
  Result.index:=Index;
end;
....

ну и потом
Код:
  timer(AI(1,0))
Ответить с цитированием
  #6  
Старый 20.02.2012, 11:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от ALexandr555
могу ли я как то вызвать не объявляя в том месте переменную PAI
да, запросто:
Код:
type
  PAI = ^TAI;
  TAI = record
    pos: Integer;
    index: Integer;
  end;

function timer(val: TAI): String;
begin
  Result:=IntToStr(val.pos)+':'+IntToStr(val.index);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption:=timer(PAI(PChar(#64#8#0#0+#220+#7#0#0))^);
  // 2112:2012
  // 2112 = 840h = 8h, 40h = 0, 0, 8, 64
  // 2012 = 7DCh = 7h, DCh, 0, 0, 7, 220 
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter