Fragen zum Array

discoboy

Mitglied
Servus

1. Frage

Ich will ein array (Werte) an eine meine Com-Schnittstelle senden.
hat einer ne Idde wie ich den Syntax verkürzen kann?
Mein Syntax:

comspeicher = Chr(&HFF) & Chr(&H0) & Chr(&H0) & Chr(&H58) & _
Chr(Werte(0)) & Chr(Werte(1)) & Chr(Werte(2)) & Chr(Werte(3)) & Chr(Werte(4)) & _
Chr(Werte(5)) & Chr(Werte(6)) & Chr(Werte(7)) & _Chr(Werte(8)) & Chr(Werte(9)) & _
Chr(Werte(10)) & Chr(Werte(11)) &.........Chr(Werte(255))

Zuerst schicke ich 1 anweisungszeile (blau) (unwichtig)
Jetzt kommt nein array (Werte)
Es muss immer der Befehl "& Chr" davor stehen

Mein Versuch:

for X = 0 to 255
comspeicher = Chr(&HFF) & Chr(&H0) & Chr(&H0) & Chr(&H58) & _
Chr(Werte(X ))
next X

Geht wahrschienlich nicht weil jeder Wert einzeln an die Schittstelle geschickt wird.
Hat einer nen Vorschlag?

2.Frage

Kann ich mehrere kleine Arrays über Schleifen in ein großes Array schreiben

So stell ich´s mir vor:

Dim Adresse1 (0 to 9)
Dim Adresse2 (0 to 9)
Dim gesamtAdresse (0 to 19)

gesamtAdresse (0 to 9) = Adresse1 (0 to 9)
gesamtAdresse (10 to 19) = Adresse2 (0 to 9)

Vielen Dank!
 
Zu Frage 1:
Visual Basic:
' Nr einmal ausführen
comspeicher = Chr(&HFF) & Chr(&H0) & Chr(&H0) & Chr(&H58)

for X = 0 to UBound(Werte)
     ' Wert an vorhanden Zeichenkette anhängen
     comspeicher = comspeicher & Chr(Werte(X ))
next X
 
Zur Frage 2:

Ja klar unter der Vorraussetzung die Arrays haben den gleichen Datentyp.
Visual Basic:
' Als erstes einen Array über die gesamten länge dimensionieren:
Dim arrayAlles() as ?

ReDim arrayAlles(UBound(Adresse1) + UBound(Adresse2))

CopyIntoArray(arrayAlles, Adresse1, 0)
CopyIntoArray(arrayAlles, Adresse2, UBound(Adresse1)+1)


' Hilfsfunktion
Sub CopyIntoArray(ByRef zielarray() as ?, ByRef quellarray() as ?, positionAb as Integer)  

Dim i as integer

For i = 0 To UBound(quellarray)
      zielarray(positionAb + i) = quellarray(i)
Next i
End Sub

Anmerkung: Die Funktion UBound gibt dir die oberste Grenze des Array zurück. Das kann man einfach so verwenden unter der Vorraussetzung:
1.) Der Array wurde dimensioniert, bei einem undimensionierten Array wird ein Laufzeitfehler erzeugt
2.) Die Arrays beginnen bei 0, ansonsten muss man für die Berechnungen noch LBound() (untere Arraygrenze) verwenden und dann mit der Differenz arbeiten.
 
Zurück