/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
nulstille object
Fra : Thomas Julø


Dato : 30-12-01 11:10

Hej gruppe

Sidder lige og bakser med at nulstille et object. Via koden her nulstilles
værdierne men objecterne eksistrerer stadig, hvilket de ikke skal.
Objectet Iskage er i et klassemodul.

Er der mon en der kan hjælpe med at nulstille hele/alle objecterne ??

På forhånd tak.

Thomas Julø

----------
Option Explicit

Dim vaffel(10) As New Is_kage 'Her oprettes 10 objekter der er medlem af
klassen Is_kage
Dim prisIaLt As Currency
Dim i As Integer


Private Sub Bestil_Click() 'Her tildeles et objekt (vaffel(i) ) der er
medlem af
'Klassen Is_kage de nødvendige oplysninger
i = i + 1

OrdreLabel.Caption = "Bestilling nr " & Str(i + 1)

vaffel(i).M_jordbær = Val(Jordbær)
vaffel(i).M_Lakrids = Val(Lakrids)
vaffel(i).M_karamel = Val(Karamel)
vaffel(i).M_Chokolade = Chokolade
vaffel(i).M_Nødder = Nødder
vaffel(i).M_knas = Knas

Pris = vaffel(i).Beregnpris ' Her kaldes metoden BeregnPris i objektet
Vaffel(i)

End Sub



Private Sub Command3_Click()

End


End Sub

Private Sub Form_Load()

i = 0

OrdreLabel.Caption = "Bestilling nr " & Str(i + 1)

End Sub

Private Sub NyOrdre_Click()

Dim n As Byte

For n = 0 To 10
Set vaffel(n) = Nothing

Next



End Sub

Private Sub SeOrdre_Click()
Dim a As Integer

Picture1.Cls
Picture1.Print Tab(40); "ORDRE"
Picture1.Print
Picture1.Print "Bestil.nr "; Tab(10); "JordbærKugler"; Tab(25);
"LakridsKugler"; Tab(40);
Picture1.Print ; "KaramelKugler"; Tab(60); " Choko"; Tab(70); "Nødder";
Tab(80); "Knas";
Picture1.Print ; Tab(90); "Pris"
prisIaLt = 0

For a = 1 To i
Chokolade = 0: Nødder = 0: Knas = 0
If vaffel(a).M_Chokolade Then Chokolade = 1
If vaffel(a).M_Nødder Then Nødder = 1
If vaffel(a).M_knas Then Knas = 1
Picture1.Print a; Tab(15); vaffel(a).M_jordbær; Tab(30);
vaffel(a).M_Lakrids;
Picture1.Print Tab(48); vaffel(a).M_karamel; Tab(62); Chokolade;
Tab(72); Nødder; Tab(82);
Picture1.Print Knas; Tab(90); vaffel(a).M_pris
prisIaLt = prisIaLt + vaffel(a).M_pris
Next

Picture1.Print Tab(80); "---------------------"
Picture1.Print Tab(80); "At betale "; Tab(90); prisIaLt

End Sub





 
 
Esben (30-12-2001)
Kommentar
Fra : Esben


Dato : 30-12-01 12:13

Du skal ikke bruge Dim myObj As New myClass, så frasiger du dig nemlig
muligheden for selv at rydde op efter dig. Hvis du i stedet for

Dim vaffel(10) As New Is_kage

bruger

Dim n As Integer
Dim vaffel(10) As Is_kage
For n = 0 To 10
Set vaffel(n) = New Is_kage
Next n

vil objekterne også forsvinde, når du senere sætter referencerne til
Nothing.

--
VH

Esben
"Forskellen på drenge og mænd er prisen på deres legetøj."



Thomas Julø (30-12-2001)
Kommentar
Fra : Thomas Julø


Dato : 30-12-01 12:25

Tak for det, det vil jeg prøve


--
Venlig hilsen


Thomas K.J. Julø
"Esben" <esben@post.com> skrev i en meddelelse
news:3c2ef632$0$89066$edfadb0f@dspool01.news.tele.dk...
> Du skal ikke bruge Dim myObj As New myClass, så frasiger du dig nemlig
> muligheden for selv at rydde op efter dig. Hvis du i stedet for
>
> Dim vaffel(10) As New Is_kage
>
> bruger
>
> Dim n As Integer
> Dim vaffel(10) As Is_kage
> For n = 0 To 10
> Set vaffel(n) = New Is_kage
> Next n
>
> vil objekterne også forsvinde, når du senere sætter referencerne til
> Nothing.
>
> --
> VH
>
> Esben
> "Forskellen på drenge og mænd er prisen på deres legetøj."
>
>



Tomas Christiansen (30-12-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 30-12-01 23:45

Esben skrev:
> Du skal ikke bruge Dim myObj As New myClass, så frasiger du dig
nemlig
> muligheden for selv at rydde op efter dig.

Det er ikke rigtigt!

Hvis man har erklæret sit objekt med:

Dim myObj As New myClass

Bliver det ikke umiddelbart instantieret. Det sker først FØRSTE gang
der refereres til objektet myObj.

Nedlægger man objektet ved at sætte det til Nothing, bliver objektet
ganske rigtigt nedlagt, men SPØRGER manderefter på om objektet findes,
er der jo tale om en reference til objektet, hvorfor det straks bliver
oprettet påny.

Disse to linier kode placeret umiddelbart efter hinanden, vil derfor
medføre at intet sker i første linie, men at objektet bliver
instantieret og nedlagt igen i den anden linie:

Dim myObj As New myClass
Set myObj = Nothing

-------
Tomas


Niels (31-12-2001)
Kommentar
Fra : Niels


Dato : 31-12-01 11:14

Lige en kommentar til statementet "End".

Man skal aldrig bruge "End" til at afsluttet et, da
programmet stopper uden at udføre eventuelle
Form_Unload events og Class_Terminate events.

Brug istedet "Unload Me".

Man kan bruge det i forbindelse med debug, men
pas på .

- Niels G.

"Thomas Julø" <tkj@image.dk> wrote in message
news:3c2ee73b$0$94841$edfadb0f@dspool01.news.tele.dk...
[snip]
> Private Sub Command3_Click()
>
> End
>
>
> End Sub
[snip]



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste