Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o (https://www.delphipraxis.net/166387-2-arrays-zusammengefuegt-nachtraeglich-geaendert-und-quatsch-kommt-raus-0o.html)

gORDon_vdLg 10. Feb 2012 21:34

Delphi-Version: XE

2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Guten Abend,

ich bastle gerade an nem programm welches eine Datei verifizieren soll, d.H. die Datei besteht aus verschiedenen Datenblöcken und ein Prüfsummenblock soll angefügt werden. Der Prüfsummenblock ist als statischer Array vordefiniert so das nur noch das Prüfsummenbyte modifiziert werden muss.

Ein auszug:
Delphi-Quellcode:
  //Add Checksum Block
  //ChecksumParam[10] := NewCheckSum;
  SetLength(OutFileBuffer, Length(OutFileBuffer)+Length(CheckSumParam));
  Move(CheckSumParam[0], OutFileBuffer[Length(OutFileBuffer)-Length(CheckSumParam)], Length(ChecksumParam));
  //OutFileBuffer[Length(OutFileBuffer)-11] := NewCheckSum;
  //Move(NewCheckSum, OutFileBuffer[Length(OutFileBuffer)-11], 1);
NewChecksum ist eine Byte-Variable, OutFileBuffer ist ein dynamischer Array of Byte und CheckSumParam ist ein statischer Array of Byte.

Die auskommentierten Zeilen sind 3 Versuche das olle Prüfsummenbyte in diesem vorgefertigten Block einzufügen, sind diese Zeilen auskommentiert werden die Arrays korrekt zusammengeführt. Wird eine der Zeilen wieder aktiviert werden die Arrays zwar auch zusammengeführt, jedoch nur bis zu dem nachträglich eingefügten Byte. Danach kommt Blödsinn.

Hat jemand eine Idee was da vorsich geht?

Blup 14. Feb 2012 10:06

AW: 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Ist ChecksumParam als "packed array[] of Byte" deklariert?

himitsu 14. Feb 2012 10:26

AW: 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Array of Byte sind immer gepackt, auch wenn man es nicht explizit angibt.

gORDon_vdLg 14. Feb 2012 16:07

AW: 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Bin bisher auch davon ausgegangen das die immer zusammen hängen, hatte bisher ja auch noch keine Probleme mit sowas. Aber ich kann es ja zur Sicherheit nochmal ausprobieren wenn ich zu hause bin, danke schonmal.

himitsu 14. Feb 2012 20:33

AW: 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Och, keine Sorge, ich könnte es dir auch garantieren, daß es so sein wird. (müßte nur mal meine alten Threads raussuchen, wo es um Speicherausrichtung geht)

Kurz: Bei der Speicherausrichtung gibt man die maximale Ausrichtung an.
Und kleinere Typen richten sich an ihrer kleineren Größe aus.
Ein Byte wird immer an Bytegrenzen ausgerichtet und da das Byte die kleinste Speichergröße ist, sind aufeinanderfolgende Bytes immer wie gepackt. (ein Bit zählt nicht, da es nicht direkt adressierbar ist)

gORDon_vdLg 15. Feb 2012 05:20

AW: 2 Arrays zusammengefügt, nachträglich geändert und Quatsch kommt raus 0o
 
Hast interessante Dinge zu dem Thema gepostet, habe gestern was davon gefunden. Ich werde mir das wohl mal im olly ansehen müssen, bin gestern nicht mehr dazu gekommen. Ich werd dann wohl im laufe des abends noch mal Posten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz