Stránka 1 z 1

Visual Basic - chyba  Vyřešeno

Napsal: 25 říj 2011 11:33
od IIwetKKa
Dobrý den,

píšu program ve Visual Basicu 2008. Je to něco jako databáze žáků a k nim předmět, známku a datum zadání.

Na jednom formuláři mám řazení podle: jména, příjmení, data, předmětu a známky. Všechna řazení fungují jen seřazení podle předmětu ne. Když stisknu tlačítko seřadit program se sekne a nic nedělá.

Asi po 2 minutách mi to napíše chybu:

Modul CLR nemohl přejít z kontextu COM 0x20fab0 do kontextu COM 0x20fc20 po dobu 60 sekund.
Podproces, který vlastní cílový kontext či apartment, pravděpodobně buď provádí čekání bez
čerpání, nebo zpracovává časově náročnou operaci bez čerpání zpráv systému Windows. Tato
situace má obecně negativní dopad na výkon a může vést k tomu, že aplikace přestane
odpovídat, nebo k trvalému nárůstu použité paměti. Chcete-li tyto potíže vyřešit, všechny
podprocesy typu STA by měly používat primitiva čekání s čerpáním
(například CoWaitForMultipleHandles) a pravidelně čerpat zprávy během časově náročných
operací.

Co mám udělat, aby mi to fungovalo?

Učitel, kterému mám program odevzdat říkal, že mu to vadit nebude, ale mě to tam strašně štve. :D

Děkuji za radu IIwetKKa :smile:

Re: Visual Basic - chyba

Napsal: 25 říj 2011 13:13
od CZechBoY
pošli kod, takhle se nic poznat nedá

Re: Visual Basic - chyba

Napsal: 25 říj 2011 16:33
od IIwetKKa

Kód: Vybrat vše

  Public Sub razeni_predmet()
        prehozeni = True
        Do While prehozeni = True
            prehozeni = False
            i = 0
            Do While i < (ID - 1)

                pomocna = aPredmet(i)
                a = pomocna.Length
                a = a - 1
                a = pomocna.Remove(1, a)
                pomocna = a

                pomocna1 = aPredmet(i + 1)
                b = pomocna1.Length
                b = b - 1
                b = pomocna1.Remove(1, b)
                pomocna1 = b

                If pomocna > pomocna1 Then
                    pomocna = aID(i + 1)
                    aID(i + 1) = aID(i)
                    aID(i) = pomocna

                    pomocna = aJmeno(i + 1)
                    aJmeno(i + 1) = aJmeno(i)
                    aJmeno(i) = pomocna

                    pomocna = aPrijmeni(i + 1)
                    aPrijmeni(i + 1) = aPrijmeni(i)
                    aPrijmeni(i) = pomocna

                    pomocna = aDatum(i + 1)
                    aDatum(i + 1) = aDatum(i)
                    aDatum(i) = pomocna

                    pomocna = aZnamka(i + 1)
                    aZnamka(i + 1) = aZnamka(i)
                    aZnamka(i) = pomocna

                    prehozeni = True
                ElseIf pomocna = pomocna1 Then
                    pomocna = aPredmet(i)
                    a = pomocna.Length
                    a = a - 2
                    a = pomocna.Remove(2, a)
                    pomocna = a
                    a = pomocna.Remove(0, 1)
                    pomocna = a

                    pomocna1 = aPredmet(i + 1)
                    b = pomocna1.Length
                    b = b - 2
                    b = pomocna1.Remove(2, b)
                    pomocna1 = b
                    b = pomocna1.Remove(0, 1)
                    pomocna1 = b
                    If pomocna > pomocna1 Then
                        pomocna = aID(i + 1)
                        aID(i + 1) = aID(i)
                        aID(i) = pomocna

                        pomocna = aJmeno(i + 1)
                        aJmeno(i + 1) = aJmeno(i)
                        aJmeno(i) = pomocna

                        pomocna = aPrijmeni(i + 1)
                        aPrijmeni(i + 1) = aPrijmeni(i)
                        aPrijmeni(i) = pomocna

                        pomocna = aDatum(i + 1)
                        aDatum(i + 1) = aDatum(i)
                        aDatum(i) = pomocna

                        pomocna = aZnamka(i + 1)
                        aZnamka(i + 1) = aZnamka(i)
                        aZnamka(i) = pomocna

                        prehozeni = True
                    End If
                End If
                i = i + 1
            Loop
        Loop

        For i = 0 To (ID - 1)
            Form2.ListBox1.Items.Add(aID(i))
            Form2.ListBox2.Items.Add(aJmeno(i))
            Form2.ListBox3.Items.Add(aPrijmeni(i))
            Form2.ListBox4.Items.Add(aDatum(i))
            Form2.ListBox5.Items.Add(aPredmet(i))
            Form2.ListBox6.Items.Add(aZnamka(i))
        Next
    End Sub


u jména, příjmení, známky a data mi to normálně funguje, ale tohle nejde...

Re: Visual Basic - chyba

Napsal: 26 říj 2011 10:06
od IIwetKKa
chyba vyřešena... děkuji :)...