Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2012, 21:29   #1
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
По умолчанию Delphi функция которая возвращает 2 значения

Помогите, у меня функция заходит на сайт и считывает 2 значения, но мне их нужно получить отдельно, для этого нужно чтобы функция вернула два значения отдельно, и я записал их в таблицу. А если запускать функцию два раза то это намного дольше, каждую страницу будет грузить два раза
gufon вне форума Ответить с цитированием
Старый 22.02.2012, 21:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используйте структуры/классы/var-параметры/etc
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.02.2012, 22:04   #3
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
По умолчанию

Можно по подробней?
gufon вне форума Ответить с цитированием
Старый 22.02.2012, 22:18   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я бы предпочел передачу через var-параметры.

сама процедура, которая должна вернуть два значения
Код:
procedure DoIt(var p1,p2:integer);
begin
 p1:=1;
 p2:=2;
end;
и код её применения(на кнопке например)
точнее это просто наглядный пример работы.
Код:
var v1,v2:integer;
begin
 v1:=Random(555);
 v2:=Random(555);
 ShowMessage(Format("%d+%d=%d",[v1,v2,v1+v2]));
 DoIt(v1,v2);
 ShowMessage(Format("%d+%d=%d",[v1,v2,v1+v2]));
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.02.2012, 22:21   #5
gufon
Форумчанин
 
Регистрация: 21.12.2010
Сообщений: 224
По умолчанию

v1 и v2 будут равнятся 1 и 2?? Или я что то не допонял, просто в delphi я не особо много чего понимаю
gufon вне форума Ответить с цитированием
Старый 22.02.2012, 22:23   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да.

но все-таки запустите код, я же специально написал что это наглядный пример.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.02.2012, 22:08   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
procedure DoIt(var p1,p2:integer);
Замечу, что если параметры чисто выходные, то лучше использовать out вместо var.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 23.02.2012, 22:26   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Если уж так нужно получить два значения именно за один проход может есть резон вернуть значение, как строку с разделителями?
Код:
function DoIt(p1, p2: integer): string;
begin
  result := inttostr(p1) + '|' + inttostr(p2);
end;
Потом разбить строку большого труда не составит. ... это я так... рассуждаю вслух
_SERGEYX_ вне форума Ответить с цитированием
Старый 23.02.2012, 22:28   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Намного лучше использовать запись, чем разделитель.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 23.02.2012, 22:35   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Замечу, что если параметры чисто выходные, то лучше использовать out вместо var.
согласен..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция, которая возвращает количество нулевых бит в символах строки. MeTeOpA Общие вопросы C/C++ 7 26.02.2011 06:31
Функция которая возвращает динамический массив gagarin0 Помощь студентам 5 19.01.2011 13:48
Функция не возвращает значения 2.0 Winlook PHP 1 10.05.2010 00:58
функция gcd, которая возвращает наибольший общий делитель двух целых чисел Jereme Общие вопросы C/C++ 2 21.01.2010 01:49
Как создать функцию, которая возвращает результат - строку типа ansistring. atg C++ Builder 2 28.10.2009 18:20