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 что то советовал на счет этого, но я забыл и макр тот стер. :(

Сам макр вот отсюда: https://yoko.uokit.com/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