webForumDet fria alternativet

Översätta VB till C#

.NET

7 svar · 323 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag använder en liten underbar kod i VB för en Autolist i en textruta.
Nu undrar jag, kan man översätta den till C#?
Det handlar bl a om ett API-anrop och några konstanter.

Private Declare Function SendMessage _
   Lib "user32" Alias "SendMessageA" _
   (ByVal hwnd As Long, ByVal wMsg As Long, _
   ByVal wParam As Long, lParam As Any) As Long

Const EM_GETFIRSTVISIBLELINE = &HCE
Const EM_LINEFROMCHAR = &HC9
Const EM_LINELENGTH = &HC1
Const EM_LINEINDEX = &HBB 

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)

If Chr(KeyAscii) = ";" Then
       Combo1.Visible = True
       
       Dim p As POINTAPI
       GetCaretPos p
       Combo1.left = ScaleX(p.x, vbPixels, vbTwips) + Text1(8).left + 60
       Combo1.tOp = ScaleY(p.y, vbPixels, vbTwips) + Text1(8).tOp + ScaleY(Text1(8).Font.Size, vbPoints, vbTwips) + 60
   ElseIf Combo1.Visible = True Then
       Combo1.Visible = False
   End If
End Sub

Tacksam för all hjälp

Medlem sedan juni 20022 599 inlägg
#2

Tacksam för all hjälp

Då tar jag dig på orden och ger dig lite hjälp bara med själva deklarationerna:

private struct POINTAPI
{
	public int X;
	public int Y;
};

[DllImport("user32.dll")]
private static extern int SendMessage(
	int hWnd,
	uint Msg,
	int wParam,
	int lParam 
);

[DllImport("user32.dll")]
private static extern bool GetCaretPos(ref POINTAPI point);

private const int EM_LINEINDEX = 0xBB;
private const int EM_LINEFROMCHAR = 0xC9;
private const int EM_LINELENGTH = 0xC1;
private const int EM_LINEINDEX = 0xBB;

Resten av koden känns svår att översätta "on-the-fly" om man inte riktigt vet hur det egentligen ska se ut. Man får nog sätta sig med studion, rita upp kontrollerna, köra lite trial-and-error, googla lite, osv ..

Medlem sedan mars 20023 561 inlägg
#3

Det finns en sida som översätter VB.NET till C#. Ska leta reda på adressen när jag kommer hem.

Medlem sedan juni 20022 599 inlägg
#4

Josef skrev:

Det finns en sida som översätter VB.NET till C#.

Jo, fast nu är det ju inte VB.NET utan VB6/5/4. Vad man kan göra om man har större kodmängder är ju att först översätta från VB6 till VB.NET mha den inbyggda "Upgrade Wizarden" i .NET-Studion och sen översätta från VB-NET till C# ganska automatiskt. Problemet är bara att "Upgrade Wizarden" oftast bara klarar de självklara bitarna och lämnar kvar de "svåra". (Jag har testat på koden ovan.)

Medlem sedan mars 20011 880 inlägg
#5

Tack för detta nika. Det är ju en kanon bra början, får se nu så att jag kan använda och utvekla resten.

Många tack

Medlem sedan mars 20023 561 inlägg
#6

Aha, såg det nu.

Dessutom konverterade den sidan jag hade adressen C# till VB.NET och inte tvärtom. Jag kan lika gärna posta länken iallafall: http://www.kamalpatel.net/ConvertCSharp2VB.aspx

Medlem sedan mars 20011 880 inlägg
#7

Tack Josef men om det hade varit på andra hållet...

Medlem sedan aug. 20003 575 inlägg
#8

http://www.kamalpatel.net/Downloads/ConvertCSharp2VB_Offline_Tool.zip

Ladda ner det och vänd allt.

Borde inte vara så svårt :D

271 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)