Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FT_Out_Buffer (https://www.delphipraxis.net/112808-ft_out_buffer.html)

Tassilo 27. Apr 2008 15:39


FT_Out_Buffer
 
Hallo @All,

ich möchte eine Type in die Variable FT_Out_Buffer (Array of Byte)schreiben.

z.B.:

Type

tTest = Record
Cmd:Byte;
Status:Word;
end;

Var

MyTest:tTest


Jetzt möchte ist die Variable Test in das Array FT_Out_Buffer Kopieren.

Ich hoffe es ist klar was ich meine!?

Liebe Grüße
Tassilo

Klaus01 27. Apr 2008 17:55

Re: FT_Out_Buffer
 
Hallo Tassilo,

suchst Du vielleicht move?

Zitat:

Zitat von DelphiHilfe
Copies bytes from a source to a destination.

Unit

System

Category

miscellaneous routines

procedure Move(const Source; var Dest; Count: Integer);

Description

Move copies Count bytes from Source to Dest. No range checking is performed. Move compensates for overlaps between the source and destination blocks.

Whenever possible, use SizeOf to determine the count.

Ein Beispiel ist in der DelphiHilfe zu finden.
[edit] habe auch mal ein kleines Beispiel gebastelt:

Delphi-Quellcode:
  recTest = packed record
    data1 : Byte;
    data2 : Word;
  end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  ArrayTest : Array[0..5] of byte;
  rec : recTest;
  i : byte;
begin
  for i:=0 to 5 do
    ArrayTest[i] := 0;

  rec.data1:=1;
  rec.data2:=65500;
  move(rec,ArrayTest[2],SizeOf(recTest));

  Memo1.Lines.Add('Rec Size '+IntToHex(sizeof(recTest),2));
  for i:=0 to 5 do
    Memo1.Lines.Add(IntToHex(ArrayTest[i],2));

end;
Einen Hinweis noch, wenn Dein Record kein packed record ist,
dann ergibt Sizeof(recordType) die Größe von 4 Byte
und nicht wie man eigentlich erwarten würde von 3 Byte.
[/edit]
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.

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