AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten

Ein Thema von schwa226 · begonnen am 10. Mär 2011 · letzter Beitrag vom 10. Mär 2011
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten

  Alt 10. Mär 2011, 08:27
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:
function SendCommand(const Command; var Data) : Boolean; Dies deckt einmal Variante 2. ab.
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:
      function SendCommand(const Command; const Data) : Boolean; Overload;
      function SendCommand(const Command; var Data) : Boolean; Overload;
Auch ein Aufruf von SendCommand(CMD[0], nil); geht nicht, da nil nicht als var Parameter übergeben werden kann.

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:
      function SendCommand(
            const Command : PByteArray;
            const InData : PByteArray = nil;
            var OutData : PByteArray = nil
            ) : Boolean;
Geht nicht weil nil nicht als var übergeben werden kann!
Muss ich bei einem PByteArray überhaupt den Parameter als var übergeben?
Ich ändere ja eigentlich nicht den Pointer des Arrays sondern dessen Inhalt.

Also so: ?
Delphi-Quellcode:
      function SendCommand(
            const Command : PByteArray;
            const InData : PByteArray = nil;
            const OutData : PByteArray = nil
            ) : Boolean;
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten

  Alt 10. Mär 2011, 09:07
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
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#3

AW: Aufbau einer Funktion für mehrere Anwendungsmöglichkeiten

  Alt 10. Mär 2011, 09:16
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...
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:16 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