Vb net nach c#

Andraxx

Grünschnabel
Hallo Leute

Habe ein problem mit der Umwandlung einer Vb Net Sub in eine

Code:
C# Void:

Vb Net  Code :
Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
        ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
            ByVal cbVer As Integer) As Boolean
+++++++++++++++++++++++++++++++++++++++
Public Sub LoadDeviceList(ByVal combo As ComboBox)
        Dim strName As String = Space(100)'100 Leerzeichen
        Dim strVer As String = Space(100)
        Dim bReturn As Boolean
        Dim x As Integer = 0

        Do
            '
            '   Lade Treiber und Version
            '
            bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)

            '
            ' Hinzufügen von Treiber in die ComboBox
            '
            If bReturn Then combo.Items.Add(strName.Trim)
            x += 1
        Loop Until bReturn = False
    End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++
Während hier der String 'strName' den Treibernamen zurück liefert
und zur ComboBox hinzufügt 
funktioniert es mit der  c# Void nicht
der string 'strName' liefert nichts zurück obwohl bReturn = true
c# Code
--------------------------------------------------------------------------------------------------
[DllImport("avicap32.dll")]
		static extern bool capGetDriverDescriptionA(short wDriver,string lpszName,
			int cbName,string lpszVer,int cbVer);
+++++++++++++++++++++++++++++++++++++++++++++++++++
private void LadeGeraete()
{
	string strName2 = new string(' ',100);//100 Leerzeichen
	string strVer2 = new string(' ',100);
	bool bReturn;
	short x = 0;
	//Lade Treiber und Version
	do
	{
	bReturn = capGetDriverDescriptionA(x,strName2 , 100, strVer2, 100);
		//Hinzufügen von Treiber in die ComboBox
		if(bReturn == true)
		{
			this.ComboBoxVideoGeraete.Items.Add(strName2.Trim());
			x++;
		}
	}
	while(bReturn == false);
}
+++++++++
Ist irgendetwas falsch in der c# routine warum wird hier der Treiber-
name nicht zurück geliefert :confused:

Please Help
Danke
Andraxx
 
1) Hinweis: Benutze, wenn du Code postest, auch das Codekonstrukt:
Code:
   .. CODE

2) Es gibt keine voids in c#, c, c++, java, php oder usw.. Void bedeutet Leer, also keine Rückgabe. Funktionen ohne Rückgabewert nennt man in der Regel auch "Prozedur".

3) Ich bezweifle, das deine in VB Funktion funktioniert. Da alle Parameter der API Funktionsdeklaration per ByVal, also by Value(als Wert), deklariert sind. Das heisst es werden nur Kopien der Werte übergeben. Damit Werte zurückgegeben werden können, müssen sie aber ByRef übergeben werden, damit wird eine Referenz übergeben.

In c# denke ich war es das Schlüsselwort ref.
 
Zuletzt bearbeitet:
Hallo Mage

Bei mir geht die Vb Net Prozedure einwandfrei mit ByVal .
Ich hatte auch schon ByRef ausprobiert aber dann startet das Programm und
schliesst sich gleich wieder
in C# mit ref passiert das selbe

gruß
Andraxx
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück