Announcement

Collapse
No announcement yet.

Real-Variable in String übertragen

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

  • Real-Variable in String übertragen

    Hallo,
    ich arbeite seit Jahren mit der Programmiersprache ABAL (kennt wohl kaum einer). Unter Abal gibt es einige nützliche Dinge, die ich auch unter Delphi nützen möchte.

    1. Wie declariere ich Variablen unterschiedlichen Typs, die den gleichen Platz im Hauptspeicher belegen. z.B. einen String von 255 Bytes und ein Array bestehend aus 255 1-Byte Integer?

    2. Wie kann ich Real-Variablen in einen String übertragen, so daß im String der gleiche Hex-Code steht wie in der Real-Variablen?

    Danke in voraus für die Ünterstützung
    Andreas

  • #2
    Das ist zwar alles auch in Delphi moeglich, aber du solltest dich erst vom Konzept untypisierter Variablen loesen. Das was du da machen willst schadet dem code, da du die Sicherheit, die typisierte Variablen bringt, aushebelst.<br>
    Also lerne besser Delphi, statt fremde Konzepte einzubringen

    Comment


    • #3
      zu 1.) durch TypCast, z.B.

      <pre>

      type
      PMyRecord = ^TMyRecord;
      TMyRecord = packed record
      Int: Integer;
      Float: Double;
      end;<br>

      PMyCast = ^TMyCast;
      TMyCast = packed record
      case Integer of
      0: (DoubleVar: Double);
      1: (IntegerVar: Integer);
      2: (StringVar: ShortString);
      3: (CharVar: array[0..255] of Char);
      4: (ByteVar: array[0..255] of Byte);
      5: (RecVar: TMyRecord);
      end; // need 256 Bytes space
      <br>

      procedure Test;
      var
      MySpace: ShortString; // 256 Bytes
      MyCast: TMyCast absolute MySpace;
      MyDouble: Double absolute MySpace;
      begin
      MySpace := 'Test';
      // normaler Weg
      TMyCast(MySpace).DoubleVar := 1.34;
      TMyCast(MySpace).IntegerVar := 1;
      // extended Version
      MyCast.DoubleVar := 2.34;
      MyCast.RecVar.Float := 3.34;
      // direkter TypCast ohne "Typsicherheit".
      Double(MySpace) := 4.34;
      MyDouble := 5.34;
      end;<br>

      </pre>

      Gruß Hage

      Comment

      Working...
      X