Byte Array in ACTION!


Byte Array in ACTION!

von Cash » So 11. Jan 2015, 11:56
Hi,
ich komme grad mit den byte arrays nicht klar. Ich möchte folgendes BASIC Programm in ACTION! Portieren.

Code: Alles auswählen
4 PRINT CHR$(125)
10 DIM A(3,3)
20 DIM B(3,3)
30 FOR J=1 to 3
40 FOR I=1 to 3
50 IF A(I,J)=1 THEN POSITION J*4+8,I*4+3:PRINT "X";
60 IF B(I,J)=1 THEN POSITION J*4+8,I*4+3:PRINT "0";
70 IF A(I,J)+B(I,J)=0 THEN POSITION J*4+8,I*4+3:PRINT " ";
80 NEXT I
90 PRINT
100 NEXT J

Kann mir jemand erklären was das Programm macht, ich verstehe 50,60,70 nicht. Es zählt doch von J bzw I von 1 bis 3 hoch nach jedem Durchgang. Aber wie kann dann z.b. die Abfrage in Zeile 50 IF A(I,J)=1 sein? Bedeutet das wenn nach der 1 Schleife A(1,1)=1 also beides I,J 1 sind dann das Ergebnis =1 ist?
Dann verstehe ich 70 nicht wie kann A(I,J)+B(I,J)=0 sein?
Wenn ich das so in Basic eingebe werden X0 ge Printed und dann wieder gelöscht.
1)Wie könnte man so etwas in ACTION! coden?

2)Wenn ich z.B DIM X(4) in Action umsetzten will mach ich das mit BYTE ARRAY X(4) bzw. klammer weglassen oder?
3)Wenn ich z.b. ein DIM A$(2) habe bedeutet das doch das ich 2 Bytes für den String A reserviere?

Re: Byte Array in ACTION!

von eda70 » Mo 12. Jan 2015, 17:40
Wo ist das Schnipsel denn her?
Meines Erachtens fehlt in dem Programm was: Die Befüllung der Felder/Arrays.
Nach meinem Dafürhalten (aber nicht ausprobiert) dürften die Zeilen 50 und 60 nie WAHR werden, und damit keine Ausgabe erfolgen. Die Zeile 70 dagegen ist immer WAHR.
Es sei denn, in den Feldern steht noch irgendwelcher Datenschrott ( kann das nach einem DIM sein?)

Du kannst dir ja in einem Bereich bei jedem Schritt alle Werte (I, J, A(I,J) ,B(I,J) ,ausgeben lassen.
Dein Schnippsel nutzt ja nicht den ganzen Bildschirm.
Dann siehst du einfacher, was in den Variablen passiert.

1. Vom Prinzip her sollte das nahezu 1:1 in Action auch so gehen.
2. Ja. Man muss nur mit dem Wertebereich schauen, Basic nutzt floating Point und Action "nur" Byte oder Card oder Int. - scheint in diesem Falle aber irrelevant.
3. Ja.

Edit: Habe dein Schnipsel gerade ausprobiert, es macht -wie ich vermutet habe- bei mir nichts, als den Cursor ein wenig über den Bildschirm zu schicken, es wird nichts ausgegeben.