PDA

View Full Version : اضافه کردن یک تکه کد خارجی از یک فایل متنی به برنامه ی vb.net



sonofsun
یک شنبه 08 بهمن 1391, 16:20 عصر
سلام .فرض کنید می خوایم همه ی محتوی یک فایل متنی (x.txt)در وسط کد های پروژه ای اضافه بشه.باید چی جوری متن این فایل رو اضافه کنم؟:متفکر:

SHD.NET
یک شنبه 08 بهمن 1391, 16:58 عصر
سلام
، فک نکنم همیچین چیزی بشه که شما اونو به کدهای پرژتون از طریق فایل EXE بتونید تزریق کنید !!!

فرید نجفلو
یک شنبه 08 بهمن 1391, 19:48 عصر
نمی گم تو دات نت اصلا نمیشه (اطمینان ندارم) ولی اگر هم بشه شما باید IL (زبان میانی دات نت) بلد باشید! که گمان نمی کنم باشید یا بتونید به این راحتی ها یاد بگیرید

ali reza mansoori 2
یک شنبه 08 بهمن 1391, 21:18 عصر
من هم همین کار رو میخوام انجام بدم
دوستان نظر دیگری ندارید

arman_Delta2002
یک شنبه 08 بهمن 1391, 22:28 عصر
دلیل انجام یه همچین کاری چی می تونه باشه ؟:متفکر:
منم چندی قبل به فکر انجام همچین کاری بودم

arash020
دوشنبه 09 بهمن 1391, 01:40 صبح
سلام

کدنمونه ساخت و اجرای کد در زمان اجرا:

Imports Evaluator

Imports System.Text
Imports System.CodeDom.Compiler
Imports Microsoft.VisualBasic

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents label6 As System.Windows.Forms.Label
Friend WithEvents output As System.Windows.Forms.TextBox
Friend WithEvents evaluate As System.Windows.Forms.Button
Friend WithEvents label5 As System.Windows.Forms.Label
Friend WithEvents inputString As System.Windows.Forms.TextBox
Friend WithEvents label4 As System.Windows.Forms.Label
Friend WithEvents label3 As System.Windows.Forms.Label
Friend WithEvents label1 As System.Windows.Forms.Label
Friend WithEvents code As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.label6 = New System.Windows.Forms.Label()
Me.output = New System.Windows.Forms.TextBox()
Me.evaluate = New System.Windows.Forms.Button()
Me.label5 = New System.Windows.Forms.Label()
Me.inputString = New System.Windows.Forms.TextBox()
Me.label4 = New System.Windows.Forms.Label()
Me.label3 = New System.Windows.Forms.Label()
Me.label1 = New System.Windows.Forms.Label()
Me.code = New System.Windows.Forms.TextBox()
Me.SuspendLayout()
'
'label6
'
Me.label6.Location = New System.Drawing.Point(0, 356)
Me.label6.Name = "label6"
Me.label6.Size = New System.Drawing.Size(456, 16)
Me.label6.TabIndex = 19
Me.label6.Text = "Output"
Me.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'output
'
Me.output.Location = New System.Drawing.Point(0, 372)
Me.output.Name = "output"
Me.output.ReadOnly = True
Me.output.Size = New System.Drawing.Size(456, 20)
Me.output.TabIndex = 18
Me.output.Text = "Hi"
Me.output.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'evaluate
'
Me.evaluate.Location = New System.Drawing.Point(136, 332)
Me.evaluate.Name = "evaluate"
Me.evaluate.Size = New System.Drawing.Size(184, 24)
Me.evaluate.TabIndex = 17
Me.evaluate.Text = "Evaluate!"
'
'label5
'
Me.label5.Location = New System.Drawing.Point(0, 292)
Me.label5.Name = "label5"
Me.label5.Size = New System.Drawing.Size(456, 16)
Me.label5.TabIndex = 16
Me.label5.Text = "Input Value"
Me.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'inputString
'
Me.inputString.Location = New System.Drawing.Point(0, 308)
Me.inputString.Name = "inputString"
Me.inputString.Size = New System.Drawing.Size(456, 20)
Me.inputString.TabIndex = 15
Me.inputString.Text = ""
Me.inputString.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'label4
'
Me.label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.label4.Location = New System.Drawing.Point(0, 4)
Me.label4.Name = "label4"
Me.label4.Size = New System.Drawing.Size(456, 24)
Me.label4.TabIndex = 14
Me.label4.Text = "Method"
Me.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'label3
'
Me.label3.Location = New System.Drawing.Point(0, 248)
Me.label3.Name = "label3"
Me.label3.Size = New System.Drawing.Size(288, 16)
Me.label3.TabIndex = 13
Me.label3.Text = "End Function"
'
'label1
'
Me.label1.Location = New System.Drawing.Point(0, 36)
Me.label1.Name = "label1"
Me.label1.Size = New System.Drawing.Size(456, 16)
Me.label1.TabIndex = 11
Me.label1.Text = "Public Function StringChanger(ByVal s As String) As String"
'
'code
'
Me.code.AcceptsReturn = True
Me.code.AcceptsTab = True
Me.code.Location = New System.Drawing.Point(32, 56)
Me.code.Multiline = True
Me.code.Name = "code"
Me.code.Size = New System.Drawing.Size(424, 192)
Me.code.TabIndex = 10
Me.code.Text = "Dim r As New System.Text.StringBuilder(s)" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "r.Append("" - String Edited!"")" & Microsoft.VisualBasic.ChrW(13) & Microsoft.VisualBasic.ChrW(10) & "Return " & _
"r.ToString()"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(456, 397)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.label6, Me.output, Me.evaluate, Me.label5, Me.inputString, Me.label4, Me.label3, Me.label1, Me.code})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Dim stringChanger As MethodResults = Nothing

Private Sub code_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles code.TextChanged
output.Text = ""
stringChanger = Nothing
End Sub

Private Sub inputString_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles inputString.TextChanged
output.Text = ""
End Sub

Private Sub evaluate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles evaluate.Click

If stringChanger Is Nothing Then
Dim source As New StringBuilder()
source.Append("Public Function StringChanger(ByVal s As String) As String")
source.Append(Environment.NewLine)
source.Append(code.Text)
source.Append(Environment.NewLine)
source.Append("End Function")
Try
stringChanger = Eval.CreateVirtualMethod( _
New VBCodeProvider().CreateCompiler(), _
source.ToString(), _
"StringChanger", _
New VBLanguage(), _
False)
Catch ce As CompilationException
MessageBox.Show(Me, "Compilation Errors: " + Environment.NewLine + ce.ToString())
Exit Sub
End Try
End If

Try
output.Text = CStr(stringChanger.Invoke(inputString.Text))
Catch tie As System.Reflection.TargetInvocationException
MessageBox.Show(Me, "Method-Thrown Exception: " + Environment.NewLine + tie.InnerException.ToString())
Exit Sub
End Try
End Sub
End Class

M.KH-SH
دوشنبه 09 بهمن 1391, 06:30 صبح
ممنون
میشه در رابطه با
Imports Evaluator و MethodResults و
CompilationException و stringChanger = Eval.CreateVirtualMethod( _
New VBCodeProvider().CreateCompiler(), _
source.ToString(), _
"StringChanger", _
New VBLanguage(), _
False)
یک توضیحی بدین
اینا برای من به عنوان خطا و هشدار هستن.

ali reza mansoori 2
دوشنبه 09 بهمن 1391, 11:17 صبح
این کد چکار میکنه
دوست عزیز میشه نحوه استفاده از این کد رو آموزش بدید

sonofsun
دوشنبه 09 بهمن 1391, 14:28 عصر
دلیل انجام یه همچین کاری چی می تونه باشه ؟:متفکر:
سلام . فک کن می خوای هر روز یه حدیثی تو برنامه ات باشه و بخوای بعد از هر چند و وقت این ها رو آپدیت و یا عوض کنی . دیگه نیاز نیست کل برنامه رو با ورژن جدید بسازی و فقط کافی فایل مورد نظر تو (همون که احادیث توشه ) رو توی فولدر Resource برنامه اضافه کنی.

M.KH-SH
دوشنبه 09 بهمن 1391, 15:26 عصر
سلام . فک کن می خوای هر روز یه حدیثی تو برنامه ات باشه و بخوای بعد از هر چند و وقت این ها رو آپدیت و یا عوض کنی . دیگه نیاز نیست کل برنامه رو با ورژن جدید بسازی و فقط کافی فایل مورد نظر تو (همون که احادیث توشه ) رو توی فولدر Resource برنامه اضافه کنی.

:متعجب: خوب پس xml و دیتابیس ها و فایل txt هم در بیرون برنامه هیچی دیگه اینا اصلا به حساب نمی یان؟؟؟؟؟؟

ali reza mansoori 2
دوشنبه 09 بهمن 1391, 18:43 عصر
کار sonofsun با بانک اطلاعاتی و فایل های بیرونی حل میشه
من برای چیز دیگه ای میخوام

meisam3322
دوشنبه 09 بهمن 1391, 19:32 عصر
سلام . فک کن می خوای هر روز یه حدیثی تو برنامه ات باشه و بخوای بعد از هر چند و وقت این ها رو آپدیت و یا عوض کنی . دیگه نیاز نیست کل برنامه رو با ورژن جدید بسازی و فقط کافی فایل مورد نظر تو (همون که احادیث توشه ) رو توی فولدر Resource برنامه اضافه کنی.

دوست عزیز راه حل شما برای چنین کاری واقعا اشتباه ست. همانطور که دوستان گفتن ، خیلی راحت میشه با ایجاد یک فایل متنی ساده ، با فایل XML یا حتی یه پایگاه داده و یا حتی فایل Excel اینکارو انجام داد .

meisam3322
دوشنبه 09 بهمن 1391, 19:39 عصر
خواندن و نوشتن فایل XML (http://www.dotnetspider.com/resources/5761-Read-Write-XML-files-using-VB-NET.aspx)و این یکی (http://www.informit.com/library/content.aspx?b=STY_XML_21days&seqNum=259)

خواندن و نوشتن در فایل Excel (http://www.codeproject.com/Articles/32437/Read-and-Write-Excel-Files) و یکی دیگه (http://www.codeproject.com/Articles/18073/Reading-and-writing-an-Excel-file-using-VB-NET)

استفاده از Stream (http://www.vb-helper.com/howto_net_read_write_text_file.html)

نوشتن در یک فایل متنی txt (http://stackoverflow.com/questions/10458942/create-a-text-file-and-write-to-it)

sonofsun
دوشنبه 09 بهمن 1391, 20:12 عصر
چی جوری می تونم از فایل xml یا excel استفاده کنم بیشتر توضیح بدین.

arash020
سه شنبه 10 بهمن 1391, 02:26 صبح
سلام
این پروژه ایجاد و کامپایل و اجرا کد در زمان اجراست

http://s3.picofile.com/file/7637102147/Backup.rar.html

ali reza mansoori 2
سه شنبه 10 بهمن 1391, 17:56 عصر
دوست عزیز این پروژه رو شما خودتون تست کردید
من وقتی میخوام اجرا کنم این اخطار ها رو میده

JaVa
سه شنبه 10 بهمن 1391, 19:48 عصر
دلیل انجام یه همچین کاری چی می تونه باشه ؟:متفکر:

ممنون از اینکه سئوالم رو جواب دادید؟

arash020
سه شنبه 10 بهمن 1391, 23:18 عصر
بله
خودم تست کردم
روی سیس من جواب داده بدون خطا

ali reza mansoori 2
چهارشنبه 11 بهمن 1391, 13:20 عصر
Evaluator رو اینپورت نمیکنه
حتما رو سیس شما کامپوننت یا dll ای نصب هستش
میشه برنامه رو کامپایل کنید و فایل exe رو آپ کنید