Autor Thema: LS: Array definieren - illegal arraybound ...  (Gelesen 3210 mal)

Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
LS: Array definieren - illegal arraybound ...
« am: 18.11.04 - 22:21:50 »
Hi,

ich deklariere wie folgt ein Array (Option Declare eingeschaltet, Designerversion 6.5.2):

Code
	Dim intCollCount As Integer
	intCollCount = 10 'collSource.Count - 1
	Dim vDocArray(intCollCount) As Variant

Beim Kompilieren (speichern) des Scripts kommt die Fehlermeldung "illegal arraybound for vDocArray (hier) in Zeile 3.

Schreibe ich stattdessen
Code
	Dim intCollCount As Integer
	intCollCount = 10 'collSource.Count - 1
	Dim vDocArray(10) As Variant
dann lässt sich das Script kompilieren.

Woran könnte das denn liegen? Ich habe auch schon intCollCount als Variant deklariert, aber auch dann geht es nicht.


Danke für Eure Hilfe im Voraus.

Michael
« Letzte Änderung: 18.11.04 - 23:02:55 von -Michael- »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: LS: Array definieren - illegal arraybound ...
« Antwort #1 am: 18.11.04 - 22:53:11 »
Hi, Michi,

ganz einfach: Du kannst derartige Deklaration nicht mit Variablen vornehmen. Also:
Entweder wie Deine Methode 2 oder
mit einem Redim.
Zugegebenermassen auf den ersten Blick schwierig zu verstehen, aber dann doch sinnig.

Herzliche Grüsse von 83313 nach 83236  :)
Bernhard

PS:
Variante 1:
Dim aArray (0 to 10) as String

Variante 2:
Dim aArray () as String
Dim iUBound as Integer

iUBound = 10
Redim aArray (0 to iUBound)


Offline -Michael-

  • Aktives Mitglied
  • ***
  • Beiträge: 153
  • Geschlecht: Männlich
    • Software Guide
Re: LS: Array definieren - illegal arraybound ...
« Antwort #2 am: 18.11.04 - 23:00:34 »
Hi Bernhard,

danke für die schnelle Hilfe aus dem Nachbardorf (zumindest fast)  ;D

Redim war mir klar, damit geht es dann auch. Wenn ich länger darüber nachdenke macht es auch Sinn, da hast Du Recht. Dim's setzt man ja ganz allgemein und (i.d.R.) am am Anfang einer Routine. Da sind Variablen eigentlich gar nicht schön, die setzt man dann später.

Was übrigens geht ist ein:
Code
	Const TEST_INT%	= 10	
	Dim vDocArray(TEST_INT) As Variant

Also werden Konstanten sauber genommen. Hätte nicht gedacht dass Option Declare soweit eingreift, aber macht absolut Sinn.

Nochmal danke, da hab ich wieder was gelernt  :)

Viele Grüße nach Siegsdorf,

Michael

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz