wie gross ist dein "zip-file" -- Annahme 1408 Byte
welche Hardware verwendest Du -- aktuelle CoDeSys V2.3.9.10 - evtl. updaten
Dein Byte-Array belegt 1408 Byte, die Nullen werden mit gespeichert
Deine String-Arrays belegen jeweils 1419 Byte (11 Strings mit je 128Byte+ je 1 Byte Längeninformation), die Nullen bedeuten "String-Ende" ! Also wird der Rest leer sein.
--> Die optimale Lösung ist das Byte-Array, hier werden nur so viele Bytes alloziert wie benötigt. Zudem kannst Du in einer for-Schleife byte für byte bearbeiten.
Vielleicht hilfts ja weiter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich versuche eine ZIP-Datei in unserem Steuerungsprogramm (unter Codesys 2.1) abzulegen.
Der erste Versuch belegt extrem viel Speicherplatz (für 1408 Bytes ca. 30KB Speicherplatz)
VAR CONST
file:ARRAY[1..1408] OF BYTE := 16#50,16#4B,16#03,16#04,16#14,16#00,16#08,....,16#00,16#00;
END_VAR
Der zweite Versuch scheint, was den Speicherplatz angeht optimal zu sein:
VAR CONST
file : ARRAY[1..11] OF STRING[128] :=
'$50$4B$03$04...$14$00'
'$4D$3C$CC...$B1$87$01'
...
'$FF$FC$72$3C...$E7$CC$07';
END_VAR
Allerdings wird nach der ersten Null (beim Einloggen) der String terminiert !
Ich kann die 'echten Nullen' aber nicht vermeiden.
Der dritte Versuch belegt den doppelten Speicher von Versuch 2 und ist damit auch nur ein Kompromiss:
VAR CONST
file : ARRAY[1..11] OF STRING[128] :=
'504B0304...1400'
'4D3CCC...B18701'
...
'FFFC723C...E72C07';
END_VAR
Gibt es hier eine effektive Lösung ?
Hallo,
mir stellen sich zwei Fragen:
wie gross ist dein "zip-file" -- Annahme 1408 Byte
welche Hardware verwendest Du -- aktuelle CoDeSys V2.3.9.10 - evtl. updaten
Dein Byte-Array belegt 1408 Byte, die Nullen werden mit gespeichert
Deine String-Arrays belegen jeweils 1419 Byte (11 Strings mit je 128Byte+ je 1 Byte Längeninformation), die Nullen bedeuten "String-Ende" ! Also wird der Rest leer sein.
--> Die optimale Lösung ist das Byte-Array, hier werden nur so viele Bytes alloziert wie benötigt. Zudem kannst Du in einer for-Schleife byte für byte bearbeiten.
Vielleicht hilfts ja weiter
Hallo,
danke für die Antwort.
->Ich arbeite z.Zt. mit einer Digsy Compact E von Intercontrol.
(Eine höhere Codesys Version scheitert glaube ich daran).
->Meine ZIP-Files sind maschinenabhängig unterschiedlich groß
und können (vermutlich) mehrere KB groß werden.
Ich versuche z.Zt. die Nullen in meinem Zip-File zu ersetzen, da meine Versuche mit dem Byte Array zu sehr hohem Speicheraufwand geführt haben.
Speicheraufwendig scheint allerdings die Initialisierung zu sein, nicht das Array selbst!
Gibt es hier vielleich eine Möglichkeit ein Array effektiver zu bedaten ?