1Danke
ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
906
906
EMPFEHLEN
-
Hallo zusammen,
wie befülle ich denn ein Array aus einer C# Library?
ich habe in C#
und in VBACode :1 2 3 4 5 6
public class CKlasse{ public string text; public string[] textarray = new string[3]; }
Code :1 2 3 4
Set obj as New CKlasse obj.text = "hallo" 'so funktionierts obj.textarray(1) = "hallo" 'aber so nicht
wie mach ich das denn bei arrays?
viele Grüße,
Babatune
-
24.03.11 11:57 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Das sollte funktionieren.
Welche Fehlermeldungen bekommst du?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
ich bekomme die Fehlermeldung:
"Fehler beim Kompilieren:
Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden oder verwendet einen Typ der Automatisierung, der von Visual Basic nicht unterstützt wird."
-
24.03.11 15:51 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Du verwendest kein VB.NET?
Du verwendest COM+?
Was genau machst du?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ich hab in CSharp die C# Klasse geschrieben, und dort eingestellt 'für com interop registrieren' und comvisible="true", dadurch wird beim Erzeugen eine *.tbl erzeugt welche ich dann in VBA über 'Verweise..' einfüge.
Ich nehme mal an ich verwende somit Com+?!
Wie verwende ich VB.Net?
Viele Grüße
-
28.03.11 08:30 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi zusammen
@Babatune
Es wäre hier hilfreich, wenn du hier mal den kompletten Kontext liefern würdest, um hier mehr Klarheit zu schaffen.
@deepthroat
Tipp für die Zukunft. Stell deine Rückfragen so, dass der Threadstarter dir auch Antworten liefern kann, die dir weiterhelfen. Vor allem wenn die Erfahrung und das Knowhow auf der Gegenseite nicht so umfassen sind wie deine (und das ist hier nun mal der Fall) hilfst du allen Beteiligten weiter
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Hallo Nico,
also nochmal alles zusammen:
Ich habe in C# eine Klasse erstellt, und auf die erstellte Bilbiothek in Visual Basic verwiesen. (Ich benutze Office 2007.)
Dieser Teil soll ausgelagert bleiben, also ich hab meine Programmmethoden in C#.
Ich will nun das ganze über Access verwenden, deswegen muss ich meine benötigten Datenbankinhalte an C# übergeben.
Mein Problem ist nun dass ich es nicht schaffe ein Array in der C# Klasse zu befüllen.
Bei normalen Strings usw. klappt das noch, aber eben nicht bei Arrays.
Ich hab vereinfacht also als Code in C#
Die Befüllung mach ich in VB so: (zzzVBTester ist der Projektname)Code :1 2 3 4 5 6 7 8 9
public class VBTester { public string meinString; public string[] meinArray = new string[5]; public ... irgendwelcheMethoden(...){ ... } }
Code :1 2 3 4 5 6 7 8 9
Function TestC() Dim obj As New zzzVBTester.VBTester obj.meinString = "Hallo" ' so funktioniert es obj.meinArray(1) = "was da los" 'so nicht End Function
Wenn ich das so mache bekomme ich die Fehlermeldung:
Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht.
Viele Grüße
-
Du könntest eine Wrapper-Methode schreiben, um Array-Werte zu setzen:
Oder vielleicht funktioniert auch eine Eigenschaft:Code csharp:1 2 3 4 5 6 7 8
public class VBTester { public string meinString; private string[] meinArray = new string[5]; public void SetArrayValue(int index, String value){ meinArray[index] = value; } }
Und dann in VBACode csharp:1 2 3 4 5 6 7 8
public class VBTester { public string meinString; private string[] _meinArray = new string[5]; public string[] GetMeinArray{ get { return _meinArray; } } }
Das geht der Ursache des Problems zwar nicht auf den Grund, aber vielleicht genügt es dir ja.Code vbnet:1 2 3
Dim obj As New zzzVBTester.VBTester obj.SetArrayValue(1, "hoffentlich geht es so") obj.GetMeinArray(1) = "oder so"
hihi = -h²
-
Hallo Shakie,
ähnlich wie deine erste Methode hat ichs dann auch noch gemacht. Ich hab nur noch ein weiteren String übergeben der den Namen des Arrays enthält und dann mit einer switch-case Abfrage wird dann das dementsprechende Array befüllt.
Ich dachte das wäre etwas ungeschickt, aber wenn du es jetzt auch so vorschlägst werd ich mich wohl damit zufrieden geben
Dein zweiter Vorschlag hat mir auch sehr viel gebracht, da ich auch noch ein Problem hatte mit dem Zugriff auf ein Objekt einer weiteren Klasse.
Mit der Methode konnt ich das nun deutlich verbessern.
Also vielen Dank
-
Hallo nochmal,
ich stehe gerade wieder vor einem ähnlichen Problem. Und zwar hab ich in c# eine methode die ein Array zurückliefert, und wieder hängts bei mir dieses array in vb zu bekommen.
Ich hab in C#
Code :1 2 3 4 5
public class VBTester{ public string[] meinemethode(){ ... } }
und so will ichs haben, funktioniert aber nicht:
Code :1 2 3
Dim obj As New zzzVBTester.VBTester Dim result() as string; result = obj.meineMethode
Mir fehlt irgendwie der Einfall wie ich das wieder mit einer Wrapper Methode lösen kann...
-
Brauchst du denn unbedingt das ganze Array als solches?
Wenn ja, dann könntest du eine Wrapper-Methode verwenden, die dir jeden einzelnen Array-Eintrag ausliesst (also ein "GetArrayValue"-Analogon zu dem was ich oben "SetArrayValue" genannt habe) und dann in VBA ein neues Array zusammenbauen, indem du mittels "GetArrayValue" das Array kopierst.
EDIT: Da fällt mir noch was ein. In VBA braucht man keine Klammern (), wenn eine Methode keine Argumente bekommt, oder? Du könntest sie trotzdem mal nach dem Aufruf von "meineMethode" hinschreiben, vielleicht hilft es was.Geändert von Shakie (11.04.11 um 12:26 Uhr)
hihi = -h²
-
Ah, jetzt läufts...
hab daran die ganze Zeit rumprobiert bis ich festgestellt habe dass der Fehler doch ganz wo anders lag und die übergabe ganz normal funktioniert so wie ich es auch zuerst probiert habe.
Ich sollte mir vielleicht angewöhnen die Fehler an der richtigen Stelle zu suchen, das würde einiges an Zeit sparen
Ähnliche Themen
-
Zugriff auf Library (DirectX)
Von Cromon im Forum C/C++Antworten: 2Letzter Beitrag: 22.02.09, 22:38 -
Array-Zugriff
Von droni im Forum PHPAntworten: 3Letzter Beitrag: 21.04.08, 07:07 -
Zugriff auf array
Von anmae im Forum PHPAntworten: 2Letzter Beitrag: 11.08.06, 03:10 -
Library erstellen die eine Library nutzt
Von melmager im Forum C/C++Antworten: 5Letzter Beitrag: 27.10.04, 12:00 -
Array Key Zugriff
Von cryo im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 26.08.03, 11:28





Zitieren


Login





