Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[PYTANIE]VB


Rekomendowane odpowiedzi

Opublikowano

Witam

 

Mam takie pytanie moj program graficznie tak wyglada dodalem przycisk "generuj" po jego kliknieciu chcialbym zeby stworzyl sie plik.exe z jakimis funkcjami. Slyszalem ze to kwestia dodania pliku do zasobow ale nie wiem jak to zrobic i czy to rozwiaze problem.

Opublikowano

Tzn. chcesz umieścić w programie kod źródłowy tego programu i kompilować go po wciśnięciu przycisku, czy jest to istniejący plik, który chcesz załączyć?

Opublikowano

chce dodac kod do przycisku "generuj" gdzie po kliknieciu na niego by sie tworzyl jakis plik.exe z jakimis funkcjami. tylko nie wiem jak.

 

istniejacego pliku zadnego nie mam po prostu ccialbym przycisk jedynie zaprogramowac

Opublikowano

chce dodac kod do przycisku "generuj" gdzie po kliknieciu na niego by sie tworzyl jakis plik.exe z jakimis funkcjami. tylko nie wiem jak.

 

istniejacego pliku zadnego nie mam po prostu ccialbym przycisk jedynie zaprogramowac

Czyli chcesz skompilować kod C#/VB, w programie napisanym w Visual Basic.NET, tak?
Opublikowano

nie nie. caly kod chcialbym miec w VB bo na razie nic nie mam dopoki sie nie dowiem jak zaprogramowac przycisk po ktorym stworzy sie pkik.exe

Opublikowano

Imports Microsoft.VisualBasic

Imports System.CodeDom.Compiler

Module Module1

 

Sub Main()

Dim kod As String = "Imports System" & vbNewLine & "Module Module1" & vbNewLine & "Sub Main()" & vbNewLine & "Console.WriteLine(" & Chr(34) & "abc" & Chr(34) & ")" & vbNewLine & "Console.ReadKey()" & vbNewLine & "End Sub" & vbNewLine & "End Module"

If (Skompiluj(kod, "program.exe")) Then

Process.Start("program.exe")

Else

MsgBox(kod)

End If

End Sub

Function Skompiluj(kod As String, nazwa As String)

Dim vb As New VBCodeProvider

Dim icc As ICodeCompiler = vb.CreateCompiler()

Dim parametry As New CompilerParameters

parametry.GenerateExecutable = True

parametry.OutputAssembly = nazwa

Dim wynik As CompilerResults = icc.CompileAssemblyFromSource(parametry, kod)

Return wynik.Errors.Count = 0

End Function

End Module

Opublikowano

Miszczu a wiesz może co z tym jest nie tak bo mam ten kod i pojawia mi się taki błąd:


Error 1 'Module' statements can occur only at file or namespace level. C:\Documents and Settings\admin\Ustawienia lokalne\Dane aplikacji\Temporary Projects\program\Form1.vb 4 4

a kod tak wkleiłem:
Imports Microsoft.VisualBasic
Imports System.CodeDom.Compiler
    Public Class Form1
   Module Module1

        Sub Main()
            Dim kod As String = "Imports System" & vbNewLine & "Module Module1" & vbNewLine & "Sub Main()" & vbNewLine & "Console.WriteLine(" & Chr(34) & "abc" & Chr(34) & ")" & vbNewLine & "Console.ReadKey()" & vbNewLine & "End Sub" & vbNewLine & "End Module"
            If (Skompiluj(kod, "program.exe")) Then
                Process.Start("program.exe")
            Else
                MsgBox(kod)
            End If
        End Sub
        Function Skompiluj(ByVal kod As String, ByVal nazwa As String)
            Dim vb As New VBCodeProvider
            Dim icc As ICodeCompiler = vb.CreateCompiler()
            Dim parametry As New CompilerParameters
            parametry.GenerateExecutable = True
            parametry.OutputAssembly = nazwa
            Dim wynik As CompilerResults = icc.CompileAssemblyFromSource(parametry, kod)
            Return wynik.Errors.Count = 0
        End Function
    End Module

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
End Class

 

 

Opublikowano

Module jest odpowiednikiem namespace w c#, zatem musi być po imports. Poza tym nie masz End Module

Opublikowano

end module jest przed end function



tylko, że jak mam tak:

Imports Microsoft.VisualBasic
Imports System.CodeDom.Compiler
Module Module1

Public Class Form1

    Sub Main()
        Dim kod As String = "Imports System" & vbNewLine & "Module Module1" & vbNewLine & "Sub Main()" & vbNewLine & "Console.WriteLine(" & Chr(34) & "abc" & Chr(34) & ")" & vbNewLine & "Console.ReadKey()" & vbNewLine & "End Sub" & vbNewLine & "End Module"
        If (Skompiluj(kod, "program.exe")) Then
            Process.Start("program.exe")
        Else
            MsgBox(kod)
        End If
    End Sub
    Function Skompiluj(ByVal kod As String, ByVal nazwa As String)
        Dim vb As New VBCodeProvider
        Dim icc As ICodeCompiler = vb.CreateCompiler()
        Dim parametry As New CompilerParameters
        parametry.GenerateExecutable = True
        parametry.OutputAssembly = nazwa
        Dim wynik As CompilerResults = icc.CompileAssemblyFromSource(parametry, kod)
        Return wynik.Errors.Count = 0
    End Function
        End Module

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
End Class

 

to mam 3 błędy

Opublikowano

mnij więcej poprawiłem:

Imports Microsoft.VisualBasic
Imports System.CodeDom.Compiler
Module Module1
    Sub Main()
        Dim kod As String = "Imports System" & vbNewLine & "Module Module1" & vbNewLine & "Sub Main()" & vbNewLine & "Console.WriteLine(" & Chr(34) & "abc" & Chr(34) & ")" & vbNewLine & "Console.ReadKey()" & vbNewLine & "End Sub" & vbNewLine & "End Module"
        If (Skompiluj(kod, "program.exe")) Then
            Process.Start("program.exe")
        Else
            MsgBox(kod)
        End If
    End Sub
    Function Skompiluj(ByVal kod As String, ByVal nazwa As String)
        Dim vb As New VBCodeProvider
        Dim icc As ICodeCompiler = vb.CreateCompiler()
        Dim parametry As New CompilerParameters
        parametry.GenerateExecutable = True
        parametry.OutputAssembly = nazwa
        Dim wynik As CompilerResults = icc.CompileAssemblyFromSource(parametry, kod)
        Return wynik.Errors.Count = 0
    End Function
End Module

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

End Sub

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...