Сообщение от Жека
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 нету.