Autor Thema: Formelsprache: Suche nach Schlüsselwerten in einem Konfigurationsdokument  (Gelesen 1434 mal)

Offline joan

  • Junior Mitglied
  • **
  • Beiträge: 60
Hallo! :)

Ich stehe hier gerade vor einem kleinen Problem und finde keinen sinnvollen Ansatz. Vielleicht hat aber jemand solch ein Problem schon gelöst.

Gegeben ist ein Konfigurationsdokument, darin ein Feld, das eine Textliste enthält. Die Textliste besteht aus Key|Value Paaren der Form "80|NL":"90|FR" usw.

Innerhalb eines Dokuments muß ich nun anhand eines gegebenen Keys den zugehörigen Wert aus der Liste suchen. Wenn das Dokument eine "90" enthält, muß also ein "FR" zurückkommen. Unter R6 ist das kein Problem, da kann man mit einer @For Schleife über die Liste gehen:

@For(n := 1;n <= @Elements(langor) & override = ""; n := n + 1;
@If (@Left(langor[n];"|") = reg; override := @RightBack(langor[n];"|");""));

Da unsere Anwender aber zum Teil noch unter R5 arbeiten, geht das leider nicht. @Keywords scheint dafür nicht geeignet zu sein, aber ich hoffe, daß da jemand noch einen Trick kennt. So unüblich sind solche Konstruktionen ja nicht...

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
So müsste es funktionieren:

pos := @Member("90";@Left(langor; "|"));
override := @Right(@Subset(@Subset(langor; pos); -1);"|");


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

Offline joan

  • Junior Mitglied
  • **
  • Beiträge: 60
Hallo Axel,

Vielen Dank für den Tipp. Die Idee ist bestechend... :) Ich kam gar nicht darauf, weil mir nicht bewußt war, daß @Left auch mit Listen funktioniert. Das kommt davon, wenn man hauptsächlich in LS programmiert..

Noch ein wenig Fehlerbehandlung dazu (falls pos "" ist) und es klappte einwandfrei. :)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
genau das ist ja die Stärke an Formelsprache, dass Sie bis R6 OHNE jegliche Schleifen auskam, weil beinahe jeder Befehlö auf Listen einwandfrei funktioniert, und das wesentlich performanter als jede Schleife.

Deine Anforderung wäre im übrigen auch so zu lösen gewesen:

@Trim( @Left( langor ; "|90" ) )

oder variabel:

x := "90";
@Trim( @Left( langor ; "|" + x ) )

Gruß
Tode

P.S.: das kommt davon, wenn man Quereinsteiger Notes- Datenbanken programmieren lässt, ohne ihnen zumindest ne Formel- Grundschulung zu gewähren: Dann programmieren sie immer von hinten durch die Brust ins Auge... (nicht gegen Dich gerichtet @joan, sondern eher gegen Deinen Arbeitgeber)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz