22. juli 2009 - 17:22Der er
10 kommentarer og 1 løsning
forklaring af kode
Hej.
Jeg fandt dette meget simple program på nettet, men kunne godt tænke mig en uddybende forklaring på det. Der er 3 text boxe og en list box og en knap og nogle labels. koden ser sådan her ud:
Private Sub Command1_Click()
Open "test\" + filename.Text + ".erw" For Output As #1 'location of the file. Write #1, Text1.Text, Text2.Text 'The things you want to save Close 1
End Sub
Private Sub File1_DblClick()
Open "test\" + File1 For Input As #1 'Open file from directory Do Until EOF(1) Input #1, A1$, A2$ Text1.Text = A1$ 'The things you want to save Text2.Text = A2$ Loop Close 1
End Sub
Private Sub Form_Load()
File1 = "test\" 'where the dir. will search
End Sub
Det er altså hele koden.
den første del forstår jeg egentlig godt med den gemmer det som står i text1.texst og i text2.text
Det jeg så ikke forstår er det her:
Open "test\" + File1 For Input As #1 'Open file from directory Do Until EOF(1) Input #1, A1$, A2$ Text1.Text = A1$ 'The things you want to save Text2.Text = A2$ Loop Close 1 Jeg ser ikke nogen steder han har givet a1$ og a2$ en dim og hvordan ved den hvad der er hvad i den tekst fil og ja generelt vil jeg bare gerne have en brugbar forklaring på den del af koden.
æh er ikke lige med på hvad du mener, men det er ca sådan som du beskriver det at det virker ;o)
Programmet virker på den måde at du taster noget tekst i box 1 og 2. Skriver et filnavn du ønsker at gemme det under. Eks fil så bliver det gemt som fil.txt så bliver du nødt til at lukke programmet. Åbne det igen og så har du din fil.txt til at ligge i din listbox. Så dobbeltklikker du på den og så kommer din tekst frem i box 1 og box 2 igen
Synes godt om
Slettet bruger
22. juli 2009 - 20:10#3
Ok! men koden:
Do Until EOF(1) Input #1, A1$, A2$ Text1.Text = A1$ 'The things you want to save Text2.Text = A2$ Loop
Køre igennem hele filen igennem og tager kun de sidste 2 linjer? skal det være sådan?
Jeg har overhovedet ingen ide da jeg ikke rigtig forstår koden ;o)
men omvendt set. Der er jo også kun 2 linjer der i den. textbox 1 og 2 såeh...
Jeg var nemlig igang med at se om jeg kunne finde noget hjælp til mit program hvor jeg har 14 list boxe hvor jeg så vil gemme indholdet i og så vil jeg gerne have den til at hente det rigtige indhold ind i de 14 forskellige listboxe og ja der er så kun 1 listbox i det jeg fandt, men tilgengæld henter den da det rigtige tekst ind i de 2 text boxe. og hvordan vil du definere en variable uden at bruge dim?
hvis jeg bare skrive eks a = 5 og kører programmet siger den. Variable not defind.
Synes godt om
Slettet bruger
22. juli 2009 - 20:48#5
Hvis der står Option Explicit i din kode skal du bruge Dim a = 5 Nu ved jeg ikke hvilken VB version du bruger men dette gælder for alle versioner af VB.
Option Explicit betyder at du skal (Declarere) din variabler ellers gør VB det selv og kan give problemer. a = "abc" som jo er tekst kan således blive til a = 123 som er et tal, og det kan blive noget rod hvis du regner med at det er tekst. Derfor Option Explicit og Dim.
Option Explicit betyder "Udtrykkeligt" feks. Dim a As String så ved compileren/fortolkeren at det SKAL være en tekst
Hvis ikke du bruger Option Explicit kan a blive til hvad som helst og derfor er Dim ligegyldigt.
Den kode du viser mig er ganske simpel så du må beskrive nærmere hvor det er du går i stå
jeg elsker det bare når folk siger mit spørgsmål er simpel. Så føler jeg mig lige lidt ekstra dum he he... Nå men problemet er her: Input #1, A1$, A2$ Text1.Text = A1$ 'The things you want to save Text2.Text = A2$
Jeg arbejder som sagt på det med mine listboxe som så hedder januarlst og februarlst osv.
Og så er det jeg ikke helt forstår hvad det er jeg skal skrive for at kalde min tekst ind igen. Min save ser sådan ud og den virker:
'Her gemmer jeg til min fil'
Private Sub Command5_Click() Dim id As Integer Open "data\budget.txt" For Output As #1 For id = 0 To januarlst.ListCount - 1 Write #1, udgiftlst.List(id), januarlst.List(id), februarlst.List(id), martslst.List(id), aprillst.List(id), _ majlst.List(id), junilst.List(id), julilst.List(id), augustlst.List(id), septemberlst.List(id), _ oktoberlst.List(id), novemberlst.List(id), decemberlst.List(id), totallst.List(id) Next Close #1 End Sub
Hvilke variabler skal jeg lave osv for at hente min tekst ind igen i hver deres list?
Synes godt om
Slettet bruger
22. juli 2009 - 21:20#7
Nej Undskyld, det var sku ikke for at gøre dig dummere :-) Point taken!
Men nogen gange forsøger man at "pensle" det for meget ud, og så bliver det lidt fordummende, da modtageren siger til sig selv "det ved jeg sku da godt"
Nu sider jeg ikke lige med en VB og kan teste, men du burde kunne læse det same ind igen ved at ændre write #1 til input #1
Jeg er helt ny til vb og synes at jeg har mere som rigelig at sloges med. Noget så simpel som et program hvor du indtaster nogle tal. Lægger del tal sammen. Gemmer dem i en fil. Henter dem ind igen og så sletter nogle tal og trækker de slettede tal fra... Det har allerede taget mig over en uge at lave og regner med at kunne bruge en uge mere på det :o(
Er også sikker på jeg har alt alt for meget kode og at det kunne gøres meget kortere, men er som sagt ny så jeg må prøve mig frem.
Men smid et svar så lukker jeg det her spørgsmål
Synes godt om
Slettet bruger
22. juli 2009 - 22:56#9
nu siger jeg måske noget du allerede ved. Men Debug eller F8. Så kan du se hvad der sker linje for linje.
Hold spørgsmålet åben. Det er nemmere at spørge end at gætte sig til det.
Fortæl hvilken VB version du bruger, det gør det lidt nemmere
Nå men kan du ik lige tage et kig på min kode her. Jeg har sat min kommentar for hver linje sådan som jeg forstår det burde virke, men noget siger mig jeg har misforstået det.
Private Sub Command6_Click() Dim id As Integer Her definer jeg en variable og kalder den id
id = 0 Så giver jeg den tallet 0 til at starte med
Open "data\budget.txt" For Input As #1 Så åbner jeg min fil med alle mine tekst data i.
Do While EOF(1) = False Hvad den skal foretage sig ind til den når enden af min fil
id = id + 1 Her siger jeg så den skal tage id og lægge 1 tal til hver gang for at komme en tak længere ned i rækken.
Her kommer så mit input og alle disse liste skal den så smide data ind i og så er det jeg har sat (id) på til sidst og tror det er der min fejl er, men ved faktisk ik hvad jeg ellers skulle smide ind der?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.