AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)
Thema durchsuchen
Ansicht
Themen-Optionen

Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)

Ein Thema von juergen · begonnen am 17. Okt 2013 · letzter Beitrag vom 18. Okt 2013
 
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)

  Alt 18. Okt 2013, 11:33
Eine Klasse TByteBuffer gab es schon: wurde 2010 innerhalb einer von Mike Heydon entwickelten und hier veröffentlichten Unit vorgestellt:
Delphi-Quellcode:
Type
  TByteBuffer = class(TObject)
  strict private type
    PByteArray = ^TByteArray;
    TByteArray = array [0..0] of byte;
  strict private
    FBufLen : integer;
    FBuffer : PByteArray;
    function GetFAddress : pointer;
    function GetFValue(AIndex : integer) : byte;
    procedure SetFValue(AIndex : integer; AValue : byte);
  public
    constructor Create(ABufferSize : integer);
    destructor Destroy; override;
    procedure Assign(ABufferPointer : pointer);
    procedure FillBytes(AValue : byte);
    // Properties
    property Address : pointer read GetFAddress;
    property BufferSize : integer read FBufLen;
    property Value[AIndex : integer] : byte read GetFValue write SetFValue;
  end;
Kommentar des Autors (M.Heydon) in der Unit:
TByteBuffer - Creates a a simple static byte array buffer that can be used as pointers to API calls or I/O functions. The Delphi dynamic "TBytes : array of byte" does not always react in the way you think when passing it as a buffer to API or I/O calls.
TByteBuffer uses GetMem and FreeMem as opposed to SetLength(arr,x) and thus passes a TRUE pointer to the actual data. TBytes will sometimes act as a pointer to a pointer to the data.


Allerdings ist in seiner Klasse keine Methode AddBytes() deklariert. Zudem wird der Puffer in der Instanz von TByteBuffer als statisches Array angelegt. Jedoch ohne größeres Problem lässt sich die Klasse derart abändern und erweitern (cf. Methode AddBytes()), dass man eine dynamische Pufferverwaltung erreicht (was ja für ein AddBytes() zwingend erforderlich ist), ohne die im o.g. Kommmentar des Autors formulierten, besonderen Ziele zu verlieren.

Leider aber ist www.delphi3000.com (bereits spätestens seit 2012) nicht mehr im INet vorhanden. Insoweit die (ursprüngliche) Implementierung genau dieser Klasse TByteBuffer zur weiteren Modifizierung von Interesse wäre, könnte ich sie zur Verfügung stellen.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr.
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