Autor Thema: Array in Konstanten  (Gelesen 1631 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Array in Konstanten
« am: 07.06.04 - 23:01:48 »
Hi,

ich möchte gerne ein eindimensionales Array in einer Konstante haben.
Bzw. in den Global Declarations einer Maske möchte ich ein Array definieren .

Ich habe da folgende Möglichkeit gefunden:

Const TESTARRAY = |"Hallo":"Welt":"Ich bin ein Array aus Strings"|

Im eigentlichen Code der Maske dann:

   Dim vArray As Variant   
   vArray = Evaluate ( TESTARRAY )
   Msgbox vArray(0)
   Msgbox vArray(1)
   Msgbox vArray(2)


------------------------------------------------------------

Klappt soweit gut, aber erscheint mir mehr als Workaround.

Ist das DIE Lösung oder ist hier eigentlich was anderes vorgesehen, um ein Array in den Declarations zu definieren, um dann im Code darauf zuzugreifen?

Matthias

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Array in Konstanten
« Antwort #1 am: 07.06.04 - 23:36:02 »
Matthias, da hast Du leider keine Chance (ich wünschte mir auch schon oft, ein Array als Constant zu definieren). Jegliche Operation in Konstanten-Definitionen ist verboten, und nur skalare Constants werden unterstützt.

Sollte ich mich irren, würde mich das wirklich freuen ;-)

Aus meiner Erfahrung: Sowas wie Du als Workaround geschrieben hast, würde ich nicht tun - Du erzwingst dann ja immer ein Evaluate im eigentlichen Code, auch wenn Du das eigentlich gar nicht willst. Eine "normale" Array-Deklaration incl. Belegung zur Laufzeit tut es doch dann auch bzw. kommt auf's gleiche 'raus, oder ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Array in Konstanten
« Antwort #2 am: 07.06.04 - 23:48:12 »
Sollte ich mich irren, würde mich das wirklich freuen ;-)

Ich glaub Du irrst Dich nicht, Bernhard, ich habe hierzu auch das Web und die Hilfe abgegrast, es sind wohl wirklich nur skalare Konstanten erlaubt/möglich   ;) :P

Hmm, perfekt ist das Evaluate hier bestimmt nicht....
Hätte ich halt schick gefunden, die Pflege durch den Programmierer global an einer übersichtlichen Stelle durchführen zu lassen.
Aber ich glaube ich mache es doch "klassisch" zur Laufzeit - oder wenn es sein soll: in einem Setup-Dokument definieren.
Zumal es nun wirklich egal sein sollte, wenn man seinen Sourcecode vernüftig dokumentiert ;-)

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Array in Konstanten
« Antwort #3 am: 08.06.04 - 00:10:07 »
"Zentral" ist gut. Aber das müssen ja dann weder Konstanten noch Setup-Dokumente sein. Ich hatte gerade letztens folgenden Fall:
Aus Notes-Dokumenten mussten bei Vorliegen bestimmter Kriterien Exports nach Excel durchgeführt werden. Aus langer Praxis-Erfahrung weiss ich: Was exportiert werden soll und ob Feld A in Spalte 1 des Excelsheets wirklich der Weisheit letzter Schluss (für den Abnehmer) ist, das kann sich ganz schnell ändern. Ergo: Was in welcher Reihenfolge exportiert werden soll, das sollte in einer "Konstante" einmalig im Code festgelegt werden.
Simple Lösung: Die Labels des zu erstellenden Excel-Sheets landeten an einfach erreichbarer Stelle im Code als Array. Natürlich in der Form
Dim aLabels (0 to x) als String
mit gleich folgendem
aLabels (0) = "Label 1"
aLabels (1) = "Label 2"
und so weiter.
Hierüber wird dann später auch die Kopfzeile des Sheets geschrieben und für den Eintrag der zu exportierenden Werte auch deren Column ermittelt (ArrayGetIndex mit dem Label-Wert).
Wenn nun die Reihenfolge im Sheet verändert werden soll, muss das lediglich noch in der "Konstanten"-Deklaration (naja, hätten wir gerne, also "Pseudo-Konstanten-Deklaration") getauscht werden. Über ein zweidimensionales Array (das auch noch die eigentlichen Feldnamen beinhaltet) könnte das Prinzip noch verfeinert werden, wenn nicht spezielle Bedingungen (Reaktion auf den Feldtyp wie RTF oder Datum, Umgang mit Multivalue-Fields etc.) eingegangen werden müsste.
Mit derartigen "Pseudo-Konstanten" kann man sich aber das Leben schon mal sehr viel einfacher gestalten. Einmal Aufwand, aber dann ...

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz