Announcement

Collapse
No announcement yet.

Variablen auf Speicherabbild legen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variablen auf Speicherabbild legen

    Hallo,
    ich habe eine außergewöhnliche Frage zur Speicherverwaltung von Variablen.
    Ich möchte eine Steuerung simulieren. Dazu brauche ich einen Speicherbereich, auf dem auf unterschiedlichen Adressen verschiedene Variablen abgelegt sind.
    Bsp.
    DataSeg : array[0..65535] of byte;

    Var1 : byte absolute Dataseg[20]; //byte soll ab Index 20 liegen
    Var2 : word absolute Dataseg[50]; //word soll ab Index 50 liegen
    Var3 : Rec absolute Dataseg[1999]; //byte soll ab Index 1999 liegen

    Kann man sowas in Delphi programmieren? Mit den Beispiel hier kommt immer eine Fehlermeldung.


    Wie geht das?

  • #2
    Mir fallen auf die Schnelle zwei Möglichkeiten ein:
    Code:
    procedure Test1;
    var
      DataSeg: array[0..65535] of Byte;
    
      pVar1: PByte;
      pVar2: PWord;
    begin
      FillChar(DataSeg, SizeOf(DataSeg), 0);
      pVar1 := Addr(DataSeg[20]);
      pVar2 := Addr(DataSeg[50]);
    
      pVar1^ := $FF;
      pVar2^ := 666;
    end;
    oder
    Code:
    type
      TMyRecord = record
        Filler1: array[0..19] of Byte;
        Var1: Byte;
        Filler2: array[21..49] of Byte;
        Var2: Word;
      end;
    
    procedure Test2;
    var
      DataSeg: array[0..65535] of Byte;
      Rec: TMyRecord absolute DataSeg;
    begin
      FillChar(DataSeg, SizeOf(DataSeg), 0);
      Rec.Var1 := $FF;
      Rec.Var2 := 666;
    end;

    Comment


    • #3
      Vielen Dank für die Tipps.
      Das klingt ja ganz gut.
      Mit Pointern dieser Art habe ich noch nicht viel gemacht.

      Comment

      Working...
      X