verwalteter Code mit variabler Parameterliste
-
Hallo,
Danke für den Tipp.
Leider gibt es die Datentypen mit "^" nur in -NET 2005, nicht in 2003.
Ausserdem würde Dein Code nur erlauben, Parameter eines Typs (im Beispiel int) zu übergeben. Ich brauche gemischt Datentypen, ähnlich to printf ...Trotzdem vielen Dank,
Christel
-
Denn nimm' halt array <Object> ... .
-
Ja, das hatte ich mir in der Zwischenzeit auch schon überlegt, ein Array von Objects zu nehmen.
Bleibt das Problem der Methodendefinition. Wie gesagt, die "^" Notation gibt es in .NET 2003 nicht, ist etwas anders:Ein einzelnes Object als Parameter definiere ich so:
static void sendf(unsigned int level, String __gc* fmt, Object __gc* obj)
EIn Array aus Objects so:
static void sendf(unsigned int level, String __gc* fmt, Object __gc* obj[])
Im letzteren Fall muss ich dann aber aus der aufrufenden Funktion wirklich ein Array übergeben (sonst "error BC30311: Der Wert vom Typ "Integer" kann nicht zu "1-dimensionales Array von Object" konvertiert werden."). Es muss aber eine variable Argumentliste sein.
Welches Schlüsselwort muss ich eintragen, damit es wirklich eine variable Argumentliste wird?
Danke,
Christel
-
// Diese drei Puntkte vor dem Array! void paramList( ... /*<-- diese*/ /*ein beliebeiger typ*/ params[]) { // Überprüfungen auf: "params == null" und "params.Rank != 1" };
Edit: Anmerkung: ich bin mir nicht sicher, ob dies unter VS 2003 laufen wird
.NET 2003 [...] .NET 2005
Edit: 2 meines Wissens ist Mircosoft erst bei .NET 3,5
-
Hallo Rhombicosidodecahedron,
ich meine natürlich .NET 1.1 (Visual Studio 2003) ... aber Du hast mich schon verstandenDie Lösung der Preisfrage ist übrigens:
static void sendf(int level, String __gc* fmt, [ParamArray] Object __gc* objArr[])
Wieder was gelernt!
Gruß,
Christel
-
Ja, vor allem wenn die Antwort in einem nicht C++ Forum kommt *gg*
-
Ja, schade eigentlich
-
Hallo Leute, ich habe folgendes Problem:
Untenstehende Funktion wird aus der .NET Umgebung (C#) aufgerufen. Der Parameter 'testArr' enthält auch die von mir übergebenen variablen Parameter (in unserem Fall z.B. einen string = "Test" und einen int = 3). Jetzt schaut es so aus, dass ich dieses erhaltene Array vom Typ Object an die Funktion TestMessageBox weitergeben muss.
int S200Win32::Win32Ressources::NetTestMessageBox(int testType, int testIDTitle, int testIDText, ... array<System::Object^>^ testArr) { int i = TestMessageBox(iType, iIDTitle, iIDText, testArr); return i; }
TestMessageBox ist folgendermassen deklariert:
__declspec(dllimport) int TestMessageBox(int testType, int testIDTitle, int testIDText, ...);
Wie ihr sehen könnt kann die Funktion 'TestMessageBox' ebenfalls mit einer variablen Parameterliste aufgerufen werden.
Die Funktion 'TestMessageBox' soll einfach die übergebenen Parameter anzeigen (sprich den string = "Test" und den int = 3). Das funktioniert allerdings so nicht. Meine Frage daher lautet:
Weiss jemand von Euch wie man variable Parameterlisten an Funktionen, welche variable Parameter empfangen können, weitergeben kann?Mfg Kr@uti
-
Christian Kraut schrieb:
Hallo Leute, ich habe folgendes Problem:
Untenstehende Funktion wird aus der .NET Umgebung (C#) aufgerufen. Der Parameter 'testArr' enthält auch die von mir übergebenen variablen Parameter (in unserem Fall z.B. einen string = "Test" und einen int = 3). Jetzt schaut es so aus, dass ich dieses erhaltene Array vom Typ Object an die Funktion TestMessageBox weitergeben muss.
int S200Win32::Win32Ressources::NetTestMessageBox(int testType, int testIDTitle, int testIDText, ... array<System::Object^>^ testArr) { int i = TestMessageBox(iType, iIDTitle, iIDText, testArr); return i; }
TestMessageBox ist folgendermassen deklariert:
__declspec(dllimport) int TestMessageBox(int testType, int testIDTitle, int testIDText, ...);
Wie ihr sehen könnt kann die Funktion 'TestMessageBox' ebenfalls mit einer variablen Parameterliste aufgerufen werden.
Die Funktion 'TestMessageBox' soll einfach die übergebenen Parameter anzeigen (sprich den string = "Test" und den int = 3). Das funktioniert allerdings so nicht. Meine Frage daher lautet:
Weiss jemand von Euch wie man variable Parameterlisten an Funktionen, welche variable Parameter empfangen können, weitergeben kann?Mfg Kr@uti
Das wird so nicht funzen. Du musst einen gemeinsamen Nenner finden. Oder was schlaue leute auch abstraktion nennen.
Nachdem dein Problem ja eigentlich ist, ein C++/CLI spezifisches feature auf C++ zu mappen, musst du auf beiden "Hochzeiten" spielen können.
Dazu bietet sich z.b. die STL an.
Überlege dir wie du deine Parameter mittels eine liste oder array an C++ übergeben kannst -> Und bitte vergiss das C elipsis, es ist untypisiert und bringt nur Probleme mit sich.
-