Avatar billede mega-hawk Nybegynder
22. juli 2009 - 17:22 Der 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.
Avatar billede Slettet bruger
22. juli 2009 - 19:50 #1
Man behøver ikke Dim med mindre der i toppen af programmet bliver declared Implicit.

Jeg går ud fra at du kan skive noget tekst i de 2 tekstbokse og så gemme teksten i en fil.

Der efter læse hele filen ind i Listboksen, men den læser det ind i text1 og tekst2, hvilket ikke giver mening.
Avatar billede mega-hawk Nybegynder
22. juli 2009 - 19:59 #2
æ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
Avatar billede 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?
Avatar billede mega-hawk Nybegynder
22. juli 2009 - 20:24 #4
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.
Avatar billede 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å
Avatar billede mega-hawk Nybegynder
22. juli 2009 - 20:57 #6
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?
Avatar billede 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
Avatar billede mega-hawk Nybegynder
22. juli 2009 - 21:30 #8
he he det bare ok...

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
Avatar billede 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
Avatar billede mega-hawk Nybegynder
23. juli 2009 - 20:38 #10
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?

Input #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)

Her gentager jeg lækken
loop
Her lukker jeg filen og går ud fra den hopper ud af min løkke når den har nået EOF
Close #1

Så hvor er min(e) fejl?
Avatar billede mega-hawk Nybegynder
19. august 2010 - 10:01 #11
lukker tråden
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester