PRINT "ABC"D, czyli po co ta spacja?

Szukasz drobnej pomocy przy kodowaniu, albo chcesz przedstawić światu swoją gotową lub w trakcie realizacji produkcję? To właściwy dział.
Wiadomość
Autor
r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

PRINT "ABC"D, czyli po co ta spacja?

#1 Post autor: r-tea »

Witajcie.
Nieoczekiwanie odnalazłem moją grę, którą jakieś 20 lat temu zrobiłem w Basic v2, i postanowiłem ją dokończyć, bo ciut jej brakuje do całości.
Napotkałem taki oto problemik.

Kiedy po komendzie PRINT zapodam ciąg znaków w cudzysłowiu, i zaraz po nim zmienną liczbową, to Basic wstawia między te dwa argumenty spację, a ja potrzebuję, by liczba wyświetlała się zaraz po ciągu znaków.
Np.
20 L=3
30 PRINT"LICZBA:"L

Dostaję:
Liczba: 3

A chcę:
Liczba:3

Jest coś w PRINT czego nie znam, czy trzeba tu będzie wymyśleć jakieś obejście?

Awatar użytkownika
Steffan
Posty: 853
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: PRINT "ABC"D, czyli po co ta spacja?

#2 Post autor: Steffan »

Witaj!
Wiec od początku.
Bejzik komody do liczb rzutowanych do stringa doda spacje na początku.

Będę stosował dolną kreskę "_" zamiast spacji aby było widać o co chodzi.
Np:

Kod: Zaznacz cały

a=10
?a
da nam wynik
_10

(przypominam kreska to spacja)

idąc dalej:

Kod: Zaznacz cały

a=22
?len(str$(a))
da nam wynik

_3 (a nie 2 jakby się mogło wydawać)

wiec wszystko co musisz zrobić to pozbyć się tej spacji z przodu!
w Twoim przykładzie:

Kod: Zaznacz cały

20 L=3
30 PRINT"LICZBA:"+RIGHT$(STR$(L),LEN(STR$(L))-1)
Masz tam 2x wywołanie STR$() wiec lepiej rozbić to do dodatkowej linii, aby działało szybciej

Kod: Zaznacz cały

20 L=3
25 L$=STR$(L)
30 PRINT"LICZBA:"+RIGHT$(L$,LEN(L$)-1)
Mam nadzieję, że nie zamotałem.
Pozdro
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

Re: PRINT "ABC"D, czyli po co ta spacja?

#3 Post autor: r-tea »

Dziękuję. Czyli jednak nie zapomniałem wiele z naszego Basic v2. :D i trzeba zrobić obejście.
Jeszcze raz dzięki.

r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

Re: PRINT "ABC"D, czyli po co ta spacja?

#4 Post autor: r-tea »

Działa :)
Obrazek

Awatar użytkownika
Steffan
Posty: 853
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: PRINT "ABC"D, czyli po co ta spacja?

#5 Post autor: Steffan »

r-tea pisze:
16 wrz 2020, 23:55
Działa :)
Brawo! Kiedy gramy?
Pozdro
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

Re: PRINT "ABC"D, czyli po co ta spacja?

#6 Post autor: r-tea »

Jest szansa, że w tym roku. Patrząc optymistycznie.

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: PRINT "ABC"D, czyli po co ta spacja?

#7 Post autor: carrion »

fajne.
Już wiem o czym będzie jeden z kolejnych artykułów...
odezwę się do Ciebie r-tea na PM za chwilę.
c64portal.pl, retronavigator.com

r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

Re: PRINT "ABC"D, czyli po co ta spacja?

#8 Post autor: r-tea »

Spoko.

Mam jeszcze pytanie o kody specjalne typu {rvs on}, które produkuje petcat. W manualu do petcat znalazłem tylko te podstawowe, np. do zmiany kolou, poruszania kursora, włączania rewersu, a mi chodzi o semigrafikę. Zaczynają się one od "CBM-", i kilka z nich mam już w kodzie.
Czy jest gdzieś jakaś gotowa tabelka?

Beda
Posty: 25
Rejestracja: 21 gru 2012, 04:41

Re: PRINT "ABC"D, czyli po co ta spacja?

#9 Post autor: Beda »

Hejka.
Dawno już się nie bawiłem Basicem, ale czy nie prościej było by zastosować średnik ;.
Tak mi się wydaje, że do 30 PRINT"LICZBA:"L wystarczy dodać średnik, czyli 30 PRINT"LICZBA:";L
To tak z pamięci po 20 latach, więc może coś pomyliłem :)

Awatar użytkownika
Steffan
Posty: 853
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: PRINT "ABC"D, czyli po co ta spacja?

#10 Post autor: Steffan »

Beda pisze:
20 wrz 2020, 01:38
Hejka.
Dawno już się nie bawiłem Basicem, ale czy nie prościej było by zastosować średnik ;.
Tak mi się wydaje, że do 30 PRINT"LICZBA:"L wystarczy dodać średnik, czyli 30 PRINT"LICZBA:";L
To tak z pamięci po 20 latach, więc może coś pomyliłem :)
Pierwsza moja myśl była taka sama, ale nie, nie wystarczy. Oczywiście nie zarzekam się, że kodu który dałem wyżej nie da się zrobić inaczej (prościej).

Pozdro
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

r-tea
Posty: 29
Rejestracja: 06 lis 2018, 00:00

Re: PRINT "ABC"D, czyli po co ta spacja?

#11 Post autor: r-tea »

Beda pisze:
20 wrz 2020, 01:38
Hejka.
Dawno już się nie bawiłem Basicem, ale czy nie prościej było by zastosować średnik ;.
Tak mi się wydaje, że do 30 PRINT"LICZBA:"L wystarczy dodać średnik, czyli 30 PRINT"LICZBA:";L
To tak z pamięci po 20 latach, więc może coś pomyliłem :)
Średnik przyłączy argument do tej samej linii, ale spacji nie usunie.

przemo.bundy
Posty: 7
Rejestracja: 30 wrz 2017, 14:37

Re: PRINT "ABC"D, czyli po co ta spacja?

#12 Post autor: przemo.bundy »

można użyć komendy chr$()
spis kodów jest dostępny w internecie. chr$() manipuluje znakami na ekranie, pomimo że nie widać kursora. gdy działa program.
ponadto to jest jakiś bug basica. na youtube: jest kanał: 8 bit show and tell.
był filmik o tym. pozdrawiam...

ODPOWIEDZ