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
|
|
Guest |
Отправлено: 12.01.2005, 11:23 |
|
Не зарегистрирован
|
TStrings спасет отца русской демократии |
|
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) | что прога использует? |
идея такая в функцию передается идентификатор некотрой команды и ее параметры... внутри функции команда выбирается из БД по ее ИД и к ней приставляются ее параметры...
>> здесь ещё можно всё передать одной строкой (через разделители),
>> а в функции — нарезать...
хорошая идея — спасибо...
|
|