String Arrays

Anything Sinclair ZX Basic related; history, development, tips - differences between BASIC on the ZX80 and ZX81
Post Reply
MrVertigo
Posts: 106
Joined: Fri May 27, 2022 9:06 pm

String Arrays

Post by MrVertigo »

When you have a string array, what is the method for getting rid of the extra spaces at the end of a printed string, when the word is shorter than the length of the strings in the array?
User avatar
Paul
Posts: 1517
Joined: Thu May 27, 2010 8:15 am
Location: Germanys west end

Re: String Arrays

Post by Paul »

There is no TRIM and the Length is what you defined.
You can use a FOR loop and copy character by character if it's no space.
Or count spaces from end to beginning and then use A$(1, 1 TO B)
In theory, there is no difference between theory and practice. But, in practice, there is.
User avatar
1024MAK
Posts: 5118
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: String Arrays

Post by 1024MAK »

@ MrVertigo - you mean this problem…
637F114B-CAD8-4D56-920B-0E9AB047EABD.jpeg
(Example running on a ZX81)

Which computer are you doing this on?

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
User avatar
SafePit
Posts: 45
Joined: Mon Feb 20, 2012 7:06 pm
Location: Boise, ID
Contact:

Re: String Arrays

Post by SafePit »

One way to trim. This is a single DIM, but would work with any multiple.

5 DIM A$(5)
10 INPUT A$
20 FOR A=LEN A$ TO 1 STEP -1
30 IF A$(A)<>" " THEN GOTO 50
40 NEXT A
50 PRINT A$( TO A);"."
Image
Image
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: String Arrays

Post by XavSnap »

Hi,

Nice code SafePit!

Code: Select all

5 DIM A$(5)
10 INPUT A$
20 FOR A=LEN A$ TO 1 STEP -1
30 IF A$(A)=" " THEN NEXT A
40 LET B$=A$( TO A)
50 PRINT B$;"."
This code is not better, but avoid to repeat "A$( TO A)" at any time.

Prefer a length free data string (slower):

Code: Select all

10 LET A$="hELLOwORLDtESTiT/SaNaRRAYsPACEfREEdATAlIKEtEST"
20 FOR A=1 to 11
30 LET X=A
50 GOSUB 100
60 PRINT B$
70 NEXT A
80 STOP

100 LET B=1
102 FOR C=1 TO X
105 FOR B=B TO LEN A$
110 IF A$(B)>"Z" THEN NEXT B
120 FOR D=B TO LEN A$
130 IF A$(D)<="Z" THEN NEXT D
135 IF C<>X THEN LET B=D
140 NEXT C
145 LET B$=CHR$ (CODE A$(B-1)-128)+A$(B TO D-1)
150 RETURN
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
MrVertigo
Posts: 106
Joined: Fri May 27, 2022 9:06 pm

Re: String Arrays

Post by MrVertigo »

Thanks for all these code options! 🙏 They are ideal.
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: String Arrays

Post by XavSnap »

Code: Select all

     1  REM [HEX:\
85,89,89,89,89,89,89,89,\
89,89,89,89,89,89,89,89,\
89,89,89,89,89,89,05,00,\
82,00,00,00,00,00,00,00,\
88,05,88,88,88,88,00,29,\
26,39,26,00,29,2A,32,34,\
00,88,88,88,88,85,88,00,\
80,82,00,00,00,00,00,00,\
88,05,88,88,00,3A,38,2A,\
00,39,2D,2E,38,00,26,38,\
32,00,00,88,88,85,88,00,\
80,80,82,00,00,00,00,00,\
88,05,88,88,88,88,88,00,\
37,34,3A,39,2E,33,2A,00,\
88,88,88,88,88,85,88,00,\
80,80,80,05,00,00,00,00,\
85,8A,8A,8A,8A,8A,8A,8A,\
8A,8A,8A,8A,8A,8A,8A,8A,\
8A,8A,8A,8A,8A,8A,05,00,\
80,80,07,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
80,07,00,00,00,00,00,00,\
00,00,00,00,00,00,27,3E,\
00,3D,26,3B,38,33,26,35,\
1B,00,00,00,00,00,00,00,\
07,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,76,\
76,E7,CD,92,0D,CD,F5,0B,\
48,06,00,E7,23,7E,FE,76,\
CA,5B,00,CB,7F,28,F5,0B,\
78,B1,20,F0,23,7E,CB,7F,\
20,0D,FE,0C,28,0F,FE,01,\
20,02,3E,0B,D7,18,ED,CB,\
BF,D7,C3,5B,00,ED,5B,0E,\
40,1A,FE,76,28,DE,3E,00,\
D7,13,18,F5,11,82,40,01,\
06,06,ED,43,7B,40,D5,CD,\
F5,08,D1,62,6B,01,17,00,\
D5,CD,6B,0B,D1,EB,01,20,\
00,09,EB,ED,4B,7B,40,04,\
ED,43,7B,40,78,FE,0E,28,\
02,18,DB,01,07,06,ED,43,\
7B,40,C9 ]

     2 RAND USR 16830
     3 PAUSE 1000
     4 SCROLL 
     5 SCROLL 
     6 SCROLL 
     7 SCROLL 
     8 PRINT AT 10,0;
    10 FOR A=4 TO 1 STEP -1
    30 PRINT USR 16763,A,"«VOUS ETES DEVANT UNE MAISON£LA PORTE EST OUVERTE–VOUS ETES DANS UN COULOIR,IL Y AUNE PORTE A L¶EST ET UNE PORTE£A L¶OUEST–VOUS ETES DANS UN SALON,IL Y A£UNE PORTE A L¶OUEST–IL Y A UNE DROLE D¶ODEUR–"
    36 PRINT 
    37 PRINT "--------------------------------"
    38 PAUSE 1000
    40 NEXT A
READDATA.P
(1.67 KiB) Downloaded 113 times

Code: Select all

  1 REM °´´´´´´´´´´´´´´´´´´´´´º\
 ª       ³º³³³³ LA MAISON ³³³³°³\
 «ª      ³º³³ DU PROFESSEUR ³³°³\
 ««ª     ³º³³³³³ FOLIBUS ³³³³³°³\
 «««º    °µµµµµµµµµµµµµµµµµµµµµº\
 ««¼       PROGRAMME ECRIT PAR  \
 «¼           ALAIN BREGEON     \
 ¼         POUR MICRO-SYSTEMES.
# REM E-_____7__
     1  REM [HEX:\
2A,16,40,ED,4B,7B,40,23,\
7E,FE,76,CA,5B,00,CB,7F,\
28,F5,0B,78,B1,20,F0,23,\
7E,CB,7F,20,07,FE,0C,28,\
09,D7,18,F3,CB,BF,D7,C3,\
5B,00,ED,5B,0E,40,1A,FE,\
76,28,E4,3E,00,D7,13,18,\
F5 ]

    10 FOR A=1 TO 6
    20 POKE 16507,A
    30 PRINT USR 16514;"«IL FAUDRAIT PEUT ETRE DU FEU..–AH,AH...£VOUS ETES PRISONNIErLA GENERATRICE VIENT D·EXPLOSER LA MAISON N·EXISTE PLUS,VOUS NONPLUS–L·ASCENSSEUR NE BOUGE PAS.£IL FAUT PEUT ETRE DU COURANTŠLA PORTE VIENT DE CE FERMER£IMPOSSIBLE DE L·OUVRIrVOUS AVEZ RAISON.LA CURIOSITE£EST UN VILAIN DEFAUT..–"
    40 PRINT 
    50 PRINT 
    60 NEXT A
DISPLAY.P
(1.32 KiB) Downloaded 102 times
Last edited by XavSnap on Tue May 09, 2023 10:21 pm, edited 1 time in total.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: String Arrays

Post by XavSnap »

Code: Select all

# REM _______________________ _       
#     ______ DATA DEMO ______  _     
     1  REM [HEX:\
85,89,89,89,89,89,89,89,\
89,89,89,89,89,89,89,89,\
89,89,89,89,89,89,05,00,\
82,00,00,00,00,00,00,00,\
88,05,88,88,88,88,00,29,\
26,39,26,00,29,2A,32,34,\
00,88,88,88,88,85,88,00,\
80,82,00,00,00,00,00,00,\
88,05,88,88,00,3A,38,2A,\
00,39,2D,2E,38,00,26,38,\
32,00,00,88,88,85,88,00,\
80,80,82,00,00,00,00,00,\
88,05,88,88,88,88,88,00,\
37,34,3A,39,2E,33,2A,00,\
88,88,88,88,88,85,88,00,\
80,80,80,05,00,00,00,00,\
85,8A,8A,8A,8A,8A,8A,8A,\
8A,8A,8A,8A,8A,8A,8A,8A,\
8A,8A,8A,8A,8A,8A,05,00,\
80,80,07,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
80,07,00,00,00,00,00,00,\
00,00,00,00,00,00,27,3E,\
00,3D,26,3B,38,33,26,35,\
1B,00,00,00,00,00,00,00,\
07,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,76,\
76,E7,CD,92,0D,CD,F5,0B,\
68,61,CD,D8,09,01,04,00,\
09,23,7E,FE,76,CA,5B,00,\
FE,0C,28,09,FE,01,20,02,\
3E,0B,D7,18,EC,ED,5B,0E,\
40,1A,FE,76,CA,8B,41,3E,\
00,D7,13,18,F4,11,82,40,\
01,06,06,ED,43,7B,40,D5,\
CD,F5,08,D1,62,6B,01,17,\
00,D5,CD,6B,0B,D1,EB,01,\
20,00,09,EB,ED,4B,7B,40,\
04,ED,43,7B,40,78,FE,0E,\
28,02,18,DB,01,07,06,ED,\
43,7B,40,C9,06,ED,43,7B,\
40,C9 ]

     2 RAND USR 16815
     3 PAUSE 500
     4 SCROLL 
     5 SCROLL 
     6 SCROLL 
     7 SCROLL 
     8 CLS
     9 PRINT AT 10,0;
    10 FOR A=53 TO 50 STEP -1
    30 PRINT USR 16763,A
    36 PRINT 
    37 PRINT "--------------------------------"
    38 PAUSE 500
    40 NEXT A

# REM VOUS ETES DEVANT UNE MAISON£LA P
#     ORTE EST OUVERTE
    50  REM [HEX:\
3B,34,3A,38,00,2A,39,2A,\
38,00,29,2A,3B,26,33,39,\
00,3A,33,2A,00,32,26,2E,\
38,34,33,0C,31,26,00,35,\
34,37,39,2A,00,2A,38,39,\
00,34,3A,3B,2A,37,39,2A,1B ]


# REM VOUS ETES DANS UN COULOIR,IL Y A
#     £UNE PORTE A L_EST ET UNE PORTE
    51  REM [HEX:\
3B,34,3A,38,00,2A,39,2A,\
38,00,29,26,33,38,00,3A,\
33,00,28,34,3A,31,34,2E,\
37,1A,2E,31,00,3E,00,26,\
0C,3A,33,2A,00,35,34,37,\
39,2A,00,26,00,31,01,2A,\
38,39,00,2A,39,00,3A,33,\
2A,00,35,34,37,39,2A,0C,\
26,00,31,01,34,3A,2A,38,\
39,1B ]


# REM VOUS ETES DANS UN SALON,IL Y A£U
#     NE PORTE A L_OUEST
    52  REM [HEX:\
3B,34,3A,38,00,2A,39,2A,\
38,00,29,26,33,38,00,3A,\
33,00,38,26,31,34,33,1A,\
2E,31,00,3E,00,26,0C,3A,\
33,2A,00,35,34,37,39,2A,\
00,26,00,31,01,34,3A,2A,\
38,39,1B ]


# REM IL Y A UNE DROLE D_ODEUR.
    53  REM [HEX:\
2E,31,00,3E,00,26,00,3A,\
33,2A,00,29,37,34,31,2A,\
00,29,01,34,29,2A,3A,37,\
1B ]

DATA2.P
(1.69 KiB) Downloaded 110 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Post Reply