Autor Thema: Abfrage auf nicht indexierstes Array  (Gelesen 3412 mal)

Offline ReinerB

  • Junior Mitglied
  • **
  • Beiträge: 93
Abfrage auf nicht indexierstes Array
« am: 06.10.05 - 16:53:18 »
Hallo Forum,

wie kann ich denn auf ein nicht indexiertes Array abfragen?

Dim liste() As String

Später mache ich je nach Code einen Redim oder auch nicht. Wenn ich keinen Redim mache, wie kann ich dann abfragen, ob das Array leer ist?
IsEmpty hilft nicht, Ubound führt zu Fehler.

Was bleibt noch?

Danke für eure Hilfe. Ich verzweifel noch!!

Gruß
Reiner

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Abfrage auf nicht indexierstes Array
« Antwort #1 am: 06.10.05 - 16:55:09 »
Bevor Du mit UBound die obere Grenze bestimmen kannst, könntest Du mit IsArray zuerst prüfen ob es überhaupt ein Array ist.
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline ReinerB

  • Junior Mitglied
  • **
  • Beiträge: 93
Re: Abfrage auf nicht indexierstes Array
« Antwort #2 am: 06.10.05 - 17:02:53 »
Hallo umi,

das hilft auch nicht. Isarray ist war, trotz nicht indexiertem Array.

Reiner

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Abfrage auf nicht indexierstes Array
« Antwort #3 am: 06.10.05 - 17:10:28 »
was verstehst Du unter nicht indexiertes Array ?

evtl. mit IsNull?
« Letzte Änderung: 06.10.05 - 17:13:43 von umi »
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Abfrage auf nicht indexierstes Array
« Antwort #4 am: 06.10.05 - 17:18:03 »
UBound... was gibt das für ein nichtindexiertes Array aus?
oder die Schweinerolle mit Provokation eines Fehlers und Abfangen des selben...
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Abfrage auf nicht indexierstes Array
« Antwort #5 am: 06.10.05 - 17:43:16 »
ich kenne keine Möglichkeit, das zu prüfen. Ich habe immmer ein Flag benutzt, dass ich erst dann auf true setzte, wenn ich das Array initialisiert habe.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Abfrage auf nicht indexierstes Array
« Antwort #6 am: 06.10.05 - 23:42:42 »
... wie kann ich denn auf ein nicht indexiertes Array abfragen?

Dim liste() As String
Später mache ich je nach Code einen Redim oder auch nicht. Wenn ich keinen Redim mache, wie kann ich dann abfragen, ob das Array leer ist?
IsEmpty hilft nicht, Ubound führt zu Fehler.

Irgendwas ist hier unvollständig, Reiner.
Wenn nach Dim liste () as string nix passiert, ist Isarray (liste) garantiert False. Das Überprüfen mit Ubound etc. ist natürlich nur Geraffel, wenn da ein skalarer oder ein gar nicht vorhandener "Wert" vorliegt.

Poste doch bitte mal Code, und kennzeichne dabei
- die Optionen der entstehenden Werte
- die entdeckten Zeilen, die dann Fehler werden (bei welchen gegebenen Werten !)
- die Meldungen des Debuggers bzw. Deines error handlings.

Dir kann bei diesem Problem auf jeden Fall geholfen werden (Infos vorausgesetzt). Und das Problem ist so trivial nicht (wenn man es noch nie hatte bzw. richtig verarbeiten musste).

Bernhard

Offline ReinerB

  • Junior Mitglied
  • **
  • Beiträge: 93
Re: Abfrage auf nicht indexierstes Array
« Antwort #7 am: 07.10.05 - 07:45:38 »
Guten Morgen Bernhard,

hier ist der kleine Code zum Testen:

Dim liste() As String
Dim liste2 As String
If Isarray(liste)  Then
    liste2 = Implode(ArrayUnique(liste, 0), ":")
Else
    liste2 = ""
End If

Springt bei mir immer in die Implode-Zeile. Bekomme dann einen "Type mismatch Fehler".

So was nun?      ;)

Gruß
Reiner

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Abfrage auf nicht indexierstes Array
« Antwort #8 am: 07.10.05 - 08:21:58 »
Guck Dir im Debugger den Array an, dann wirst Du feststellen, dass array(0)="" ist.
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline ReinerB

  • Junior Mitglied
  • **
  • Beiträge: 93
Re: Abfrage auf nicht indexierstes Array
« Antwort #9 am: 07.10.05 - 08:56:50 »
Hallo Ghandi,

verstehe ich nicht ganz.

Meinst du in meinem Beispiel liste(0)=""?
Aber ich habe liste() noch garnicht indexiert. Liste(0) existiert nicht.
Bei mir im Debugger steht vor der IF-Abfrage LISTE     STRING().
Kein "" als Inhalt dazwischen, sondern leer.

Reiner

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Abfrage auf nicht indexierstes Array
« Antwort #10 am: 07.10.05 - 09:32:30 »
Wie wäre es das Array einfach zu initialisieren - mit einem Default Wert und dann einfach überschreiben.
Dann kannst Du auf jeden Fall was prüfen.
Dein Script ergibt so wie es hier steht überhaupt keinen Sinn. Es läuft immer in die gleiche Bedingung und ein Array macht auch nur Sinn, wenn wenigstens versucht wird was reinzuschreiben oder?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Abfrage auf nicht indexierstes Array
« Antwort #11 am: 07.10.05 - 09:36:06 »
Mit einer nicht initialisierten Variablen zu arbeiten ist immer problematisch. Das lernen Programmierer (insbesondere C-Programmierer) schon in der ersten Stunde.

D.h. initialisiere dein Array mit Redim Liste(0) und frage dann entsprechend ab. Du kannst auch einen Wert reinschreiben, der mit Sicherheit nie vorkommt (bspw. "@@@") und darauf prüfen. Der Möglichkeiten gibt's da viele.

So wie du das im Moment machen willst, wird das nix.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline ReinerB

  • Junior Mitglied
  • **
  • Beiträge: 93
Re: Abfrage auf nicht indexierstes Array
« Antwort #12 am: 07.10.05 - 10:04:04 »
Ja mit dem Initialisieren habt ihr Recht. Habe es dann auch so gemacht.
Wollte nur mal hören, ob es auch ohne geht.

Ist aber besser am Anfang ein Redim Liste(0) zu machen und dann später ein Redim Preserve Liste(var) wobei var auch 0 sein kann. Ist schöner.

Danke für Eure Vorschläge.

Reiner

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Abfrage auf nicht indexierstes Array
« Antwort #13 am: 07.10.05 - 10:19:52 »
Ist aber besser am Anfang ein Redim Liste(0) zu machen und dann später ein Redim Preserve Liste(var) wobei var auch 0 sein kann. Ist schöner.

Warum ein Redim Preserve?

Mach doch nur ein Redim Liste(var). Redim Preserve ist sehr inperformant (welch' schönes Wort  ;) ) und sollte nach Möglichkeit nicht verwendet werden.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz