[Gelöst] Array[Key] := Value;

19. Juli 2011 12:09

Hallo Allerseits,

kann man ein Array mit "sprechenden" keys definieren, wie z.B. bei PHP?

Vielen Dank im Voraus

Ninib Asmar
Zuletzt geändert von Ninib am 19. Juli 2011 12:53, insgesamt 1-mal geändert.

Re: Array[Key] := Value;

19. Juli 2011 12:17

Willkommen bei uns!
Ich kenne wiederum keine sprechenden Keys ;-)
Bei Arrays erwartet NAV in den eckigen Klammern einen integer-Wert von mindestens 1, dieser kann jedoch genauso von einer Variable oder gar einer Funktion kommen, solange ein integer nur das Ergebnis ist.

Ist es das, wonach du suchst?

Re: Array[Key] := Value;

19. Juli 2011 12:33

Vielen Dank für die schnelle Antwort.

Ich hatte eigentlich nach einer Möglichkeit gesucht in den eckigen Klammern kein Integer sondern ein String zu schreiben um die Arraywerte leichter zu identifizieren.

Re: Array[Key] := Value;

19. Juli 2011 12:46

Ninib hat geschrieben:Ich hatte eigentlich nach einer Möglichkeit gesucht in den eckigen Klammern kein Integer sondern ein String zu schreiben um die Arraywerte leichter zu identifizieren.

Was genau meinst du mit leichter identifizieren? Quasi den Array-Index über den jeweiligen Inhalt ansprechen? Das geht mit Arrays nicht.
Allerdings gibts in NAV einen Workaround: Temporäre Tabellen deklarieren und die Daten dort ablegen. In diesen Tabellen lässt sich dann beliebig suchen.

Re: Array[Key] := Value;

19. Juli 2011 12:49

Was er meint ist: meinArray['Hase'] = 'Wuschel der Hase'
Das geht in Navision nicht. Du kannst ein Array nur über Integer ansprechen. Wofür genau brauchst du es denn? Eventuell kann man es geschickter lösen.

Re: Array[Key] := Value;

19. Juli 2011 12:53

Ich wollte im Array Ergebnisse komplexer Anfragen, die in einem Dataport immer wieder gemacht werden zwischen speichern. Als alternative zu den temporären Tabellen.

Danke für die Antworten.

Re: [Gelöst] Array[Key] := Value;

19. Juli 2011 14:32

Temporäre Tabelle benutzen, falls Runtimeübergreifend eine Nicht-temporäre Tabelle.

Re: [Gelöst] Array[Key] := Value;

20. Juli 2011 09:08

Hallo,

eventuell könnten die "sprechenden" Keys im Array auch durch eine Option-Variable gelöst werden, die intern auch nur Integer-Werte darstellen.

Gruß
Jörg

Re: [Gelöst] Array[Key] := Value;

20. Juli 2011 09:44

Es gaebe eine Moeglichkeit

Pseudocode:
Variable SprechenderKey: Typ Option
Variable MeinArr: Typ Text

SprechenderKey, Option String: Hase, Maus; Hund

MeinArr[Hase] := 'Wuschel der Hase';
MeinArr[Maus] := 'Mic die Maus';
MeinArr[Hund] := 'Wuff der Hund';

anders: kaum umsetzbar, hoechstens ueber Singleinstance Codeunit, Function, TempTable etc.
aber nötig? nein :/ ist den Aufwand wohl kaum wert....


edit: Jörgs Post nich gesehen ...... :/

Re: [Gelöst] Array[Key] := Value;

20. Juli 2011 10:08

MatthiasKönig hat geschrieben:
Pseudocode:
Variable SprechenderKey: Typ Option
Variable MeinArr: Typ Text

SprechenderKey, Option String: Hase, Maus; Hund

MeinArr[Hase] := 'Wuschel der Hase';
MeinArr[Maus] := 'Mic die Maus';
MeinArr[Hund] := 'Wuff der Hund';



Hallo Matthias und Ninib,

wichtig wäre hierbei natürlich, dass beim Option-String "SprechenderKey" die erste Option leer bleiben sollte, weil die erste Option den Integerwert 0 hat,
was wiederum beim Array nicht verwendet werden kann (Zähler beginnt bei 1).

Und als kleine Korrektur im Pseudocode:
Code:
MeinArr[SprechenderKey::Hase] := 'Wuschel der Hase';
...


gruß
Jörg

Re: [Gelöst] Array[Key] := Value;

20. Juli 2011 11:42

Hah! Ich hätte noch eine Idee ;) (müsste aber trotzdem noch über temporäre Tabellen gelöst werden)

Code:
MeinArr(getArrId('Hase')) := 'Wuschel der Hase'; // ich sehe euch gefällt meine Idee mit dem Hasen :D


Die Funktion getArrId müsste dann für das Mapping des Strings mit dem Integer sorgen. Noch nicht verwendete Strings müssen dann in der temporären Tabelle neu gepflegt werden und der Integerwert zurückgegeben werden.