ist das korrekt übersetzt (vb.net -> c#)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Runshak.

    ist das korrekt übersetzt (vb.net -> c#)

    ist der folgende VB.Net Code korrekt in C# übersetzt?

    VB.NET-Quellcode

    1. ​Private Sub OnClick(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    2. Dim d1 As Double
    3. Dim iRet As Long
    4. Dim strD As String
    5. d1 = 1000000 / 7
    6. strD = vbNullString
    7. For i = 1 To 60
    8. iRet = GetBitFromDouble(d1, i)
    9. strD = strD & iRet
    10. Next
    11. Title = strD
    12. End Sub


    C#-Quellcode

    1. ​public void OnClick(System.Object sender, System.Windows.RoutedEventArgs e)
    2. {
    3. double d1 = 0;
    4. long iRet = 0;
    5. string strD = "";
    6. d1 = 1000000 / 7;
    7. strD = Constants.vbNullString;
    8. for (var i = 1; i <= 60; i++)
    9. {
    10. iRet = System.Convert.ToInt64(GetBitFromDouble(d1, i));
    11. strD = strD + System.Convert.ToString(iRet);
    12. }
    13. Title = strD;
    14. }

    Runshak schrieb:

    C#-Quellcode

    1. strD = Constants.vbNullString;
    2. // ...
    3. strD = strD + System.Convert.ToString(iRet);

    C#-Quellcode

    1. strD = string.Empty;
    2. //...
    3. strD += iRet.ToString();
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo @Runshak,
    Weise doch den Inhalt von d1 und strD direkt zu Oo

    C#-Quellcode

    1. public void OnClick(System.Object sender, System.Windows.RoutedEventArgs e)
    2. {
    3. double d1 = 142857.14285714;
    4. long iRet = 0;
    5. string strD = string.Empty;
    6. for (var i = 1; i <= 60; i++)
    7. {
    8. iRet = System.Convert.ToInt64(GetBitFromDouble(d1, i));
    9. strD += iRet.ToString();
    10. }
    11. Title = strD;
    12. }


    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Ruerte“ ()

    ok, das ist gut danke...das für sich funktioniert aber sobald ich ne DLL importiere bekomme ich nen Formatfehler...und den bekomme ich nicht weg...auch wenn ich die Werte ändere...

    VB.NET-Quellcode

    1. ​Private Declare Function GetBitFromDouble Lib "CPP_FCT.dll" (ByVal dDoubleVal As Double, ByVal lBitPos As Integer) As Integer


    hier funktionierte es nachdem ich aus Long -> Integer machte

    C#-Quellcode

    1. ​ [DllImport("CPP_FCT.dll", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
    2. private static extern int GetBitFromDouble(double dDoubleVal, int lBitPos);


    in C# entspricht das ja dem int ...aber auch wenn ich Int32/Int64 mache, bekomme ich nen Formatfehler...deswegen dachte ich, dass ich das falsch übertragen habe...aber sämtliche Compiler geben mir das so mit den "[ ]" zurück...
    Was passiert, wenn Du dies weglässt:

    Runshak schrieb:

    C#-Quellcode

    1. ExactSpelling = true, CharSet = CharSet.Ansi,
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    "Es wurde versucht eine Datei im falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B)"

    im C# Äquivalent steigt er hier aus

    VB.NET-Quellcode

    1. ​iRet = GetBitFromDouble(d1, i)
    ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Runshak“ ()

    Runshak schrieb:

    im falschen Format
    x86 <=> x64
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es funktioniert...die Einstellungen beim Debuggen waren nicht korrekt auf x86 gestellt...mit anyCpu tut es nicht...

    @RodFromGermany kannst du mir den Unterschied zwischen AnyCpu und X86/x64 erklären?

    Runshak schrieb:

    AnyCpu und X86/x64
    AnyCPU funktioniert bei reinen .NET-Assemblies, da nimmt er (im Prinzip) den Prozessor, den er vorfindet.
    Bei x86 und x64 wird der Prozessortyp fest vorgeschrieben. Das knallt, wenn die Nicht-.NET-DLL mit dem anderen Typ kompiliert wurde.
    Bei solchen DLLs muss der Typ übereinstimmen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!