![]() |
Array über Funtion übergeben
Hi. Ich möchte aus einer Klasse mit einer Funktion Parameter (z.B. Arrays) an eine externe Klasse übergeben.
Hier meine Deklaration.
Delphi-Quellcode:
Alle Parameter haben dann einen Wert zugewiesen bekommen. Nun möchte ich diese mit einer Funktion übergeben:
type
CMessroutinen = class(CKALResource) private m_ParameterA : array[1..7] of Double; m_ParameterB : array[1..7] of Double; m_ParameterR0 : array[1..7] of Double; m_ThType1 : String; m_ThType2 : String; m_ThType3 : String; m_PLC : Integer; m_Messzyklus : Integer; m_Toleranz : Double;
Delphi-Quellcode:
Wieso kann ich die Array nicht übergeben?
function CMessroutinen.ParameterUebergeben(var ParameterA, ParameterB,
ParameterR0:array of Double; var ThType1, ThType2, ThType3:String; var Toleranz:Double; var Messzyklus, PLC:Integer): boolean; begin ParameterA := m_ParameterA; //Hier kommt der Fehler E2008 : Inkompatible Typen ParameterB := m_ParameterB; //Hier kommt der Fehler E2008 : Inkompatible Typen ParameterR0:= m_ParameterR0; //Hier kommt der Fehler E2008 : Inkompatible Typen ThType1 := m_ThType1; ThType2 := m_ThType2; ThType3 := m_ThType3; Toleranz := m_Toleranz; Messzyklus := m_Messzyklus; PLC := m_PLC; result := true; end; |
Re: Array über Funtion übergeben
Du musst dir einen eigenen Typen deklarieren:
Delphi-Quellcode:
type
TDoubleArray = array of Double; var MyDblArray: array[0..9] of TDoubleArray; |
Re: Array über Funtion übergeben
Danke für deine schnelle Antwort.
Aber auch damit zeigt er mir den Fehler an. Habe eben nochmal ein bisschen im Forum gesucht und sowas gefunden
Delphi-Quellcode:
Das geht aber auch nicht.
ParameterA := Copy(m_ParameterA, 0, 7);
|
Re: Array über Funtion übergeben
Hast du m_Parameter... auch auf den neuen Typ umgestellt?
|
Re: Array über Funtion übergeben
Wenn du doch die Klasse CMessroutinen hast, warum willst du dann alle internen Felder mit einem Methodenaufruf übergeben ?
Überlicherweise wird bei der Objektorientierten Programmierung so gearbeitet, dass man Properties "in alle Ruhe" der Reihe nach bestücken kann und dann irgendwelche Methoden aufruft. Das alles darf auch in gemischter Reihenfolge stattfinden. Zur Übergabe von grosseren Datenmenge bieten sich wiederum eigene Hilfsklassen an. Wenn ich die Klasse CMessroutinen (der Name sollte übrigen nach Delphi-Konvention mit einem "T" beginnen) so anschaue, dann gehören ParameterA, ParameterB und ParameterR0 zusammen in einen Record oder Klasse. Von diesem Record oder Klasse gibt es dann 7 Stück (es könnten aber auch mehr sein). Man müsste aber den technischen Hintergrund kennen, um die Daten richtig in OO Datenstrukturen übersetzen zu können. Kurz noch zu deiner Frage: Es gibt statische und dynamische Arrays. Statische Arrays haben feste Grenzen, dynamische Arrays werden zur Laufzeit mit SetLength() dimensioniert. Beide Arrayarten sind nicht zuweisungskompatibel!! Also:
Delphi-Quellcode:
type
TMessaray = array[1..7] of Double; CMessroutinen = class(CKALResource) private m_ParameterA : TMessaray; m_ParameterB : TMessaray; m_ParameterR0 : TMessaray; function CMessroutinen.ParameterUebergeben(var ParameterA, ParameterB, ParameterR0:TMessaray; |
Re: Array über Funtion übergeben
Zitat:
ABER: Es funktioniert nur in dieser einen Richtung. |
Re: Array über Funtion übergeben
Danke!!! Es klappt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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