Toon posts:

[VB] public dynamisch array

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn vraag is dus kan dit?

Een dynamisch array als public?

Ik kan het namelijk niet in de help vinden.
En gewoon declareren

Public array(variabele) as integer

Dat kan dus niet.
En met redim is het geen public variabele.

Ik wil dus mijn public array over meerdere formulieren gebruiken (waarom zou ik er anders een public van willen maken :?)

edit:

Typo's


edit:

Ok even wat duidelijker, ik was misschien wat onduidelijk:

Ik geeft in het begin de maten van het array op (na het opgeven staat het vast voor de rest van de uitvoering van het programma)

Nu wil ik dit array in meerdere formulieren kunnen gebruiken

Het betreft een 2-dimensionaal array.


Verwijderd

In een Formulier kan je geen public arrays gebruiken, maar je kan wel een global array maken in een 'gewone' module.

global iets() as integer

en dan met redim iets(10) kan je die dan aanpassen

Verwijderd

En als je nu eens een collection gebruikt?

Verwijderd

Verwijderd schreef op 08 augustus 2002 @ 11:23:
In een Formulier kan je geen public arrays gebruiken, maar je kan wel een global array maken in een 'gewone' module.

global iets() as integer

en dan met redim iets(10) kan je die dan aanpassen
Wanneer je variabele gedeclareerd is op module niveau of procedure niveau kun je naar hartelust redimmen. Wanneer een variabele ergens anders gedeclareerd is werkt redim als een declaratief statement en creëer je dus een nieuwe variabele.

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

eeuh ..als je gewoon een 1 dimensionale array wilt maken, gewoon een public variant aanmaken.. :? Das toch niet zo moeilijk? Dus
code:
1
2
3
4
5
6
Public VarNice as Variant

.
.
.
ReDim VarNice(10) 'of een ander getal; als je dan nog de waarde in je array wilt bewaren, doe dan Redim Preserve ipv Redim alleen.

Zo moet het wel lukken..

Verwijderd

Topicstarter
maar ik kan dus niet in het ene formulier het dynamisch array lezen, en in een ander?


edit:

Die laatste had ik nog niet gezien

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

die Public VarNice as Variant moet je declareren op een module... die kun je dan door het hele project gebruiken.. wat je op de ene formulier declareert (met dim gewoon), is een private declaratie> de scope is niet meer dan het formuliertje dus...

Verwijderd

Topicstarter
Ok even wat duidelijker, ik was misschien wat onduidelijk:

Ik geeft in het begin de maten van het array op (na het opgeven staat het vast voor de rest van de uitvoering van het programma)

Nu wil ik dit array in meerdere formulieren kunnen gebruiken

Het betreft een 2-dimensionaal array.

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Het volgende werkt dan toch gewoon?
code:
1
2
3
4
5
6
7
8
Module1 >
 Public niceVar(10, 10) As Integer

Form1 >
 ReDim Preserve niceVar(10, 15)

Form2 >
niceVar(10, 15)= 20


Of snap ik je vraag dan niet?

Verwijderd

Dan zou ik de array in een module declareren, dan kan je die in al je formulieren gebruiken.

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Verwijderd schreef op 08 augustus 2002 @ 11:48:
Dan zou ik de array in een module declareren, dan kan je die in al je formulieren gebruiken.
Dat zei ik dus al 4 posts gelee...

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Public test(10, 10) As Integer

Wil niet in een Form. ("Object modules"), maar je kunt hem wel in een module stoppen..

Trouwens het woord Global is zeer gedateerd <(=)VB4, en wordt aangeraden niet meer gebruikt te worden (al heeft het dezelfde functie als Public)

Maar nu wil hij volgens mij een volgens mij multidim array dynamisch hebben, en dat wil dus niet =o).

Public test(,) as integer

Word namelijk niet geaccepteerd.

Je moet dan ook:

Public test() as integer

gebruiken, en dan de array handmatig in een multi dim redimmen (lol)

Redim test(10,100) as integer

en daar is je multi dim dimensional array (:P)

Verwijderd

Topicstarter
edit:

laat maar

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

henkleerssen schreef op 08 augustus 2002 @ 11:47:
Het volgende werkt dan toch gewoon?
code:
1
2
3
4
5
6
7
8
Module1 >
 Public niceVar(10, 10) As Integer

Form1 >
 ReDim Preserve niceVar(10, 15)

Form2 >
niceVar(10, 15)= 20


Of snap ik je vraag dan niet?
Dat zal niet werken, omdat je je array al 'vast' gedeclareerd hebt met 10,10 ("Array already dimensioned" krijg je dan, oid)

Edit: met preserve worden je gegevens bewaard (tenzij je de array "verkleind"), zonder preserve raak je al je gegevens kwijt, in de array.

[ Voor 0% gewijzigd door Sponge op 08-08-2002 11:55 . Reden: zie boven ^ ]


Verwijderd

Topicstarter
Dat bedoelde ik dus!


Ik wil in mn module een public array(var1,var2) as integer
Dat kan dus niet
Var1 en var2 worden in form1 gegeven

en dan wil ik in form2 en in form3 wat met het array spelen.
(wat waarden toekennen, rekenen enzo)

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

41.6C.6D.61.72 schreef op 08 augustus 2002 @ 11:53:
[...]

Dat zal niet werken, omdat je je array al 'vast' gedeclareerd hebt met 10,10 ("Array already dimensioned" krijg je dan, oid)

Edit: met preserve worden je gegevens bewaard (tenzij je de array "verkleind"), zonder preserve raak je al je gegevens kwijt, in de array.
Klopt.. ik moet zelf altijd ff kijken.... het is niet helemaal logisch met VB.. hoe precies en wat..
Ik gebruik altijd gewoon het variant type (ipv echte definitie van wat er in je array gaat zitten zoals integers).. het scheelt een beetje in geheugen.. maar daar hebben we genoeg van...

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

m.a.w. het werkt nu? :)

Edit:

Het is dat m'n site (VB Fibre, zie sig) op dit moment plat ligt, maar anders.. Varianten zijn gewoon de duivel! Je wilt ze niet gebruiken. Ze zijn zo traaag!!!
(alhoewel, misschien staat het ook wel op m'n oude versie voor PSC: http://www.quadrantwars.com/optimizations.htm).

[ Voor 0% gewijzigd door Sponge op 08-08-2002 12:05 . Reden: Dit moest gewoon =-) ^ ]


Verwijderd

Topicstarter
Met dat redim werkt niet!

array already dimensioned...

En als ik het een variant laat (in de module)
zegt ie type mismatch

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Module:

Public myArray() As type

Om te redimmen:
Redim preserve myArray(100,100) as type

Verwijderd

Topicstarter
Ok zo werkt het! die () doen het hem dus.....

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

http://www.quadrantwars.com/optimizations.htm ... Eeuh er staat niks in van welke datatype je zou moeten gebruiken.. voor integer 2-dimensionale arrays (zou ook onnozel zijn).. en ook de tip "Always use long instead of single.. "eeuh de een werkt niet met decimalen en de ander wel.. goede tip hoor.. :?

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

henkleerssen schreef op 08 augustus 2002 @ 12:24:
http://www.quadrantwars.com/optimizations.htm ... Eeuh er staat niks in van welke datatype je zou moeten gebruiken.. voor integer 2-dimensionale arrays (zou ook onnozel zijn).. en ook de tip "Always use long instead of single.. "eeuh de een werkt niet met decimalen en de ander wel.. goede tip hoor.. :?
Ik weet het, ik heb die fout er nog steeds niet uitgehaald op m'n echte site (tijdgebrek) (en zijn nog een paar anderen met longs en singles, samen met pi) , niet veel reacties daarover gekregen (stuk of 4 mailtjes). de info die je hier vindt zijn nogal gedateerd, op m'n website heb ik er 39 op dit moment..

Maar je wilt niet weten hoeveel mensen zommaar een data type gebruiken voor loops enzo, Trouwens een long is 32bit DWORD, wat de processor gebruikt (geen FP, zoals de single). Daarom zijn longs beter. Heeft dus niet echt iets met decimalen te gebruiken. Ik zal eens kijken wat er gebeurd met "step 1"

Edit:
Met step 1 is de long nog minstens 800% sneller.

Ach en verder de site is toch een handig referentie middel.. er zijn toch dingen die vele mensen niet weten van / of \, $, etc..
Pagina: 1