PDA

View Full Version : تبدیل VB به C#



Bahar_HS
پنج شنبه 16 آبان 1387, 22:23 عصر
با سلام
معادل این قطعه کد در سی شارپ چی میشه،
خواستم از نرم افزارهای تبدیل استفاده کنم که نشد ،ممکنه یکی از دوستان لطف کنند ،منوراهنمایی کنند.

باسپاس



در قسمت جنرال برنامه در بالای ماژول دستورات زیر را imports میکنیم
Imports System.IO
Imports System.Reflection
Imports System.Data.SqlClient

Public Class Installer1
2-یک کانکشن از نوع اسکیول تعریف کرده

Dim masterConnection As New System.Data.SqlClient.SqlConnection

Public Sub New()
MyBase.New()
چنانچه قصد نصب بر روی لوکال یا نسخه ای از اسکیول سرور مانند 2000 دارید از یکی از رشته اتصالهای زیر استفاده کنید
masterConnection.ConnectionString = "Data Source=(local);Initial Catalog=master;Integrated Security=True"
یا
masterConnection.ConnectionString = "packet size=4096;integrated security=SSPI;" & "data source=""(local)"";persist security info=False;" & "initial catalog=master"
اگر میخواهید بر روی نسخه اکسپرس2005 اسکیول سرور نصب کنید میتونید از رشته اتصالهای زیر استفاده کنید
masterConnection.ConnectionString = "Data Source=.\sqlexpress;Initial
Catalog=master;Integrated Security=True"
masterConnection.ConnectionString = "Data Source=(local)\sqlexpress;Initial Catalog=master;Integrated Security=True"
InitializeComponent()
End Sub
کدهای زیر را پس از ساب روتین New اضافه کنید
Private Function GetSql(ByVal Name As String) As String
Try


Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()


Dim strm As Stream = Asm.GetManifestResourceStream( _
Asm.GetName().Name + "." + Name)


Dim reader As StreamReader = New StreamReader(strm)
Return reader.ReadToEnd()

Catch ex As Exception
MsgBox("In GetSQL: " & ex.Message)
Throw ex
End Try
End Function
Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
رشته اتصال را میتوان در این قسمت هم مقدار دهی کرد
'masterConnection.ConnectionString = "Data Source=(local);Initial 'Catalog=master;Integrated Security=True"

Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)
Command.Connection.Open()
Command.Connection.ChangeDatabase(DatabaseName)
Try
Command.ExecuteNonQuery()
Finally
Command.Connection.Close()
End Try
End Sub

Protected Sub AddDBTable(ByVal strDBName As String)
Try
جهت ساختن دیتابیس
ExecuteSql("master", "CREATE DATABASE " + strDBName)

جهت ساختن جدول
ExecuteSql(strDBName, GetSql("sql.txt"))

Catch ex As Exception
MsgBox("In exception handler: " & ex.Message)
Throw ex
End Try
End Sub

Public Overrides Sub Install(ByVal stateSaver As _
System.Collections.IDictionary)

MyBase.Install(stateSaver)
AddDBTable(Me.Context.Parameters.Item("dbname"))

End

حامد مصافی
پنج شنبه 16 آبان 1387, 22:29 عصر
برای تبدیل کد از این صفحه (http://www.developerfusion.com/tools/convert/vb-to-csharp/)استفاده کنید.
ضمن اینکه از ابزار SharpDevelop (http://sharpdevelop.net/)هم می تونید استفاده کنید.

Bahar_HS
پنج شنبه 16 آبان 1387, 22:55 عصر
باسلام
من هم دقیقا این کاررو می کنم، متن بالا رو(قطعه کد) رو دقیقا در کادر موردنظر کپی می کنم ولی تبدیل نمیشه، در واقع خطا میده،(البته نوشته های فارسی رو پاک کردم)

باسپاس

حامد مصافی
پنج شنبه 16 آبان 1387, 23:04 عصر
هیچ خطایی نمیده!

این هم نتیجه ای که من گرفتم، البته Sub و Class رو در انتهای متن بستم.





using System.IO;
using System.Reflection;
using System.Data.SqlClient;

public class Installer1
{

System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();

public Installer1() : base()
{
masterConnection.ConnectionString = "Data Source=(local);Initial Catalog=master;Integrated Security=True";
masterConnection.ConnectionString = "packet size=4096;integrated security=SSPI;" & "data source=""(local)"";persist security info=False;" & "initial catalog=master"
masterConnection.ConnectionString = "Data Source=.\\sqlexpress;Initial \rCatalog=master;Integrated Security=True";
masterConnection.ConnectionString = "Data Source=(local)\\sqlexpress;Initial Catalog=master;Integrated Security=True";
InitializeComponent();
}

private string GetSql(string Name)
{
try {


Assembly Asm = Assembly.GetExecutingAssembly();


Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);


StreamReader reader = new StreamReader(strm);
return reader.ReadToEnd();
}

catch (Exception ex) {
Interaction.MsgBox("In GetSQL: " + ex.Message);
throw ex;
}
}
private void ExecuteSql(string DatabaseName, string Sql)
{

//masterConnection.ConnectionString = "Data Source=(local);Initial 'Catalog=master;Integrated Security=True"

SqlClient.SqlCommand Command = new SqlClient.SqlCommand(Sql, masterConnection);
Command.Connection.Open();
Command.Connection.ChangeDatabase(DatabaseName);
try {
Command.ExecuteNonQuery();
}
finally {
Command.Connection.Close();
}
}

protected void AddDBTable(string strDBName)
{
try {

ExecuteSql("master", "CREATE DATABASE " + strDBName);


ExecuteSql(strDBName, GetSql("sql.txt"));
}

catch (Exception ex) {
Interaction.MsgBox("In exception handler: " + ex.Message);
throw ex;
}
}

public override void Install(System.Collections.IDictionary stateSaver)
{

base.Install(stateSaver);
AddDBTable(this.Context.Parameters.Item("dbname"));
}
}

سعید ثابتی
جمعه 17 آبان 1387, 06:08 صبح
دوست گلم نرم افزار VB.Net to C# Converter را توی google سرچ و بعد دانلودش کن. از نسخه 2.22 به بعد اگه یه برنامه کامل VB هم بهش بدی برات تبدیل میکنه

Bahar_HS
جمعه 17 آبان 1387, 06:58 صبح
با سلام وباسپاس از راهنمایی تون،

برنامه از دستور :
Interaction.MsgBox
ایراد می گیره:



Error 1 The name 'Interaction' does not exist in the current context E:\softwar-1\practic\DBSetup\DBSetup\Installer1.cs 36 17 DBSetup



وهمین طو راز:


AddDBTable(this.Context.Parameters.Item("karamuzy"));




Error 3 'System.Collections.Specialized.StringDictionary' does not contain a definition for 'Item' E:\softwar-1\practic\DBSetup\DBSetup\Installer1.cs 70 44 DBSetup




باسپاس از راهنمایی ها تون وباآرزوی موفقیت

Bahar_HS
جمعه 17 آبان 1387, 11:03 صبح
با سلام
من می خوام برای برنامه ی ویندوزی که در سی شارپ نوشتم و بادیتابیس ارتباط داره،یه ستاپ بسازم که فقط با نصب برنامه برروی سیستم مقصد دیگه نیاز نباشه که SQL Server2000 هم نصب بشه،یکی ازدوستان لطف کرند این لینک رو معرفی کردند

http://barnamenevis.org/forum/showthread.php?t=123955&highlight=Attach+%DA

وحالا برای کلاس installer.csکد تبدیل شده به سی شارپ رو نوشتم که برنامهError هایی رو که گفتم میده،
چکارباید بکنم، ممکنه یکی از دوستان لطف کنند منوراهنمایی کنند،چند هفته هست که برنامه رو نوشتم ولی درگیر ستاپ سازیشم .

باآرزوی موفقیت



using System;
using System.IO;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Configuration.Install;
using System.Data.SqlClient;
using System.Reflection;
using System.Management.Instrumentation;

namespace DBSetup
{
[RunInstaller(true)]
public partial class Installer1 : Installer
{
System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();
public Installer1() : base()
{
masterConnection.ConnectionString = "Data Source=(local);Initial Catalog = master;Integrated Security=True";
InitializeComponent();
}
private string GetSql(string Name)
{
try {
Assembly Asm = Assembly.GetExecutingAssembly();
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);
StreamReader reader = new StreamReader(strm);
return reader.ReadToEnd();
}
catch (Exception ex)
{ Interaction.MsgBox("In GetSQL: " + ex.Message);
throw ex;}
}
private void ExecuteSql(string DatabaseName, string Sql)
{
//masterConnection.ConnectionString = "Data Source=(local);Initial 'Catalog=master;Integrated Security=True"
SqlCommand Command = new SqlCommand(Sql, masterConnection);
Command.Connection.Open();
Command.Connection.ChangeDatabase(DatabaseName);

try
{Command.ExecuteNonQuery();}
finally
{Command.Connection.Close();}
}
protected void AddDBTable(string strDBName)
{
try {
ExecuteSql("master", "CREATE DATABASE " + strDBName);
ExecuteSql(strDBName, GetSql("sql.txt"));
}
catch (Exception ex)
{ Interaction.MsgBox("In exception handler: " + ex.Message);
throw ex;}
}

public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters.Items("karamuzy"));

}
}
}

jingiliboyz
سه شنبه 18 اسفند 1388, 10:01 صبح
لطفا يه نرم افزار هم براي تبديل كدهاي #c به كدهاي vb.net معرفي بكنيد مرسي

behzad1986
سه شنبه 18 اسفند 1388, 10:09 صبح
سلام دوست عزيز اين سايت اين كارو انجام ميده
http://www.developerfusion.com/tools/convert/vb-to-csharp/
http://www.developerfusion.com/tools/convert/csharp-to-vb/