Pointer auf Array

Limette

Level-2
Beiträge
282
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Hallo ich würde gerne 2 char aus einem array picken und sie dann in tempvariablen schieben. wo die 2 chars sind, weiß ich..also hier an Array[30] und [31]. Meine Frage: funktioniert das so?

Code:
LAR1 P##ARRAY
L  Länge              // 30(int)
T ToChar             // tempvariable
+1                      // +1(int)
T ToChar2            //tempvariable
 
:(

Code:
LAR1 P##ARRAY
L  Länge              // 30(int)
T B[AR1,P#0.0]     // für die richtige adresse     
LAR1
T ToChar // tempvariable
LAR1      
+1
T B[AR1,P#0.0]
LAR1                     
T ToChar2            //tempvariable
besser ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
alternativ kannst du die längenangabe auch so machen:

Code:
*
      LAR1  P##_array
      +AR1  P#30.0
//oder
      LAR1  P##_Array
      L     30                          //hier auch länge mgl.
      SLD   3                           //als byte adresse kennzeichnen
      +AR1
 
nur weil es länger ist, ist es nicht automatisch besser... wie man in diesem beispiel sieht.

vielleicht kannst du daraus was basteln:

Code:
*
      LAR1  P##_Array
 
      L     B [AR1,P#30.0]              //char an Position 30 (_Array[30]) laden
 
      T     B [AR1,P#31.0]              //in char an positon 31 transferieren

irgendwie witzig bist du schon. :D...

Code:
 L     B [AR1,P#30.0]

so würde ich es machen wenn ich immer 30 hätte. aber vllt habe ich auch mal 40 oder 50. es sollte halt dynamisch bleiben. ist das sehr viel komplizierter ?
 
alternativ kannst du die längenangabe auch so machen:

Code:
*
      LAR1  P##_array
      +AR1  P#30.0
//oder
      LAR1  P##_Array
      L     30                          //hier auch länge mgl.
      SLD   3                           //als byte adresse kennzeichnen
      +AR1


ah ok. den post habe ich noch gar nicht gesehen.

Code:
      LAR1  P##_Array
      L     30                          //hier auch länge mgl.
      SLD   3                           //als byte adresse kennzeichnen
      +AR1

mit dem müsste ich es hinbekommen. kann ja statt 30 einfach meine "länge" nehmen.
 
Code:
LAR1  P##_Array
L     Laenge                                 
SLD   3                          
+AR1
T   Ausgang // (Char)
so funktioniert es nicht. im "ausgang" steht unsinn.

Code:
LAR1  P##_Array
L     Laenge                                 
SLD   3                          
+AR1
LAR1
T   Ausgang // (Char)
so funktioniert es auch nicht. das LAR1 ist wohl doppelt gemobbelt ? ?
 
Lass den Scheiss Limette, lern lieber gleich SCL.
Ich sprech aus Erfahrung

Du willst doch nach nem halben Jahr den Mist auch noch kapieren.

Könnt in SCl so aussehen:
Als IN Parameter:

Copy2chrs als BOOL
und
Charindex als int

Code:
i=:Charindex;
IF Copy2chrs THEN
DB_Tmp.Chrs[1]=:"mein_DB".Chars[i];
i=:i+1;
DB_Tmp.Chrs[2]=:"mein_DB".Chars[i];
END_IF
 
Zuletzt bearbeitet:
Code:
LAR1  P##_Array
L     Laenge
SLD   3
+AR1
L     B [AR1,P#0.0]
T     Ausgang
Angenommen ich würde 1 Netzwerk später wieder
Code:
LAR1  P##_Array
ausführen. Steht der Pointer am Anfang des Arrays oder da wo ich in ein Netzwerk davor hinzeigen lassen habe ?
 
Zurück
Oben