/ 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
Arrays...
Fra : Thomas Løcke


Dato : 08-08-02 06:40

Hej NG..

Jeg sidder og roder lidt med både VB og PHP. I PHP kan man lave et array som
er "åbent", i den forstand at det selv udvider sig i takt med at der fyldes
data ind.

Kan man også det i VB?

Umiddelbart fortæller alle mine newbie bøger mig at arrays i VB altid skal
erklæres som f.eks. dim data(100) as xxxxx, hvor 100 så er det maksimale
antal poster der kan indføres i array'et.

Jeg oplever det som langt mere praktisk sådan som PHP gør det, og håber at
VB har en lignende metode.

Håber nogen kan hjælpe..

Mvh
Thomas L.





 
 
Jens Vestergaard (08-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 08-08-02 06:50

"Thomas Løcke" <thomas@responsum.dk> skrev i en meddelelse
news:3d520425@news.wineasy.se...
> Hej NG..
>
> Jeg sidder og roder lidt med både VB og PHP. I PHP kan man lave et array
som
> er "åbent", i den forstand at det selv udvider sig i takt med at der
fyldes
> data ind.
>
> Kan man også det i VB?

Du kan bruge ReDim

Dim x As Long
Dim myArray() as String

For x = 1 To 100
ReDim myArray(x)
Next

Brug ReDim Preserve, hvis du vil bevare indholdet af de eksisterende
array-elementer.


--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Thomas Løcke (08-08-2002)
Kommentar
Fra : Thomas Løcke


Dato : 08-08-02 07:05

Hej Jens,

"Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
news:3d520656$0$89534$edfadb0f@dspool01.news.tele.dk...
> Du kan bruge ReDim
>
> Dim x As Long
> Dim myArray() as String
>
> For x = 1 To 100
> ReDim myArray(x)
> Next
>
> Brug ReDim Preserve, hvis du vil bevare indholdet af de eksisterende
> array-elementer.

Ok, vil det sige, at hvis jeg har f.eks. en .txt fil, hvor indholdet svinger
lige fra 1 linie til xxx linier, og jeg har behov for linievis at indlæse
dette indhold til et array, så kan jeg gøre som følger:

dim taeller as long
dim linier() as string
dim fil as string

fil=sti til fil
taeller=0

open fil for input as #1
do while EOF(1)=false
taeller=taeller+1
redim linier(taeller)
line input #1, linier(taeller)
loop
close #1

Har jeg fattet det korrekt?

Mvh
Thomas L.



Mads Chr. Olesen (08-08-2002)
Kommentar
Fra : Mads Chr. Olesen


Dato : 08-08-02 07:11

det ser godt ud, bortset fra du nok skal bruge
redim preserve linier(taeller)


"Thomas Løcke" <thomas@responsum.dk> skrev i en meddelelse
news:3d520a14$1@news.wineasy.se...
> Hej Jens,
>
> "Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
> news:3d520656$0$89534$edfadb0f@dspool01.news.tele.dk...
> > Du kan bruge ReDim
> >
> > Dim x As Long
> > Dim myArray() as String
> >
> > For x = 1 To 100
> > ReDim myArray(x)
> > Next
> >
> > Brug ReDim Preserve, hvis du vil bevare indholdet af de eksisterende
> > array-elementer.
>
> Ok, vil det sige, at hvis jeg har f.eks. en .txt fil, hvor indholdet
svinger
> lige fra 1 linie til xxx linier, og jeg har behov for linievis at indlæse
> dette indhold til et array, så kan jeg gøre som følger:
>
> dim taeller as long
> dim linier() as string
> dim fil as string
>
> fil=sti til fil
> taeller=0
>
> open fil for input as #1
> do while EOF(1)=false
> taeller=taeller+1
> redim linier(taeller)
> line input #1, linier(taeller)
> loop
> close #1
>
> Har jeg fattet det korrekt?
>
> Mvh
> Thomas L.
>
>



Thomas Løcke (08-08-2002)
Kommentar
Fra : Thomas Løcke


Dato : 08-08-02 07:13

Hej Mads,

Ahhh... Der sev den ind! Så koden skal altså være:

dim taeller as long
dim linier() as string
dim fil as string

fil=sti til fil
taeller=0

open fil for input as #1
do while EOF(1)=false
taeller=taeller+1
redim preserve linier(taeller)
line input #1, linier(taeller)
loop
close #1

Så kan jeg læse indholdet i filen, ligegyldigt hvor stor filen er?

SMART!

At tænke sig at jeg har siddet og fumlet med det så længe, når løsningen i
virkeligheden er så simpel.. Men ok, sådan er det vel at være newbie..

Mvh
Thomas L.


"Mads Chr. Olesen" <MadsChrO@Yahoo.com> skrev i en meddelelse
news:ait1tu$7e3$1@sunsite.dk...
> det ser godt ud, bortset fra du nok skal bruge
> redim preserve linier(taeller)




Tomas Christiansen (08-08-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 08-08-02 23:14

Thomas Løcke skrev:
> do while EOF(1)=false
> taeller=taeller+1
> redim preserve linier(taeller)
> line input #1, linier(taeller)
> loop
....
> Så kan jeg læse indholdet i filen, ligegyldigt hvor stor filen er?

Tjaaa... Hvis du har tid og RAM nok.

Hvis ikke jeg tager meget fejl, gør VB det, ved ReDim Preserve, at
hele indholdet kopieres til et nyt sted i RAM, hvor der lige netop er
plads til ét element mere. Det kommer til at tage tid og bruge en hel
del plads, hvis filen er stor.

Du kan eventuelt starte med:

ReDim linier(1000)

og derefter foretage en check lige inden du indlæser og tildeler det
indlæste til tabellen, og kun udvide hvis der er behov for det:

If Taeller > UBound(linier) Then
ReDim Preserve linier(Ubound(linier)+100)
End If

Til sidst (når løkken er færdig) kan det være nødvendigt at justere
tabellens størrelse ned:

ReDim Preserve linier(Taeller)

Vælg selv de tal (1000,100) som passer dig bedst.

Bemærk iøvrigt at du kan bruge navnet Tæller i stedet for Taeller.

-------
Tomas


Magne Namsvatn (11-08-2002)
Kommentar
Fra : Magne Namsvatn


Dato : 11-08-02 08:59

Et annet alternativ kan være å telle linjene i fila først, for så å
dimensjonere tabellen etterpå. Da blir iallefall størrelse på tabellen
korrekt.
Et godt tips er også å bruke funksjonen FreeFile for å finne fil-nummer. Da
oppstår det ikke noen konflikter..
eks:
dim iFile as integer
iFile = FreeFile
open <filename> for input as iFile
Line Input #iFile,linier.....
....
Close #iFile
-------------
Magne

"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:aiuqfm$19os$1@news.cybercity.dk...
> Thomas Løcke skrev:
> > do while EOF(1)=false
> > taeller=taeller+1
> > redim preserve linier(taeller)
> > line input #1, linier(taeller)
> > loop
> ...
> > Så kan jeg læse indholdet i filen, ligegyldigt hvor stor filen er?
>
> Tjaaa... Hvis du har tid og RAM nok.
>
> Hvis ikke jeg tager meget fejl, gør VB det, ved ReDim Preserve, at
> hele indholdet kopieres til et nyt sted i RAM, hvor der lige netop er
> plads til ét element mere. Det kommer til at tage tid og bruge en hel
> del plads, hvis filen er stor.
>
> Du kan eventuelt starte med:
>
> ReDim linier(1000)
>
> og derefter foretage en check lige inden du indlæser og tildeler det
> indlæste til tabellen, og kun udvide hvis der er behov for det:
>
> If Taeller > UBound(linier) Then
> ReDim Preserve linier(Ubound(linier)+100)
> End If
>
> Til sidst (når løkken er færdig) kan det være nødvendigt at justere
> tabellens størrelse ned:
>
> ReDim Preserve linier(Taeller)
>
> Vælg selv de tal (1000,100) som passer dig bedst.
>
> Bemærk iøvrigt at du kan bruge navnet Tæller i stedet for Taeller.
>
> -------
> Tomas
>



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

Månedens bedste
Årets bedste
Sidste års bedste