» »

Visual Basic

Visual Basic

Plezalec ::

Oj, imam program v VB. Notri sta dva textboxa in gumb. Naredil sem compiler. (V Prvi Textbox napišeš kodo, v drugem pa ti izpiše komentarje)

VB mi pa javlja napako ki je ne najdem. Prosim POMOČ:


Imports System.IO
Imports System.Reflection
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports Microsoft.VisualBasic
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' read code from textbox
        Dim Code As String = TextBox1.Text
        ' clear output textbox
        TextBox2.Clear()
        ' create fully functional assembly string
        Code = ("Imports System" & vbCrLf &
                "Imports System.Windows.Forms" & vbCrLf &
                "Imports Microsoft.Visualbasic" & vbCrLf &
                "Public Class TempClass" & vbCrLf &
                "Public Sub MyCode(ByVal Textbox2 As TextBox)" & vbCrLf &
                Code & vbCrLf &
                "End Sub" & vbCrLf &
                "End Class")
        ' create the compiler
        Dim vbProv = New VBCodeProvider()
        ' create parameters to pass to the compiler
        Dim vbParams = New CompilerParameters()
        ' add referenced assemblies.  
        vbParams.ReferencedAssemblies.Add("System.dll")
        vbParams.ReferencedAssemblies.Add("System.Windows.Forms.dll")
        vbParams.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
        ' generate an assembly in memory
        vbParams.GenerateExecutable = False
        vbParams.GenerateInMemory = True
        ' give it a name
        vbParams.OutputAssembly = "MyCode"
        ' compile the code and get the compiler results
        Dim compResults = vbProv.CompileAssemblyFromSource(vbParams, Code)
        ' check for compile errors  
        If compResults.Errors.HasErrors Then
            Dim ErrorMsg As String = compResults.Errors.Count.ToString & " Errors:"
            For x As Integer = 0 To compResults.Errors.Count - 1
                ErrorMsg = ErrorMsg & vbCrLf & "Line: " & compResults.Errors(x).Line.ToString & " - " + compResults.Errors(x).ErrorText
            Next
            TextBox2.Text = ErrorMsg & vbCrLf & vbCrLf + Code
        Else
            ' create instance of the temporary compiled class
            Dim obj As Object = compResults.CompiledAssembly.CreateInstance("TempClass")
            ' use textbox 2 for output
            Dim args() As Object = {Me.TextBox2}
            Try
                ' execute the code  
                Dim result As Object = obj.GetType().InvokeMember("MyCode", BindingFlags.InvokeMethod, Nothing, obj, args)
            Catch Oops As Exception
                ' oops
                MessageBox.Show(Oops.Message)
            End Try
        End If
    End Sub
End Class
  • spremenil: Mavrik ()

darkolord ::

Kakšna je napaka?

Plezalec ::

Tole Mi kaže:

Slika:

https://www.dropbox.com/s/vh19ah607iv53...

podčrtano mi kaže samo rdeče besedilo

Zgodovina sprememb…

  • spremenil: Plezalec ()

AndrejS ::

Probaj vse v eni vrstici napisat. Ali pa na koncu vrstice uporabi : _

cekr ::

Sem potegnil vse od "code" v IDE in ni napake.
Možno, da ti sam VS vidi kakšen neviden znak in ti zato joka, da nekaj ni OK.

Poskusi samo:

Dim Code As String = ""

Code = "Imports System" & vbCrLf &
"Imports System.Windows.Forms" & vbCrLf &
"Imports Microsoft.Visualbasic" & vbCrLf &
"Public Class TempClass" & vbCrLf &
"Public Sub MyCode(ByVal Textbox2 As TextBox)" & vbCrLf &
Code & vbCrLf &
"End Sub" & vbCrLf &
"End Class"




Katero verzijo Studia imaš?

Če je kakšna starejša, boš moral uporabljat "_" za novo vrstico.
Inštaliraj si "Visual Studio Community 2013".
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()

win64 ::

AndrejS je izjavil:

Probaj vse v eni vrstici napisat. Ali pa na koncu vrstice uporabi : _

Tole bo najverjetnejša napaka.
Določene(ali vse) verzije visual basic-a ne podpirajo ukazov čez več vrstic kot drugi jeziki.
Uporabiti moraš znak _ , da prevajalniku poveš da se ukaz nadaljuje v naslednji vrstici.
Podobno uporabiš znak : , ko bi rad napisal več stavkov v eni vrstici.

Plezalec ::

Trenutno uporabljam Visual basic 2008, bom poskusil kar ste predlagali :)

cekr ::

Plezalec je izjavil:

Trenutno uporabljam Visual basic 2008, bom poskusil kar ste predlagali :)


To je to.
Pri sestavljanju stringa dodaj na koncu vsake vrstice še underline.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()

Plezalec ::

Živjo, underline popravi napako ampak "pojavi se mi nova". Ko želim "compile" nek preprost ukaz npr MsgBox("123") mi stavek v kodi pobarva rumeno

Program:
https://www.dropbox.com/s/z2ifi6fd9bbam...

Napaka:
https://www.dropbox.com/s/g7rd8ua98aaxl...

win64 ::

Po napaki sodeč ne najde datoteke(ali pa nimaš dostopa do nje) (FileNotFoundException)

Plezalec ::

Ja, kaj lahko naredim da bi odstranil ta problem. Naredil sem compiler, malo pogooglou pa sestavu tole kodo skupaj. (CodeDOM)
Če se kdo spozna naj mi prosim malo svetuje kaj narediti
LP

win64 ::

Pokaži malo več informaciji, stack trace napake bi recimo pomagal zelo.

cekr ::

V referencah za program poskusi nastaviti tako, da se ti bodo vsi dll-ji, ki jih rabiš, kopirali v folder programa (npr. Debug) - na isto raven kot imaš exe.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Plezalec ::

Napiše mi tole:

"A first chance exception of type 'System.IO.FileNotFoundException' occurred in System.dll"

Pa če kliknem Call Stack

> COMPILER-ERROR.exe!WindowsApplication1.Form1.Button1_Click(Object sender = {Text = "Compile"}, System.EventArgs e = {X = 117 Y = 49 Button = System.Windows.Forms.MouseButtons.Left}) Line 35 + 0x55 bytes Basic

V referencah za program poskusi nastaviti tako, da se ti bodo vsi dll-ji, ki jih rabiš, kopirali v folder programa (npr. Debug) - na isto raven kot imaš exe.


Hja in kako bi lahko to naredil?

Zgodovina sprememb…

  • spremenil: Plezalec ()

Plezalec ::

Nevem kaj moti kodo. "MyCode.dll" ki jo ustvari je v isti mapi kot *.exe ampak zmeraj napiše da ne najde fajla. Se komu sanja kaj narediti??

???

Zgodovina sprememb…

  • spremenil: Plezalec ()

nikigre22 ::

Zdravo imam en problem. Rad bi naredil program ki bi uporablajal datoteke iz usb ključka. Ko bi bil program zagnan in ko bi vstavim ključeki bi prebral neko datoteko in program bi nadaljeval. Ampak ne vem kako naj to naredim. Uporablam visual basic.
In kaj je narobe kaj še manjka v tej odi da mi bo izpisalo podatke v textbox1.

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
My.Computer.FileSystem.ReadAllText("G:\denar.money")

cekr ::

Pred my.computer..... napiši:" Dim x as string je "
Potem pa to vrednost nafilaj v svoj obrazec.
Imas pa tudi gradnik, ki ti prozi,ko pride do spremembe v datoteki.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()

nikigre22 ::

hvala ampak ne deluje..

cekr ::

Ti napiše kakšno napako?

textbox1.text=My.Computer.FileSystem.ReadAllText("G:\denar.money")
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()

Yacked2 ::

Nevem kako je pri Visual Basicu ampak pri C# bi jaz dal tole branje v try, catch oklepaje, ker se ti zna zgodit, da dobi pogon drugo črko, ni pogona, ni datoteke itd...
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

cekr ::

Yacked2 je izjavil:

Nevem kako je pri Visual Basicu ampak pri C# bi jaz dal tole branje v try, catch oklepaje, ker se ti zna zgodit, da dobi pogon drugo črko, ni pogona, ni datoteke itd...


To je res, vendar bi mu že VS ven vrgel napako, če ne vidi datoteke.
Če je fiksno definirana črka pogona, ne bo šel drugam gledat.

Razlike med VB.net in C# v funkcionalnosti ni. Imata isto osnovo. Kakšne stvari so v VB malo bolj dodelane. (npr. delo z XML), kar pa ne pomeni, da v drugem ne moreš priti do istega rezultata.
Tu velja pravilo; vse je isti jezik, razlike so samo v narečjih.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()

nikigre22 ::

Mi je uspelo mogel sem neki com importat. Zdaj pa imam nov problem.
Zakaj mi pokaže spodnji error ali je kaj narobe v kodi?
Imports System
Imports System.IO
Imports System.Text
Public Class Form9
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim path As String = "j:\dogodki\dogodek.txt"

' Create or overwrite the file.
Dim fs As FileStream = File.Create(path)

' Add text to the file.
Dim info As Byte() = New UTF8Encoding(True).GetBytes("Datum in ura dogodka:" & TextBox1.Text And "Dogodek:" & TextBox2.Text)
fs.Write(info, 0, info.Length)
fs.Close()
Form6.Show()
Me.Hide()
End Sub

Private Sub Form9_Load(sender As Object, e As EventArgs) Handles Me.Load
TextBox1.Text = TimeOfDay

End Sub
error:
Additional information: Conversion from string "Datum in ura dogodka:7:52:06 PM" to type 'Long' is not valid.
Hvala

darkolord ::

Kaj je tisti "And" tam?

nikigre22 ::

Mislil sem kot to and to

darkolord ::

&

cekr ::

Ti kaj napiše, v kateri vrstici je napaka?

Sicer pa: "And" zamenjaj z & pa bi moral skoz.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

nikigre22 ::

Trenutno deluje ampak ne vem kako bi dokument program dopolnjeval da bi vedno ko je gumb pritisnjen šel v naslednjo vrstico in dokumwnt dopolnil

darkolord ::

Namesto vsega tega:
' Create or overwrite the file. 
Dim fs As FileStream = File.Create(path)

' Add text to the file. 
Dim info As Byte() = New UTF8Encoding(True).GetBytes("Datum in ura dogodka:" & TextBox1.Text And "Dogodek:" & TextBox2.Text)
fs.Write(info, 0, info.Length)
fs.Close()


Napišeš
File.AppendAllText(path, "Datum in ura dogodka:" & TextBox1.Text & "Dogodek:" & TextBox2.Text)

Zgodovina sprememb…

  • spremenilo: darkolord ()

nikigre22 ::

aha.
Kako bi pa lahko vsakič naredil datoteko in jo poeminoval.
Kajti koda za e pošto ne deluje in ne vem zakaj.
Dim smtpServer As New SmtpClient
Dim mail As New MailMessage()
smtpServer.Credentials = New Net.NetworkCredential("admin@nikigre.com", "geslo")
smtpServer.Port = 465
smtpServer.Host = "smtp.domenca.com"
smtpServer.EnableSsl = True
mail = New MailMessage()
mail.From = New MailAddress("admin@nikigre.com")
mail.To.Add(
mail.Subject = "Dvig denarja na bankomatu"
mail.Body ="Datum in ura dogodka:" & TextBox1.Text And "Dogodek:" & TextBox2.Text& "Dvignjeno denarja:" form3.textbox2.text
smtpServer.Send(mail)
Form6.Show()
Me.Hide()

Zgodovina sprememb…

  • spremenilo: nikigre22 ()

darkolord ::

Kako misliš vsakič naredil datoteko? Prej si rekel da bi rad v isto dodajal ...

Kaj javi ta koda za pošto?

nikigre22 ::

Oboje v primeru da ni interneta jo shrani če pa je pa pošlje podatke.

cekr ::

Takole imaš
mail.Body ="Datum in ura dogodka:" & TextBox1.Text And "Dogodek:" & TextBox2.Text& "Dvignjeno denarja:" form3.textbox2.text

Ponovno delaš napake z "&"


mail.Body ="Datum in ura dogodka:" & TextBox1.Text & "Dogodek:" & TextBox2.Text & "Dvignjeno denarja:" & form3.textbox2.text

Pazi na presledke pred in za "&". Sicer bo napaka.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Zgodovina sprememb…

  • spremenilo: cekr ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

visual basic 2008 express edition

Oddelek: Programiranje
221623 (1050) sel
»

[VB] Komunikacija s serijskimi napravami

Oddelek: Programiranje
412077 (1351) mNeRo
»

[VB 2005] branje teksta

Oddelek: Programiranje
241414 (1082) mNeRo
»

[ASP.NET] send mail

Oddelek: Programiranje
51102 (1039) Microsoft
»

[Visual studio .NET] Rabim pomoč

Oddelek: Programiranje
91399 (1241) darkolord

Več podobnih tem