Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Byte in Speicher schreiben

  Alt 26. Apr 2006, 17:09
Ich glaube du machst einen grundlegenden Fehler.

Mit welchem Programm hast du denn die Adressen gesucht?

Bei TSearch musst du ja auswählen welcher Datentyp vorliegt. Ein Integer bei Delphi belegt z.B. immer 4 Bytes (zumindest bei 32-Bit-EXEn). Dabei enthält das letzte Byte den niedrigsten Zweierpotenwert,
Code:
00000000 00000000 00000000 00001000
heisst also z.B. 8.

Du schreibst allerdings deine 200 (Binär: 01100100) einfach ins erste Byte, so dass es dann so aussieht:
Code:
 * NEU * * ALT *   * ALT *  * ALT *
01100100 00000000 00000000 00001000
und das ergibt jetzt eine unvorstellbar grosse Zahl, nämlich:
Delphi-Quellcode:
0*2^0 ALTER WERT
0*2^1 ALTER WERT
0*2^2 ALTER WERT
1*2^3 = 8 ALTER WERT
0*2^4 ALTER WERT
...
0*2^24 //das Element dass im linken Byte als erstes kommt, also am rechtesten (*g*) steht
0*2^25
1*2^26 = 67108864 (:shock:)
0*2^27
0*2^28
1*2^29 = 536870912
1*2^30 = 1073741824
0*2^31 //das linkseste also letzte Byte

somit hat der neue Leben-Integer den Wert 1677721600 (der neue, hinzugefügte) + 8 (die Ursprüngliche Anzahl, welche nicht überschrieben wurde), also insgesammt 1677721608 und nicht 200, wie du es beabsichtigt hast. Du musst den kompletten Inhalt deiner Integer-Variable auf die nächsten 4 Bytes kopieren. Du musst aber darauf achten, dass das Leben auch evtl. ein Real-Wert sein könnte, dann musst du eben den kompletten Inhalt einer Real-Variable über die nächsten Bytes kopieren.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat