Philesteak
Level-1
- Beiträge
- 1
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hi ich würde gerne zwei beliebig große Speicherbereiche(in meines Fall zwei Strukturen in einem DB) miteinander vergleichen.
Ich habe mit dem nachfolgenden Code gute Ergebnisse erzieht. Jedoch bin ich auf die Größe eines WStrings limitiert und ich finde es ist nicht besonders schön.
Kennt Ihr eine bessere/passendere Lösung?(Optional noch mit optimiertem FC und DB)
Mfg Philesteak
Ich habe mit dem nachfolgenden Code gute Ergebnisse erzieht. Jedoch bin ich auf die Größe eines WStrings limitiert und ich finde es ist nicht besonders schön.
Kennt Ihr eine bessere/passendere Lösung?(Optional noch mit optimiertem FC und DB)
Mfg Philesteak
Code:
FUNCTION "Vergleich" : Void
TITLE = Array_Vergleich
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : XX
FAMILY : XX
VERSION : 0.1
VAR_INPUT
I_Array_1 : Any;
I_Array_2 : Any;
END_VAR
VAR_OUTPUT
O_Gleich : Bool;
END_VAR
VAR_TEMP
T_String_1 : WString;
T_String_2 : WString;
T_Q : Int;
END_VAR
BEGIN
NETWORK
TITLE = Array in Strings wandeln
CALL BLKMOV
{blk_type := 'Variant'}
( SRCBLK := #I_Array_1 ,
RET_VAL := #T_Q ,
DSTBLK := #T_String_1
);
CALL BLKMOV
{blk_type := 'Variant'}
( SRCBLK := #I_Array_2 ,
RET_VAL := #T_Q ,
DSTBLK := #T_String_2
);
NETWORK
TITLE = Strings vergleichen
CALL S_COMP
{src_type := 'WString', relation := 'EQ'}
( IN1 := #T_String_1 ,
IN2 := #T_String_2 ,
OUT := #O_Gleich
);
END_FUNCTION