nAD Skrevet 9. oktober 2009 Del Skrevet 9. oktober 2009 Noen som vet om en fin side som forklarer greit om structures, skal lage et array ut i fra noen tekstbokser som regner ut noen tall. Utregnings formelen ser slik ut: a = (b - c)/c , hvor b er tall som ligger i arrayet, c er det som blir skrevet inn i tekstboksen og a er det som skal bli skrevet ut etter regnestykket. Dim b(4) As Double Dim c(4) As Double MyBase.Load b = {10,10,30,40} c = {txtbox1,txtbox2,txtbox3,txtbox4,txtbox5} End Sub btn_click Calc() End Sub Sub Calc() For i = b.GetUpperBound(0) a = (b(i) - c(i))/c Next End Sub Sånn ser jeg for meg koden nå, jeg ser for meg at 'a' må inn i en structure med en 'id'. Men er litt grønn på det området. Hjelp tas i mot med stor klem. Lenke til kommentar
GeirGrusom Skrevet 9. oktober 2009 Del Skrevet 9. oktober 2009 Dim a() As Double Dim b() As Double = {???} Dim c As New List(Of Double) Private Sub ReadValues() c.Clear() For Each txt As Control In Controls If txt Is TextBox And txt.Tag = "1" Then Dim value As Double If Double.TryParse(txt.Text, value) Then c.Add(value) End If Next End Sub Private Sub Calc() Redim a(c.Count) For i = 0 To c.Count a(i) = (b(i) - c(i))/c Next i End Sub Noe slikt? Lenke til kommentar
nAD Skrevet 9. oktober 2009 Forfatter Del Skrevet 9. oktober 2009 Er noen hakk over hva jeg er i stand til, dette er hva jeg "kan": variabler (string etc.), if og case, sub prosedyrer, function, do loops, for og next løkker, array .. og nå structures. Så har komt frem til dette, vet ikke helt om det er rett? Structure aaa Dim aa As Double End Structure Dim c(4) As Double Dim b(4) As Double Dim a(4) As aaa Handles MyBase.Load c(0) = txt0.Text c(1) = txt1.Text c(2) = txt2.Text c(3) = txt3.Text c(4) = txt4.Text b(0) = 2 b(1) = 2 b(2) = 2 b(3) = 2 b(4) = 2 End Sub btnCompute.Click regn() End Sub Sub regn() For i = 0 To c.GetUpperBound(0) a(i).aa = (b(i) - c(i)) \ c(i) Next End Sub Hvordan kan jeg printe ut a(i).aa til en tekstboks? Prøvde Sub regn() For i = 0 To c.GetUpperBound(0) a(i).aa = (b(i) - c(i)) \ c(i) txt0.Text = a(0).aa txt1.Text = a(1).aa ..etc Next End Sub Men da kræsja alt uten feilmelding. huhu Lenke til kommentar
GeirGrusom Skrevet 9. oktober 2009 Del Skrevet 9. oktober 2009 Vel, kanskje jeg skal lære deg noe av det nyttigste du noensinne kommer til å lære da, debugging Hvis den kræsjer i funksjonen regn, så tryker du på første linjen i funksjonen (For i saken) og trykker på F9 Dette setter et breakpoint. Når du nå starter programmet, og trykker på knappen, så vil Visual Studio pause programmet, og gi deg en gul pil i venstre delen av programmet. Nå kan du holde over alle variablene for å se verdien i dem, og over uttrykk for å se hva de blir regnet ut til (du kan holde over deler av et uttrykk for å se hva de blir også). Trykk F10 for å hoppe til neste linje, F11 for å hoppe inn i prosedyrer eller lignende som blir kalt. Da blir det mye enklere å se hva som går galt, og hvorfor det går galt. Trykk F5 for å fortsette programmet på vanlig måte. Det er forresten enklere å bruke Length egenskapen fremfor GetUpperBounds(0) også, dessuten kan den gså visualiseres under debugging. Lenke til kommentar
nAD Skrevet 9. oktober 2009 Forfatter Del Skrevet 9. oktober 2009 (endret) Vært innom debugging også, gjorde om koden til Structure aaa Dim aa As Double End Structure Dim c(4) As Double Dim b(4) As Double Dim a(4) As aaa Dim d(4) As TextBox Handles MyBase.Load c(0) = txt0.Text c(1) = txt1.Text c(2) = txt2.Text c(3) = txt3.Text c(4) = txt4.Text b(0) = 2 b(1) = 2 b(2) = 2 b(3) = 2 b(4) = 2 d(0) = txt00 d(1) = txt01 d(2) = txt02 d(3) = txt03 d(4) = txt04 End Sub btnCompute.Click regn() End Sub Sub regn() For i = 0 To c.GetUpperBound(0) a(i).aa = (b(i) - c(i)) \ c(i) d(i).Text = a(i).aa Next End Sub Debuggen sier at a(0).aa = 0, a(1).aa = 0 osv. Så det er noe med den structuren jeg ikke heelt forstår. Takker for hjelpen sålangt! EDIT: Altså, er det ikke slik at a(0).aa = 'tallet som blir regnet ut' Forstår ikke at den er 0. P.S Bruker VS Express, syns ikke "Locals" viser så mye info som den gjør på skolen når lærer underviser. Er det bare meg? Endret 9. oktober 2009 av nAD Lenke til kommentar
GeirGrusom Skrevet 9. oktober 2009 Del Skrevet 9. oktober 2009 (endret) Vet ikke, jeg bruker Visual Studio Standard, så har ikke vært så mye borti Express. Men til koden din, du har ingen Constructor. Du har Form.Load, som er et event som avfyres når WM_LOAD melding blir sendt til formen din gjennom Windows Message Queue. Constructorer heter Sub New i Visual Basic 2008 Public Class MyForm Inherits System.Windows.Forms.Form Public Sub New() Me.Text = "Hello World Form!" End Sub End Class La InitializeComponents funksjonen være der den er, men all lesing/skriving til kontroller må skjer etter denne (da den lager kontrollene og plasserer dem på formen din) Jeg kan ærlig talt ikke se at noe er i veien, så jeg kan ikke egentlig hjelpe deg noe mer enn det. Endret 9. oktober 2009 av GeirGrusom Lenke til kommentar
nAD Skrevet 11. oktober 2009 Forfatter Del Skrevet 11. oktober 2009 (endret) Dim c(4) As Double Dim b(4) As Double Dim a(4) As Double Dim d(4) As TextBox Handles MyBase.Load c(0) = txt0.Text c(1) = txt1.Text c(2) = txt2.Text c(3) = txt3.Text c(4) = txt4.Text b(0) = 2 b(1) = 2 b(2) = 2 b(3) = 2 b(4) = 2 End Sub btnCompute.Click regn() End Sub Sub regn() d(0) = txt00 d(1) = txt01 d(2) = txt02 d(3) = txt03 d(4) = txt04 For i = 0 To c.GetUpperBound(0) a(i).aa = (b(i) - c(i)) \ c(i) d(i).Text = a(i) Next End Sub Jah, ehm. Problemet var at jeg brukte "/" og ikke "/". Går å graver meg ned. Dette ble koden som funker. Endret 11. oktober 2009 av nAD Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå