Announcement

Collapse
No announcement yet.

Single in Byte-Array ablegen ?

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

  • Single in Byte-Array ablegen ?

    Hallo miteinander,

    ich brauche bei folgedem Problem Hilfe :

    Mehrere Variablen (Single o. Double) sollen in einem Byte-Array abgelegt und anschließend in einem EEPROM (zu Kablibrierungszwecken) gespeichert und bei Programmstart dann wieder gelesen werden !

    Wie kann ich solch eine Variable in Ihre Bytes zerlegen ?

    Und die zweite Frage :

    Aus wieviel Bits besteht bei einer Single- bzw. einer Double-Variablen die Mantisse ?

    Ich hoffe, mir kann jemand helfen.

    Grüsse Karsten

  • #2
    zu 1.
    Aus der Delphi-Hilfe:

    var

    A: array[1..4] of Char;
    B: Integer;
    begin
    Move(A, B, SizeOf(B)); { SizeOf = safety! }
    end;

    Das währe der Teil zum Auslesen.

    Und die Größe ist in Hilfe unter real types sehr schon angegeben

    Comment


    • #3
      Hallo Karsten,

      verwende einen varianten Record, um auf die einzelnen Bytes zuzugreifen. Beispiel:

      function TForm1.GetLongHexString ( L : LongInt ) : String;
      const
      LongSize = SizeOf (LongInt); // Größe der Variablen ermitteln
      type
      LongRecord = record
      // über einen varianten Record zwei Typen auf den selben Speicherbereich mappen
      case Boolean of
      true : (L : LongInt);
      false : (ByteArr : Array[1..LongSize] of Byte);
      end;
      var
      LR : LongRecord;
      i : Integer;
      begin
      LR.L := L;
      // Wert setzen
      Result := '';
      for i := 1 to LongSize do begin
      Result := Result + IntToHex ( LR.ByteArr[i], 2 ) + ' ';
      // und byteweise auslesen.
      end;
      end;

      Funktioniert so auch für alle anderen numerischen Datentypen.

      Gruß
      Pete

      Comment


      • #4
        Hallo,

        ich danke euch für die zwei Lösungsmöglichkeiten. Das bringt mich entschieden weiter !

        Viele Grüsse

        Karste

        Comment

        Working...
        X