![]() |
Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten
Klingt etwas komisch, weiß aber nicht wie ich es besser ausdrücken soll ;)
Ich brauche eine Funktion die das kann: 1. Senden eines Commands (Array[0..4] of Byte) 2. Senden eines Commands (Array[0..4] of Byte) und senden von Data (Array of Byte) 3. Senden eines Commands (Array[0..4] of Byte) und empfangen von Data (Array of Byte) Ich möchte es Typenlos machen um Arrays of Byte oder TBytes oder PByteArrays übergeben zu können. Mein Ansatz ist zuerst einmal dieser gewesen:
Delphi-Quellcode:
Dies deckt einmal Variante 2. ab.
function SendCommand(const Command; var Data) : Boolean;
Bei Variante 1. scheitere ich nun da ich trotzdem einen Parameter für Data übergeben muss. Ein Overload geht ja auch so nicht, da Variante 2 & 3 dann nicht auseinander gehalten werden kann. Der Kompiler meckert auch bei:
Delphi-Quellcode:
Auch ein Aufruf von SendCommand(CMD[0], nil); geht nicht, da nil nicht als var Parameter übergeben werden kann.
function SendCommand(const Command; const Data) : Boolean; Overload;
function SendCommand(const Command; var Data) : Boolean; Overload; Oder sollen Typenlose Parameter generell vermieden werden? Dazu müsste ich mich halt auf einen Type festlegen. Hier wär das PByteArray wohl am besten. Dann könnte es so aussehen:
Delphi-Quellcode:
Geht nicht weil nil nicht als var übergeben werden kann!
function SendCommand(
const Command : PByteArray; const InData : PByteArray = nil; var OutData : PByteArray = nil ) : Boolean; Muss ich bei einem PByteArray überhaupt den Parameter als var übergeben? Ich ändere ja eigentlich nicht den Pointer des Arrays sondern dessen Inhalt. :gruebel: Also so: ?
Delphi-Quellcode:
function SendCommand(
const Command : PByteArray; const InData : PByteArray = nil; const OutData : PByteArray = nil ) : Boolean; |
AW: Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten
Wie wäre denn die übergabe eines Pointers? Dann müstest du den aber in der Methode immer Casten.
den kannst du dann auf standartmäßig auf nil setzten |
AW: Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten
PByteArray is ja eignetlich ein Pointer - nur das das Casten ausfällt und ich gleich auf den Inhalt der einzelenen Bytes zugreifen kann.
Ich habe es nun auf const PByteArray umgestellt. Es kann die PByteArray als konstante übergeben werden und trotzdem der Inhalt des Arrays verändern. Der Pointer auf das Array bleibt ja gleich... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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