Есть подозрения что в падении виновата UDF
Посмотрите ее текст ибо я уже совсем не соображаю
да и в С совсем плох
-----------------------------------------------------------
// Возврат из строки str
// слова с номером по порядку number (подсчет начинается с 1)
// separator - символ разделитель Если > 1 символа то берется первый символ
// Если 0 символов или NULL то за символ разделитель берется
запятая
// если входная строка пустая (NULL) или нулевой длины то возвращается
// указатель NULL
// если number <=0 или >количества слов то возвращается
// указатель NULL
// память под результат не выделяется ==> FREE_IT в описании использовать не
надо
char* Gr_Find_Word(char* str, int* number, char* separator)
{
char* find_word;
int len_word;
int start_word;
char separator_char;
int i;
int count;
if (!separator || !*separator) separator_char=',';
else separator_char=*separator;
find_word=NULL;
if (str && *str && *number > 0)
{
for(count=1,len_word=0,start_word=0,i=0;str[i];i++)
{
if (str[i] == separator_char) {
count=count+1;
if (count == *number) start_word=i+1;
}
else {
if (count == *number) len_word=len_word+1;
}
}
if (*number <= count) {
find_word=str;
if (start_word)
for(i=start_word;str[i] && str[i] != separator_char;i++)
find_word[i-start_word]=str[i];
find_word[len_word]='\0';
}
}
return find_word;
}
-----------------------------------------------------------
Макмак