C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
функция с неизвестным количеством параметров
full_lamer
Отправлено: 12.01.2005, 11:10


Машинист паровоза

Группа: Участник
Сообщений: 225



подскажите пожалуйста — как реализовать функцию у которой заранее не известно количество передаваемых ей параметров — но известно что все параметры строкового типа?
Bond
Отправлено: 12.01.2005, 11:21


Станционный диспетчер

Группа: Участник
Сообщений: 142



Вызови хелп для "va_start". Ниже привожу пример из этого хелпа:

CODE
#include <stdio.h>
#include <stdarg.h>

/* calculate sum of a 0 terminated list */
void sum(char *msg, ...)
{
  int total = 0;
  va_list ap;
  int arg;
  va_start(ap, msg);
  while ((arg = va_arg(ap,int)) != 0) {
     total += arg;
  }
  printf(msg, total);
  va_end(ap);
}

int main(void) {
  sum("The total of 1+2+3+4 is %d\n", 1,2,3,4,0);
  return 0;
}
Bond
Отправлено: 12.01.2005, 11:23


Станционный диспетчер

Группа: Участник
Сообщений: 142



Первым параметром можешь задать количество строк, если не хочешь завершать список значением NULL smile.gif
Guest
Отправлено: 12.01.2005, 11:23


Не зарегистрирован







TStrings спасет отца русской демократии smile.gif
Guest
Отправлено: 12.01.2005, 11:35


Не зарегистрирован







QUOTE
подскажите пожалуйста — как реализовать функцию у которой заранее не известно количество передаваемых ей параметров — но известно что все параметры строкового типа?

Посмотрите реализацию стандартной точки старта C программы — функцию main
Konstantine
Отправлено: 12.01.2005, 13:34


Мастер участка

Группа: Модератор
Сообщений: 545



что прога использует? если с VCL — то передавай в TStringList-е (Guest — не в TStrings), а если чистым С, — то или через va_... (рассмотрено), или ещё один механизм есть.... щас не помню — нада конспекты с универа поднять....
кстати, здесь ещё можно всё передать одной строкой (через разделители), а в функции — нарезать....
full_lamer
Отправлено: 12.01.2005, 13:40


Машинист паровоза

Группа: Участник
Сообщений: 225



QUOTE (Konstantine @ 12/01/2005, 14:36)
что прога использует?

идея такая в функцию передается идентификатор некотрой команды и ее параметры... внутри функции команда выбирается из БД по ее ИД и к ней приставляются ее параметры...


>> здесь ещё можно всё передать одной строкой (через разделители),
>> а в функции — нарезать...
хорошая идея — спасибо...

Вернуться в Вопросы программирования в C++Builder