Hej allesammen
Jeg er lige gået i gang med at lære VB 6.0, til formålet har jeg anskaffet
et eksemplar af Jacob Kristiansens bog "Start på Viaual Basic 6.0". Nu er
jeg kommet til afsnittet omkring ActiveX-controllers og jeg har kørt
samtlige turturials fra bogen, på et tidspunkt er jeg vist "kommet til" at
pille ved nogle knapper i værktøjs-linien, med det resultat at hver gang jeg
prøver at starte mit tegneprogram (turturial fra bogen) med
ActiveX-controlleren (farveblander) så loader systemet min Internet Explorer
og placerer farveblanderen i browser-vinduet. Controlleren virker fint, men
jeg kunne nu godt tænke mig at den holdt sig til mit forhåndenværende
projekt, og ikke sådan stak af. :)
Her er et andet lille problem:
GENERAL DECLERATIONS
Option Explicit
Dim AntalKort As Integer
Dim Kort() As String
Dim Taeller As Integer
Dim VisKort As Integer
Dim KortVaerdi As String
GENERAL FINDKORT
Sub FindKort()
'Int((HighestValue - LowestValue + 1) * Rnd) + LowestValue
Dim MellemVaerdi As Integer
Dim MellemFarve As Integer
Dim ReelVaerdi As String
Dim ReelFarve As String
Dim KortVaerdi As String
Dim x As Integer
MellemVaerdi = Int(Rnd * 13 + 1)
MellemFarve = Int(Rnd * 4 + 1)
Select Case MellemVaerdi
Case 1
ReelVaerdi = "Es"
Case 11
ReelVaerdi = "Knægt"
Case 12
ReelVaerdi = "Dame"
Case 13
ReelVaerdi = "Konge"
Case Else
ReelVaerdi = MellemVaerdi
End Select
Select Case MellemFarve
Case 1
ReelFarve = "Spar"
Case 2
ReelFarve = "Klør"
Case 3
ReelFarve = "Ruder"
Case 4
ReelFarve = "Hjerter"
End Select
KortVaerdi = ReelFarve & " " & ReelVaerdi
If Taeller = 1 Then Kort(Taeller) = KortVaerdi
If Taeller = 1 Then Exit Sub
For x = 1 To (Taeller - 1)
If ReelVaerdi = Kort(x) Then FindKort
Next x
Kort(Taeller) = KortVaerdi
End Sub
COMMAND1 CLICK
Private Sub Command1_Click()
List1.Clear
AntalKort = InputBox("Hvor mange kort?", "Vælg antal", 13)
ReDim Kort(1 To AntalKort) As String
For Taeller = 1 To AntalKort
FindKort
Next Taeller
For VisKort = 1 To AntalKort
List1.AddItem Kort(VisKort)
Next VisKort
End Sub
FORM LOAD
Private Sub Form_Load()
Randomize
End Sub
Ovenstående er mit første lille selvkonstruerede program. Det er en rutine
til at udtrække et bestemt antal tilfældige spille-kort.
Problemet består i at den lille løkke her ikke virker:
If Taeller = 1 Then Kort(Taeller) = KortVaerdi
If Taeller = 1 Then Exit Sub
For x = 1 To (Taeller - 1)
If ReelVaerdi = Kort(x) Then FindKort
Next x
Meningen er jo at hvis den finder to ens kort, så skal den lave trækningen
om til den finder et som ikke er brugt.
Det gør den bare ikke, programmet kører fint, men det udtrækker altså stadig
ens kort.
Jeg håber at der er en af jer hajer som kan hjælpe mig her, da jeg vist er
kørt fast.
Med venlig hilsen og på forhånd tak
Thomas B. Hansen
PS. Jeg bruger Enterprize Edition, men uden MSDN-CD'en (hjælpe-filen) da vi
får Microsoft's Select CD-er (men MSDN CD'en er pist borte :()
PPS. Jeg ved godt at mine DIM-linier står lidt rodet, men jeg har stadig
ikke helt styr på hvor de bedst placeres.