mojaSymfonia FORUM
https://forum.mix-soft.pl/

Move - ciekawostka
https://forum.mix-soft.pl/viewtopic.php?f=15&t=1639
Strona 1 z 1

Autor:  MMM [ 2010-01-21, 13:32 ]
Tytuł:  Move - ciekawostka

Poniżej dwie funkcje, które (teoretycznie) robią to samo. Kod2 powstał właśnie w wyniku tego, że Move To źle działa. (Sprawdzane w Handel Premium i Handel Forte).
Kod:
string sub Kod(string s)
buf = s
   if len(s) < 6 then
      Move To 3
      Insert "-"
   endif
   Kod = buf
endsub

string sub Kod2(string s)
buf = s
int i = Move 0

   if len(s) < 6 then
      Move (3-i)
      Insert "-"
   endif
   Kod2 = buf
endsub

print Kod(""),  Kod("1"),  Kod("12"),  Kod("123"),  Kod("1234"),  Kod("12345"),  Kod("123456"),  lf
print Kod2(""), Kod2("1"), Kod2("12"), Kod2("123"), Kod2("1234"), Kod2("12345"), Kod2("123456"), lf

Oczywiście można też to zrobic np. tak:
Kod:
string sub Kod3(string s)
   Kod3 = s
   if len(s) < 6 then
      Kod3 = mid(s, 1, 2 ) + "-" + mid(s, 3, 3)
   endif
endsub

Autor:  rafal [ 2010-01-21, 14:38 ]
Tytuł: 

napisz krótko jaki efekt chciałeś osiągnąć.
co to ma robić?

Autor:  MMM [ 2010-01-21, 15:00 ]
Tytuł: 

To miało na TRZECIEJ pozycji ciagu znaków wstawiać myslnik (jak w kodzie pocztowym). A powyższy kod miał pokazać złe działanie polecenia Move To (zwłaszcza dla ciągów o długości dokładnie 3 znaków).

Autor:  rafal [ 2010-01-21, 18:15 ]
Tytuł: 

chyba masz rację. dziwnie się zachowuje przy move to x gdzie x jest równy długości ciągu.

Autor:  Jarek75 [ 2010-02-02, 17:50 ]
Tytuł: 

rafal pisze:
dziwnie się zachowuje

Rafał, ująłeś to baaaardzo dyplomatycznie :-) . Ja pozwolę sobie powiedzieć wprost: jest błąd ambasicu dyskwalifikujący polecenie move to i, gdy i!=0. Dzięki za info MMM.

Autor:  rafal [ 2010-02-02, 17:53 ]
Tytuł: 

No ja uzywałem do tej pory tylko
Kod:
move to 1
i działa

Autor:  darek.007 [ 2010-03-07, 21:06 ]
Tytuł: 

zaraz dyskwalifikacja, błęty...
nudzi się kolegom


raz używacie
move 4
a raz
move to 4

a to tak mieć 1000 złotych
i oddać komuś 1000 złotych

po obu operacjach nie zawsze będziemy mieć tyle samo pieniedzy...

int i = Move 0
przesunać się o zero będąc na pierwszej pozycji - ciekawe gdzie koledzy by chcieli być?

Autor:  Jarek75 [ 2012-08-23, 11:14 ]
Tytuł:  Re: Move - ciekawostka

Workaround. Zamiast
Kod:
move to x
trzeba robić:
Kod:
move to 1
move x-1


EDIT: przed chwilą musiałem poprawić, bo machnąłem się o 1. Ale teraz chyba już dobrze. O dziwo move to 1 działa prawidłowo nawet dla ciągu 1 znakowego, czyli ustawia się przed pierwszym znakiem.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/