Avatar billede maagefinke Nybegynder
12. december 2005 - 11:30 Der er 8 kommentarer og
1 løsning

Sammensatte typer og arrays fejl i koden

Kan nogen finde den fejl jeg har lavet i nedenstående kode?

Problem Efter 1. indtastning af data, går systemet ned, når jeg  rører ved txtfeltet, hvor jeg skal indtaste det nye ArrayID.
Jeg mener, at koden skulle være således, at der kan indtastes mere end et navn mv.

Option Explicit
Dim Person(100) As PersonType
Dim ArrayID As Integer

Private Sub cmdInput_Click()
Person(ArrayID).Navn = InputBox("Skriv navn")
Person(ArrayID).Adresse = InputBox("Skriv adresse")
Person(ArrayID).Alder = InputBox("Skriv alder")

End Sub

Private Sub cmdOutput_Click()
MsgBox "Navn: " & Chr$(9) & Person(ArrayID).Navn & Chr$(13) & "Adresse: " & Chr$(9) & Person(ArrayID).Adresse & Chr$(13) & "Alder: " & Chr$(9) & Person(ArrayID).Alder


End Sub

Private Sub Form_Load()

End Sub

Private Sub txtIndex_Change()
ArrayID = txtIndex.Text
End Sub
Avatar billede maagefinke Nybegynder
12. december 2005 - 11:31 #1
PS i et modul har jeg følgende kode:
Option Explicit

Type PersonType
Navn As String
Adresse As String
Alder As Integer
End Type
Avatar billede supertekst Ekspert
12. december 2005 - 11:34 #2
Forslag:
Er det ikke fordi ArrayId skal sættes til en numerisk værdi? Så vidt jeg kan se tildeles en "tekst-"
Avatar billede maagefinke Nybegynder
12. december 2005 - 12:09 #3
Jeg har ændret koden til:
Private Sub txtIndex_Change()
ArrayID = Val(txtIndex.Text)
End Sub
men når jeg vis se de indtastede data, er det kun det sidste der vises. Der overskrives altså på en eller anden måde.
Avatar billede maagefinke Nybegynder
12. december 2005 - 12:10 #4
Hov, men nu går systemet ikke ned længere.
Avatar billede supertekst Ekspert
12. december 2005 - 12:36 #5
så er der jo fremskridt - ArrayId skal jo ændres succesivt eller skrives der jo i det samme?
Avatar billede maagefinke Nybegynder
12. december 2005 - 13:32 #6
Jeg mente, at brugeren ændrede arrayid-et ved at skrive et tal her?
Jeg har ikke meget forstand på dette...det er en afskrift fra en lærebog i VB6, så det burde være rigtigt. Men jeg har sikkert (jo) alligevel lavet en fejl.

Private Sub txtIndex_Change()
ArrayID = txtIndex.Text
End Sub
Avatar billede supertekst Ekspert
12. december 2005 - 14:18 #7
Ja - det er korrekt, hvis der tilskrives forskellige værdier - men for at se dem alle er du nødt til at indeksere gennem arrayet:

x-0-x-1-x-2-x-3-x-4-x, tallene repræsenterer det enkelte element i arrayet
du skal derfor anvende en for-sætning eller lignende - idet du da skal have en værdi, der repræsenterer den højste værdi (plads) i arrayet, hvori der er indsat data.
Avatar billede maagefinke Nybegynder
12. december 2005 - 15:38 #8
>supertekst Med denne tilføjelse lykkedes det. Nu skulle alt være i orden. Tak for hjælpen. Lav lige et svar, så du kan få points.
Private Sub cmdOutput_Click()
For ArrayID = 1 To 5
MsgBox "Navn: " & Chr$(9) & Person(ArrayID).Navn & Chr$(13) & "Adresse: " & Chr$(9) & Person(ArrayID).Adresse & Chr$(13) & "Alder: " & Chr$(9) & Person(ArrayID).Alder
Next
Avatar billede supertekst Ekspert
12. december 2005 - 15:56 #9
Selv tak - det var godt det lykkedes. Her er så et svar.
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