Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

VB6: Lappen code versimpelen..

Laurens
7 antwoorden
  • Ik ben bezig met een programmaatje dat aan de hand van een getal in een array een plaatje neerzet. Nu ben ik dit momenteel per getal aan het doen, maar das natuurlijk niet zo handig van me.

    Ik weet echter niet hoe ik het kan vereenvoudigen. Jullie wellicht wel.

    stukje van de code:
    [code:1:bd79519cc5]
    If aZij(i, j) = 0 Then
    SpeelVeld.PaintPicture black00.Picture, j, i
    ElseIf aZij(i, j) = 1 Then
    SpeelVeld.PaintPicture black01.Picture, j, i
    ElseIf aZij(i, j) = 2 Then
    SpeelVeld.PaintPicture black02.Picture, j, i
    ElseIf aZij(i, j) = 3 Then
    SpeelVeld.PaintPicture black03.Picture, j, i
    ElseIf aZij(i, j) = 4 Then
    SpeelVeld.PaintPicture black04.Picture, j, i
    etc..
    [/code:1:bd79519cc5]

    Het getal dat in de array staat moet dus ook het getal zijn dat in de (verwijzing naar de) bestandsnaam staat.

    Kan iemand me helpen?

    Elja
  • Je kunt van die Black.blabla een array maken, black0(0).picture, black0(1).picture, enzovoort. Daarna hoef je alleen een variabele de uitkomst van AZij(i, j) te geven en die gebruiken in de aanroep. als de funtie een 3 teruggeeft en de variabele heet tempvar dan is een aanroep black0(tempvar).picture afdoende.

    [code:1:beb128662f]public sub somesub()
    dim tempvar as integer

    tempvar = AZij(i, j)
    Speelveld.Paintpicture black0(tempvar).picture
    end Sub[/code:1:beb128662f]

    Het maken van een array is ook simpel, hier komt een Global array
    [code:1:beb128662f]public type black0type
    picture as picture
    zomaariets as integer
    end type

    public black0() as Black0type[/code:1:beb128662f]

    Ik hoop dat je hier iets aan hebt
  • Een andere manier is deze:
    [code:1:c632ee08fc]
    Select case aZij(i, j)
    case 0
    SpeelVeld.PaintPicture black00.Picture, j, i
    case 1
    SpeelVeld.PaintPicture black01.Picture, j, i
    case 2
    SpeelVeld.PaintPicture black02.Picture, j, i

    ….
    case else
    'Iets wat niet hiervoor genoemd werd
    End select
    [/code:1:c632ee08fc]
  • [quote:ee4a4c990a="webspider"]Een andere manier is deze:
    [code:1:ee4a4c990a]
    Select case aZij(i, j)
    case 0
    SpeelVeld.PaintPicture black00.Picture, j, i
    case 1
    SpeelVeld.PaintPicture black01.Picture, j, i
    case 2
    SpeelVeld.PaintPicture black02.Picture, j, i

    ….
    case else
    'Iets wat niet hiervoor genoemd werd
    End select
    [/code:1:ee4a4c990a][/quote:ee4a4c990a]
    Ik ben geen VB-programmeur, maar dit lijkt me toch niet de oplossing. Wat doe je als je honderden (of duizenden) getallen hebt. Dat wordt een lekkere 'case' die ik niet wil invoeren; jij bent ook gestopt na 'case 2' (en zeg nou niet dat dat was om papier te besparen of zo :D )
  • Elja,

    Moet dit wel in je code worden opgenomen? Uiteraard is dit een mogelijke keus.
    Overweeg eens de tabel in een tekst of DB-file op te nemen en door het programma uit te laten lezen. Voor- of na-deel is dat zonder programma-wijziging snel de tabel kan worden aangepast.
    Overigens ontkom je in alle gevallen niet aan het netjes intypen van de relatie tussen het getal en de verwijzing naar het plaatje.

    Groet, Maarten.
  • [quote:c4d5573201="MaartenW"]Elja,

    Moet dit wel in je code worden opgenomen? Uiteraard is dit een mogelijke keus.
    Overweeg eens de tabel in een tekst of DB-file op te nemen en door het programma uit te laten lezen. Voor- of na-deel is dat zonder programma-wijziging snel de tabel kan worden aangepast.
    Overigens ontkom je in alle gevallen niet aan het netjes intypen van de relatie tussen het getal en de verwijzing naar het plaatje.

    Groet, Maarten.[/quote:c4d5573201]

    Welnee, de verwijzing naar dat plaatje is een property in de picturebox. Die kun je echt wel dynamisch opbouwen.
  • Laurens :evil: ,

    Was het erg dom van me om iets anders voor te stellen? Mijn voorstel is een alternatief, wat niet per se beter hoeft te zijn. Afhankelijk van de doelstelling wordt een keus gemaakt.
    Elja gaf aan niet teveel code te willen inkloppen. Dat kan (uitgesteld worden).
    Overigens hoef je niet mijn bericht te quoten, want dat staat er keurig voor :D .

    Groet, Maarten.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.