Показать сообщение отдельно
Старый 10.08.2012, 15:09   #2
Hartmann1
AnyKey`щик
 
Регистрация: 24.06.2012
Сообщений: 16
Написано 5 полезных сообщений
(для 6 пользователей)
Ответ: Возвращение нескольких результатов из функции + Разбиение строки по символу

Сообщение от Жека Посмотреть сообщение
	Dim RETVAL_STR(cnt) ;расширяем до нужного размера
	If(cnt = 0)
		Dim RETVAL_STR(0)
		RETVAL_STR(0) = s
		Return
	EndIf
Зачем еще раз "Dim RETVAL_STR(0)" делаешь, если cnt и так будет 0? И Dim с нулем удаляет массив, нужно Dim 1 делать.

Сообщение от Жека Посмотреть сообщение
If(k = size) Then RETVAL_STR(ind) = val ;последнюю подстроку тоже
Это вообще вынести из цикла, причем без условия "If(k = size)"

Переменная k не определена как Local.

Как вариант можно передавать через параметры функции статические массивы, просто заранее определить максимальный размер, некрасиво конечно, но как вариант.

Ну а насчет затирания предыдущих результатов, если не лень, можно написать для каждого типа парсинга свой вариант

ЗЫ
По коду еще, мне кажется для длинных строк будет эффективнее сделать авторазмер массива ( как например в С++ std::vector, каждый раз в два раза ), нежели сначала делать предрасчет.
Правка: забыл что в блице нет ReDim и новый Dim удаляет старые данные.

Ну и в крайнем случае можно банки использовать, неудобно конечно что встроеного PokeString нету.
(Offline)
 
Ответить с цитированием