TIA Arbeit mit Arrays durch Variant?

ssyn

Level-2
Beiträge
230
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe eine dumme Frage. Wie kann man durch VARIANT in FC mit Array arbeiten?

Z.B. ich habe eine Array als Eingang (Array [1..10] of Int) und eine Array als Ausgang (Array [1..10] of Int)

Code:
FC_Variant

    Input            
    ArrayIN    Variant        
    Output            
    ArrayOut    Variant        

#Element := CountOfElements (#ArrayIN);
#ErrorT := MOVE_BLK_VARIANT(SRC := #ArrayIN, COUNT := #Element, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #ArrayOut);

Okay, ich nahm die Daten von ArrayIN und lege sie in ArrayOut durch Variant. Aber wie kann ich jetzt mit ArrayOut arbeiten, z.B. manche Elemente verschieben/ändern/löschen und später als Output ausgeben ?
 
Falls es nur um ein Array of Int geht, verstehe ich nicht wieso hier ein Variant benutz wird.
Unabhängig davon, würde ich die Input-Variable auf eine lokale Variable/Struktur schreiben, mit dieser arbeiten und dann auf die Ausgangsstruktur schreiben.
Weiter würde ich bei Variant prüfen:
- ob der Aktualparameter ein Array ist
- welche Datentypen in dem Array sind
- ob Eingangsstruktur gleich Ausgangsstruktur ist
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe eine dumme Frage. Wie kann man durch VARIANT in FC mit Array arbeiten?

Z.B. ich habe eine Array als Eingang (Array [1..10] of Int) und eine Array als Ausgang (Array [1..10] of Int)

Code:
FC_Variant

    Input           
    ArrayIN    Variant       
    Output           
    ArrayOut    Variant       

#Element := CountOfElements (#ArrayIN);
#ErrorT := MOVE_BLK_VARIANT(SRC := #ArrayIN, COUNT := #Element, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #ArrayOut);

Okay, ich nahm die Daten von ArrayIN und lege sie in ArrayOut durch Variant. Aber wie kann ich jetzt mit ArrayOut arbeiten, z.B. manche Elemente verschieben/ändern/löschen und später als Output ausgeben ?
Unabhängig davon, dass ich @circlehook zustimme, kannst Du für Dein Vorhaben die Funktionen "VariantGet" und "VariantPut" (Einfache Anweisungen > Verschieben > Variant) verwenden.

VG

MFreiberger
 
Unabhängig davon, dass ich @circlehook zustimme, kannst Du für Dein Vorhaben die Funktionen "VariantGet" und "VariantPut" (Einfache Anweisungen > Verschieben > Variant) verwenden.

VG

MFreiberger
Ja, aber mit VariantGet kann man nicht auf den Wert einer Variable in einem Array zugreifen, soweit ich weiß.
Somit müsste er ja mit Move_BLK_variant die Daten in ein temp_Array_of_Int kopieren und dann damit dort weiterarbeiten, bevor er diese Temp-Daten wieder an die Ausgänge übergibt.

Bei mir wurden die allermeisten FC'c/FB's, welche ich anfangs mit Variant angedacht hatte in FC's/FB's mit Array[*] als Übergabeparameter, weil mir der interne Aufwand zu hoch war.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir wurden die allermeisten FC'c/FB's, welche ich anfangs mit Variant angedacht hatte in FC's/FB's mit Array[*] als Übergabeparameter, weil mir der interne Aufwand zu hoch war.
:unsure: ? :unsure: ? :unsure:
Kann es sein, dass Du mit aller Gewalt nach Möglichkeiten suchst, einmal mit dem DatenTyp Variant etwas sinnvolles anzufangen?

Ich bitte Dich, uns zu erzählen, ...
- was der FC tun soll,
- welche DatenTypen in dem Input-Array und dem Output-Array vorkommen können
- ob in dem Input-Array und/oder dem Output-Array der DatenTyp Variant vorkommen kann und falls ja: warum?
- ob das Input-Array mit dem Output-Array identisch ist
- ob das Input-Array mit dem Output-Array ggfs identisch sein kann
- ob das Input-Array und das Output-Array unterschiedliche - also nicht identische - Arrays sind bzw. sein müssen
- was Du mit ...
... z.B. manche Elemente verschieben/ändern/löschen und später als Output ausgeben ?
... meinst. Wie spät? Doch hoffentlich noch im selben Aufruf des FC?

Ja genau, ich will darauf hinaus, Dir den DatenTyp Variant auszureden.
Du möchtest also "Arrays mit verschiedenen Array-Elementen verknüpfen".
Was sollen wir uns konkret darunter vorstellen?
Willst Du z.B. einen Text mit einer Ganzzahl multiplizieren und daraus die QuadratWurzel als GleitkommaZahl berechnen? ;)
 
Ich möchte eine FC haben, wo kann ich Arrays mit verschiedene Array-Elementen verknüpfen

Netzwerk 1

ArrayIn [1...10] - > ArrayOut [1...10]

Netzwerk 2

ArrayIn [1...15] - > ArrayOut [1...15]

Arraygröße im FC mit Sternchen definieren? tatsächliche verknüpfte Arraydefinitionen mit lower/Upper_Bound auslesen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bitte Dich, uns zu erzählen, ...
1. - was der FC tun soll,
2.- welche DatenTypen in dem Input-Array und dem Output-Array vorkommen können
3. - ob in dem Input-Array und/oder dem Output-Array der DatenTyp Variant vorkommen kann und falls ja: warum?
4. - ob das Input-Array mit dem Output-Array identisch ist
5. - ob das Input-Array mit dem Output-Array ggfs identisch sein kann
6.- ob das Input-Array und das Output-Array unterschiedliche - also nicht identische - Arrays sind bzw. sein müssen
- was Du mit ...

1-2. FC bekommen Array mit bestimmte Daten (nun nur Int, aber könnte andere Type - DINT, REAL
3. Ich dachte, dass meine Aufgabe nur mit Variant gelöst könnte.
4-5-6. Ja, sie sind identisch, Anzahl von Elementen und Datentyp.
 
Soll der Baustein vielleicht eine Ablösung des Konstrukts aus Blockmove + 2x Anypointer werden, die im Classic "wild" zur Laufzeit mit Informationen versorgt wurden?

Da ist Huckis Vorschlag mit der direkten Zuweisung über Symbolik auf jeden Fall vorzuziehen, schon aufgrund der besseren Lesbarkeit.
 
Zurück
Oben