Gå til innhold

Visual Basic Roundup!


Anbefalte innlegg

Vel, linken fungerer visst nå.

 

Meget bra program, Johan123321. Brukergrensesnittet er klokt utformet og intuitivt - den er både estetisk tiltalende og simpel, slik at kjernefokuset ligger på selve funksjonaliteten.

 

Men jeg merker meg at overskrivingsprosessen er en tanke tidkrevende i forhold til ekvivalente applikasjoner - muligens kunne denne optimaliseres. I tillegg har jeg fremdeles visse problemer med det nåværende skinnet (som vist tidligere). Dette er dog bagatellmessig etter mitt syn, og er på ingen måte overskyggende i forhold til resten av programmet

 

Godt jobbet! :thumbup:

Lenke til kommentar
Videoannonse
Annonse

Muligens kan en optimalisere det ett stykk videre ved hjelp av API, men jeg tror det fremdeles ligger mye vinning i å forbedre VB-koden. Følgende prosedyrer viste seg med en betraktelig bedre ytelse enn applikasjonen din:

 

Public Sub EraseFile(sFile As String)

 

    Dim Free As Long, Tell As Long, currSpaceLeft As Long, bData() As Byte

   

    ' Hent ledig filnummer

    Free = FreeFile

   

    ' Initialiser buffer til 1 kB med data

    RandomizeArray bData, 1024

   

    ' Åpne fil binarisk - dette øker både ytelse og kontroll på hva som i realiteten skrives

    Open sFile For Binary As #Free

   

        ' Fortsett inntil vi har nådd enden på filen

        Do

       

            ' Beregn den gjennværende datamengden som må overskrives

            currSpaceLeft = LOF(Free) - Seek(Free)

         

            ' Finn dernest ut om vi må tilpasse array-størrelsen

            If currSpaceLeft < 1024 Then

           

                ' Sjekk hvorvidt vi har noe å overskrive

                If currSpaceLeft > 0 Then

           

                    ' Reinitialiser array i så fall

                    RandomizeArray bData, currSpaceLeft

           

                Else

               

                    ' Avslutt overskrivningen

                    Exit Do

               

                End If

           

            End If

           

            ' Skriv til fil

            Put #Free, , bData

   

        Loop

   

    ' Lukk nåværende fil

    Close #Free

 

End Sub

 

Public Sub RandomizeArray(aArray() As Byte, Lenght As Long)

 

    Dim Tell As Long

 

    ' Initialiser tilfeldighetsgeneratoren

    Randomize

 

    ' Alloker array

    ReDim aArray(Lenght)

 

    ' Sett til tilfeldig data

    For Tell = LBound(aArray) To UBound(aArray)

   

        ' Sett elementet

        aArray(Tell) = Rnd * 255

   

    Next

   

End Sub 

Lenke til kommentar

Forleden dag kom jeg i tanker om å optimalisere noen av VB-funksjonene, idet disse ofte er trege grunnet plattformuavhenighet - de takler nært sagt alle konfigurasjoner og oppsett. Dette er ikke en nødvendighet etter mitt behov, og jeg besluttet følgelig å effektivisere prosedyren. Dette bød ikke på særlig problematikk, især ettersom selv en simpel og endefrem VB-kode kan overvinne Replace-funksjonen ytelsesmessig.

 

Sluttresultatet kan nedlastes her. Jeg må for øvrig få si meg meget fornøyd med prosedyren - den er ved de fleste tilfeller over 50 ganger raskere enn den vedlagte Replace-funksjonen i VB. For øvrig hadde jeg satt meget pris på om dere hadde stemt på programmet.

 

Edit: Måtte be Leif om å forlate innlegget.

Endret av aadnk
Lenke til kommentar

Degeim, du ødela nettop øynene mine..

 

Jeg har sagt det før og jeg sier det igjen, slutt å tull med skjerminnstillinger på den måten!

Hvis du vil ha spillet i fullscreen bør du bruke DirectX e.l., fordi da endres alt tilbake som normalt etterpå.

 

Programmet stilte Hz ned til 60, og ikke tilbake igjen. Hvis programmet av en eller annen grunn klikker vil heller ikke oppløsningen endres tilbake.

 

Eidit: Jeg måtte forresten også stille skjermbildet på CRT-skjermen.

Endret av Jonas
Lenke til kommentar

(Se vedlegg)

 

TextBox- og CommandButton-kontrollene flimrer ikke, men Label-kontrollen gjør. Hvordan kan jeg forhindre det?

 

Koden:

Option Explicit

 

Dim EndLoop As Boolean

 

Private Sub Form_Load()

    

    Me.Show

    

    Do Until EndLoop

        

        DoEvents

        

        Me.Cls

        

        Dim i

        For i = 1 To 10

            Me.Print "Test " & i

        Next

        

    Loop

    

    End

    

End Sub

 

Private Sub Form_Unload(Unload As Integer)

    EndLoop = True

End Sub 

 

Edit: Tusen innlegg i dette forumet!

LabelTest.exe

Endret av Jonas
Lenke til kommentar

Problemet skyldes simpelthen det faktum at labeller tegnes direkte på formens vindu, og ikke et egent, hvilket er tilfellet med tekstbokser og kommandoknapper. For å løse dette, kan du enten legge de relevante labellene i en eller flere bildebokser (PictureBox), eller rett og slett tegne teksten i labellene manuelt med Print når dette er nødvendig.

Lenke til kommentar
  • 1 måned senere...

Hei VB-folk!

 

Noen med erfaringer fra DirectDraw og 2D-grafikk i DirectX? (7)

Jeg er ganske ferdig med tegne-delen i spillet mitt, men jeg er ute etter å optimalisere litt. (Har 350+- FPS, men regner med at den synker når prosjektet går mot slutten) Er det noe mulighet for å feks. senke kvaliteten på tavlene, el. ?

Endret av Jonas
Lenke til kommentar

The Adventures Of Fnelda

http://home.no.net/cronoman/Fnelda.zip

 

Et bittelite spill laget av meg (kildekode ikke inkludert btw)

Av en eller annen grunn så funker det ikke på alle pcer, litt sånn forskjellige ting skjer, men hva kan man forvente av et spill laget i VB?

 

Uansett, du trenger :

DirectX 7 eller bedre

OGG Vorbis DS filter (ligger med)

 

og det er alt.

 

spillet er på noen megabyte

inkluderer map editor (dårlig, er noen knapper som ikke har bilde eller tekst på toolbaren, men dere finner den vel.) dokumentasjon til scriptinga (også dårlig, ble ikke helt ferdig med dokumentasjonen før jeg fikk bedre ting å gjøre) og en item editor

 

animering er ikke implementert i kjernen, for det ble for mye jobb, når jeg allerede hadde implementert det meste som ikke hadde med animering å gjøre først. Så det ville betydd en god omorganisering av hele prosjektet.

 

Har dere noen kommentarer eller er interresert i kildekoden, send mail på corpsemourne (at) hotmail (dot) com eller cronoman (at) online (dot) no

 

har fått god respons på det tidligere, men som sagt er dette et prosjekt jeg la på is for lenge siden, og er langt fra ferdig. Og kildekoden er uorganisert og uten kommentarer, så den får ingen før de spør om noe spesifikt de vil ha.

 

btw : menyen er absolutt ikke ferdig. Bare trykk enter med en gang, ikke prøv å naviger. (men du kan prøve å komme deg på "Load Game" for da kommer det credits :roll:

 

edit : jeg prøvde det på den bærbare pcen min nå. Selve spillet fikk en "Object doesn't support this action" feilmelding (bakoverkompatibilitet meg i reven) men map editoren funka ihvertfall :p

Noe jeg syns er rart for begge bruker DD7 :p kan ha noe med Quartz kjernen å gjøre (DirectShow)

Endret av CronoMan
Lenke til kommentar
Hei VB-folk!

 

Noen med erfaringer fra DirectDraw og 2D-grafikk i DirectX? (7)

Jeg er ganske ferdig med tegne-delen i spillet mitt, men jeg er ute etter å optimalisere litt. (Har 350+- FPS, men regner med at den synker når prosjektet går mot slutten) Er det noe mulighet for å feks. senke kvaliteten på tavlene, el. ?

Optimalisering i VB er for meg et ukjent begrep :p

 

Eneste som du kan gjøre er å optimalisere gjennomgangen av tabeller

(heh, uten pekere så er disse mulighetene også meget begrenset)

Skal du søke etter etter ett spesielt objekt, er det for eksempel lurt å begynne på midten av tabellen, og gå derifra ut til "hver side". Dette KAN gjøre at ting går fortere, men absolutt ingen garanti. Men det går ihvertfall ikke noe merkbart tregere.

Lenke til kommentar

Særdeles bra, kaffenils. Programmet ditt løste alle sudoku-brettene jeg gav det uten å mukke.

 

Har du skrevet hele løse-algoritmen selv, eller har du latt deg inspirere av andre? I hvert fall ser det ut at løsningsmetode nummer 2 i Wikipedia-artikkelen tas i bruk.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...