/ 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
Dynamisk erklæring af array-størrelse
Fra : Jesper Stocholm


Dato : 19-03-02 17:38

Jeg har noget data, som jeg skal have puttet ind i et 2-dim array. Jeg
opdeler først ved linieskift, og derefter deler hver linie jeg op efter
vbTab. Mit problem er, at jeg ikke på forhånd ved, hvor mange linier jeg
kan komme til at få fra min kilde - og derfor ved jeg ikke, hvor stort jeg
skal lave mit array på forhånd.

Jeg har kode som:

Dim arMsg() As String
arMsg = Split(strNNTP, vbCrLf)
intBndAr = CInt(UBound(arMsg) - 6)
If intBndAr < 0 Then
Exit Function
End If
Dim arMsgTotal(intBndAr, 9) As String

Men når jeg prøver at kompilere det, så brokker den sig over sidste linie -
den fortæller mig:

Compile error:
Constant expression required.

.... og markerer derefter intBndAr. intBndAr er tidligere erklæret som
Integer.

Hvordan kommer jeg ud over dette ? I ASP/VBs kunne jeg lave en

execute "dim arMsgTotal(" & intBndAr & ",9)"

.... men det virker ikke i VB :(

pft,

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

 
 
Rayman (19-03-2002)
Kommentar
Fra : Rayman


Dato : 19-03-02 18:11

Jeg ved ikke om du kan gøre det i VB4, men i VB6, kan du godt, det kræver
dog i alle tilfælde, at du bruger ReDim istedet....

mvh. Rayman

"Jesper Stocholm" <spam200203@stocholm.dk> wrote in message
news:Xns91D6B34F971C6spamstocholmdk@192.38.208.81...
> Jeg har noget data, som jeg skal have puttet ind i et 2-dim array. Jeg
> opdeler først ved linieskift, og derefter deler hver linie jeg op efter
> vbTab. Mit problem er, at jeg ikke på forhånd ved, hvor mange linier jeg
> kan komme til at få fra min kilde - og derfor ved jeg ikke, hvor stort jeg
> skal lave mit array på forhånd.
>
> Jeg har kode som:
>
> Dim arMsg() As String
> arMsg = Split(strNNTP, vbCrLf)
> intBndAr = CInt(UBound(arMsg) - 6)
> If intBndAr < 0 Then
> Exit Function
> End If
> Dim arMsgTotal(intBndAr, 9) As String
>
> Men når jeg prøver at kompilere det, så brokker den sig over sidste
linie -
> den fortæller mig:
>
> Compile error:
> Constant expression required.
>
> ... og markerer derefter intBndAr. intBndAr er tidligere erklæret som
> Integer.
>
> Hvordan kommer jeg ud over dette ? I ASP/VBs kunne jeg lave en
>
> execute "dim arMsgTotal(" & intBndAr & ",9)"
>
> ... men det virker ikke i VB :(
>
> pft,
>
> --
> Jesper Stocholm
> http://stocholm.dk
> http://asp.stocholm.dk
> Svar til gruppen og ikke til mig privat pr. email :|



Jesper Stocholm (19-03-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 19-03-02 18:45

Rayman wrote in news:YiKl8.8459$FT.314557@news010.worldonline.dk:

> Jeg ved ikke om du kan gøre det i VB4, men i VB6, kan du godt, det
> kræver dog i alle tilfælde, at du bruger ReDim istedet....
>

mange tak for hjælpen ... jeg havde godt nok kigget på ReDim, men jeg
troede lidt, at der var en anden måde


Jeg endte med følgende kode (der compiler)

Dim arMsg(), arMsgTotal() As String
arMsg = Split(strNNTP, vbCrLf)

intBndAr = CInt(UBound(arMsg) - 6)
If intBndAr < 0 Then
Exit Function
End If
ReDim arMsgTotal(intBndAr, 9)

:)
--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Rayman (20-03-2002)
Kommentar
Fra : Rayman


Dato : 20-03-02 09:01

Jeg må lige gøre opmærksom på at i VB6 giver sætningen:
Dim arMsg(), arMsgTotal() As String
IKKE 2 string arrays, men arMsg() as Variant, arMsgTotal() as String,
hvilket lidt fjerner ideen i at have flere declares på samme linie (F#"%¤
Microsoft)

Mvh. Rayman

"Jesper Stocholm" <spam200203@stocholm.dk> wrote in message
news:Xns91D6BECA3F06spamstocholmdk@192.38.208.81...
> Rayman wrote in news:YiKl8.8459$FT.314557@news010.worldonline.dk:
>
> > Jeg ved ikke om du kan gøre det i VB4, men i VB6, kan du godt, det
> > kræver dog i alle tilfælde, at du bruger ReDim istedet....
> >
>
> mange tak for hjælpen ... jeg havde godt nok kigget på ReDim, men jeg
> troede lidt, at der var en anden måde
>
>
> Jeg endte med følgende kode (der compiler)
>
> Dim arMsg(), arMsgTotal() As String
> arMsg = Split(strNNTP, vbCrLf)
>
> intBndAr = CInt(UBound(arMsg) - 6)
> If intBndAr < 0 Then
> Exit Function
> End If
> ReDim arMsgTotal(intBndAr, 9)
>
> :)
> --
> Jesper Stocholm
> http://stocholm.dk
> http://asp.stocholm.dk
> Svar til gruppen og ikke til mig privat pr. email :|



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

Månedens bedste
Årets bedste
Sidste års bedste