Page 1 of 1

Чем заменить GetNumb?

Posted: 2006-08-20 17:47:34
by Toolmate
Подскажите чем можно заменить вот ниже приведенную функцию:

Code: Select all

Sub GetNumb(C,I) 
var J,T,K
J=0
K=1
While K>0
  J=J+1
  If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
   If I==0 Then
    T=Val(Left(C,J))
   Else
    T=GetNumb(Right(C,Len(C)-J-1),I-1)
   EndIf
   K=0
  EndIf
wend
UO.Print(T)
return T
endsub


Из-за нее, когда чар доходит до последней точки в макре на мининг он не начинает заново обходить их.

Помница мне Grin что то советовал на счет этого, но я забыл и макр тот стер. :(

Сам макр вот отсюда: viewtopic.php?t=2624&highlight=

Posted: 2006-08-21 20:49:46
by Toolmate
up :roll:

Posted: 2006-08-21 22:20:06
by Sfagnum
приведи цепочку раздумий, в результате которых ты пришёл к такому выводу.

ЗЫ влом так просто читать чужой скрипт.

Posted: 2006-08-22 09:46:11
by Toolmate
Ну там связвнно что то с двойными пробелами т.к. точки вынесены в отдельный файл, я точно не помню что мне Grin говорил.

Posted: 2006-08-22 13:38:22
by Edred
Добавь в конец строки с числами пробел.

ЗЫ: Эта функция сделана с рекурсией. Поэтому если в строке больше 100 чисел - могут полезть проблемы. Если используешь много координат в строке - лучше замени эту функцию на мою GetWord(). Она здесь есть в каждом втором топике.

Posted: 2006-09-06 19:08:51
by Toolmate
в файле 33 координаты всего :?

выглядит этот файл c координатами вот так:

Code: Select all

1546 5464 849 -1
**************
1548 5487 851 -1


где "**********" - это остальные 31 число.

Posted: 2006-09-06 19:39:54
by Edred
Ну так я тебе сказал же. Добавь пробел в скрипте. то бишь вставь в эту (выше) функцию строчку (куда-нибудь в начало, до цикла):

Code: Select all

c = c + ' '


По идее, надо просто исправить:

Code: Select all

(J>=Len(C)-1)


на

Code: Select all

(J>=Len(C))


но это навскидку. Не тестил и не буду. Проще приписать пробел.

Posted: 2006-09-06 20:18:49
by Toolmate
В таком случае он идет просто к несуществующей точке.
№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№
Ну вобщем я сделал через другой "проход", когда он доходит до 33 тайла макр просто перезапускается. На больше мне познаний не хватило :) :P