Entwickler-Ecke
C# - Die Sprache - C#2010 Express --> Code aus VB.Net einsetzen.
Aiko07 - Sa 07.04.12 09:10
Titel: C#2010 Express --> Code aus VB.Net einsetzen.
Hallo Forenmitglieder,
ich bin nicht neu in der community, allerdings bin ich bisher nur in Delphi unterwegs gewesen. Nun stehe ich gleich am Anfang vor einem Problem, was ich nicht ganz verstehe. In .Net-Welt sollte doch der Code zwischen VB.Net und C#.net auf beiden IDEs einsetzbar sein?
Problem:
In VB.Net habe ich ein Beispiel-Snippet unter Einbindung einer library (Interop.WBC_KrcLib.dll), funktioniert.
Ich habe versucht das Beispiel in C# nach-zustellen. Ist mir nicht gelungen.
Ich habe über die Suchfunktion keine Antworten erhalten, bitte um einen Wink in die korrekte Richtung.
Danke,
VB-->
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Imports WBC_KrcLib .. .. Private Sub bt_Read_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_Read.Click Dim kukaservicefactory As WBC_KrcLib.KrcServiceFactory Dim ksyncvar As WBC_KrcLib.ICKSyncVar2
kukaservicefactory = New KrcServiceFactory()
ksyncvar = kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1") <-- keine Fehler in VB!! .. .. End Sub End Class |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| using WBC_KrcLib; .. .. private void btn1_Click(object sender, EventArgs e) { WBC_KrcLib.KrcServiceFactory kukaservicefactory; WBC_KrcLib.ICKSyncVar2 ksyncvar;
kukaservicefactory = new KrcServiceFactory(); ksyncvar = kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1");<-- Fehler } |
Moderiert von
Th69: Delphi-Tags hinzugefügt
Moderiert von
Th69: C#-Tags hinzugefügt
Christoph1972 - Sa 07.04.12 09:41
Hi,
bitte Code immer formatiert eintragen, das will sonst niemand lesen. (Unter Bereiche geht das)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void btn1_Click(object sender, EventArgs e) { WBC_KrcLib.KrcServiceFactory kukaservicefactory; WBC_KrcLib.ICKSyncVar2 ksyncvar;
kukaservicefactory = new KrcServiceFactory(); ksyncvar = kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1");<-- Fehler } |
Ich denke bei VB.Net ist OptionStrict auf off, das ist immer schlecht.
Du musst eine Typ-Umwandlung vornehmen.
ksyncvar <- was ist das für ein Type? Ich mache da mal exemplarisch KSYNVAR raus.
Aus:
C#-Quelltext
1:
| Dim ksyncvar As WBC_KrcLib.ICKSyncVar2 |
wird:
C#-Quelltext
1:
| WBC_KrcLib.ICKSyncVar2 ksyncvar = new WBC_KrcLib.ICKSyncVar2 |
Dann sollte die Zeile so aussehen:
C#-Quelltext
1:
| ksyncvar = (WBC_KrcLib.ICKSyncVar2)kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1"); |
Hier wird allerdings eine Exeption gefeuert wenn die Konvertierung nicht gelingt.
Also besser so:
C#-Quelltext
1:
| ksyncvar = kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1") as WBC_KrcLib.ICKSyncVar2; |
Wenn die Konvertierung schiefgeht ist ksyncvar einfach null und das kann man ja abfangen.
Aiko07 - Sa 07.04.12 17:41
Hallo Christoph,
sorry, mit der Formatierung, werde ich in Zukunft bedenken.
Vielen Dank fuer Deine Beschreibung. Habe ich umgesetzt und funktioniert :-). Ich benoetige vorerst nur 2 Funktionen aus der Library "ShowVar" und "SetVar".
Als naechstes werde ich mich in das Fehlerhandling einarbeiten.
Wuensche Euch ein frohes Osterfest,
Bernd
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| public partial class Form1 : Form { WBC_KrcLib.KrcServiceFactory kukaservicefactory; WBC_KrcLib.ICKSyncVar2 ksyncvar;
public Form1() { InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) { kukaservicefactory = new KrcServiceFactory(); ksyncvar = kukaservicefactory.GetService("WBC_KrcLib.SyncVar", "PrimaryInterOpTest1") as WBC_KrcLib.ICKSyncVar2;
lb1.Text = "Dies ist der Text zum Label 1"; lb1.Text = ksyncvar.ShowVar("$AXIS_ACT.A1"); }
private void btn2_Click(object sender, EventArgs e) { lb2.Text = "Dies ist der Text zum Label 2"; ksyncvar.SetVar("Hansi", "1024"); lb2.Text = ksyncvar.ShowVar("Hansi"); } } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!