Results 1 to 3 of 3

Thread: (FPC) bytes worden verkeerd opgeslagen

  1. #1

    (FPC) bytes worden verkeerd opgeslagen

    Hallo,

    Volgende code zou extendeds met een bereik van [-1;1] moeten opslaan als een byte. De uitput van de writelns is correct maar de bytes die ik in het bestand vind lijken daar helemaal niet op. Heeft iemand een idee wat ik verkeerd doe?

    Code:
    {$mode Delphi}
    program test;
    
    uses SysUtils,classes;
    
    procedure saveNormals(var f: file; n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12: extended);
    var
      byteArray: Array of byte;
    begin
      setLength(byteArray,12);
      byteArray[0] := (round(n1*127)+128) and 255;
      byteArray[1] := (round(n2*127)+128) and 255;
      byteArray[2] := (round(n3*127)+128) and 255;
      byteArray[3] := (round(n4*127)+128) and 255;
      byteArray[4] := (round(n5*127)+128) and 255;
      byteArray[5] := (round(n6*127)+128) and 255;
      byteArray[6] := (round(n7*127)+128) and 255;
      byteArray[7] := (round(n8*127)+128) and 255;
      byteArray[8] := (round(n9*127)+128) and 255;
      byteArray[9] := (round(n10*127)+128) and 255;
      byteArray[10] := (round(n11*127)+128) and 255;
      byteArray[11] := (round(n12*127)+128) and 255;
      writeLn(floatToStr(n1) + ' wordt ' + intToStr(byteArray[0]));
      writeLn(floatToStr(n2) + ' wordt ' + intToStr(byteArray[1]));
      writeLn(floatToStr(n3) + ' wordt ' + intToStr(byteArray[2]));
      writeLn(floatToStr(n4) + ' wordt ' + intToStr(byteArray[3]));
      writeLn(floatToStr(n5) + ' wordt ' + intToStr(byteArray[4]));
      writeLn(floatToStr(n6) + ' wordt ' + intToStr(byteArray[5]));
      writeLn(floatToStr(n7) + ' wordt ' + intToStr(byteArray[6]));
      writeLn(floatToStr(n8) + ' wordt ' + intToStr(byteArray[7]));
      writeLn(floatToStr(n9) + ' wordt ' + intToStr(byteArray[8]));
      writeLn(floatToStr(n10) + ' wordt ' + intToStr(byteArray[9]));
      writeLn(floatToStr(n11) + ' wordt ' + intToStr(byteArray[10]));
      writeLn(floatToStr(n12) + ' wordt ' + intToStr(byteArray[11]));
      blockWrite(f,byteArray,12);
    end;
    
    var
      f: file;
    begin
      AssignFile(f,'test.bin');
      ReWrite(f,1);
      saveNormals(f,0.682318270206451,0.73105525970459,0,0,1,0,0,1,0,0.682318270206451,0.73105525970459,0);
    end.
    Ik gebruik FreePascal 2.0 op x86 Linux.

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Dit werkt ook niet in Delphi. Verschil tussen dyn array en normale arrays.

    Maak van de blockwrite : blockWrite(f,byteArray[0],12);

  3. #3
    Natuurlijk. In de rest van de code had ik het goed gedaan maar deze keer had ik er niet op gelet. Bedankt!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 7
    Last Post: 27-Jan-04, 23:56

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •