TIA Zwei beliebig große Speicherbereiche Vergleichen

Philesteak

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> 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



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
 
Jedoch bin ich auf die Größe eines WStrings limitiert und ich finde es ist nicht besonders schön.
Wie groß brauchst Du es denn um Deine CPU zu crashen? 16kB sind noch nicht genug? Hat Deine CPU denn mehr als 32kB Lokaldaten-Stack pro Baustein?
Hast Du Deinen tollen Baustein schon mal mit 2 maximal großen WString ausprobiert?

Dein Baustein scheint ja der Ressourcenfresser schlechthin. Vergleiche von mehr als 16kB inklusive umkopieren von 32kB sollte man besser auf mehrere Zyklen verteilen.

Harald
 
Zurück
Oben