Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 4 Bytes als Float betrachten (https://www.delphipraxis.net/88867-4-bytes-als-float-betrachten.html)

SnuffMaster23 22. Mär 2007 15:09

Re: 4 Bytes als Float betrachten
 
@alzaimar: so brauchst du aber immer zwei Variablen die zwischendurch auch mal möglicherweise verschiedene "Werte" haben können.
Außerdem müssen die vier Bytes direkt hintereinander im Speicher liegen, sonst geht das schief.

alzaimar 22. Mär 2007 15:19

Re: 4 Bytes als Float betrachten
 
@SnuffMaster23: Das ist schon klar, aber anstatt sich einen mit irgenwelchen Funktionen von japanischen Foren abzubrechen, dachte ich mir, ich poste mal die knappe Variante. Dessenungeachtet soll damit klar werden, das man einfach die 4 Bytes direkt in ein Single reinblastern kann.

Was allerdings dein Einwand mit den Variablen, die verschiedene Werte annehmen können, meinst, ist mir schleierhaft. Der Sinn von Variablen ist doch der, das sie... verschiedene Werte annehmen können.

Nun egal. Ist eh trivial.

SnuffMaster23 22. Mär 2007 15:31

Re: 4 Bytes als Float betrachten
 
Also ich fänds schon praktischer wenn ich die Single-Variable schreiben und dann direkt die Bytes entnehmen kann und umgekehrt.
Das geht eben bei der record-Variante weils ein und derselbe Speicher ist.

Verschiedene Variablen muss man immer vorher syncronisieren ;)

Und nebenbei, ich wär auch ohne japanische Foren drauf gekommen, aber da stands schon da^^

DelphiManiac 22. Mär 2007 15:41

Re: 4 Bytes als Float betrachten
 
@alle

Hallo also die Recordvariante von Amateurprofi ist genau das was ich gesucht habe,
einfach anzuwenden und man muss keine Typkonvertierung durchführen, da sie ja schon im Record liegen.

Also danke nochmal!!

SirThornberry 22. Mär 2007 15:43

Re: 4 Bytes als Float betrachten
 
die Variante mit dem varianten Record ist (meiner Meinung nach) die beste. Eine weitere Variante wäre mit Pointern:
Delphi-Quellcode:
var
  lDeinSingle: Single;
begin
  PByte(Cardinal(@lDeinSingle) + 0)^ := Byte4;
  PByte(Cardinal(@lDeinSingle) + 1)^ := Byte3;
  PByte(Cardinal(@lDeinSingle) + 3)^ := Byte2;
  PByte(Cardinal(@lDeinSingle) + 4)^ := Byte1;

uligerhardt 22. Mär 2007 15:57

Re: 4 Bytes als Float betrachten
 
Man könnte auch einfach ein array of Byte und nen simplen Cast nehmen:
Delphi-Quellcode:
procedure Test;
var
  bytes: array[0..3] of Byte;
  i: Integer;

  procedure WriteIt;
  var
    i: Integer;
  begin
    Write(Single(bytes): 5: 5, '= (');
    for i := 0 to 2 do
      Write(bytes[i], ', ');
    Writeln(bytes[3], ')');
  end;

begin
  Single(bytes) := Pi;
  WriteIt;

  for i := 0 to 3 do
    bytes[i] := 0;
  WriteIt;

  bytes[0] := 219;
  bytes[1] := 15;
  bytes[2] := 73;
  bytes[3] := 64;
  WriteIt;
end;
Uli.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.
Seite 2 von 2     12   

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