Autor Thema: Einzelwert innerhalb Liste durch Replace in Listenwert austauschen  (Gelesen 1824 mal)

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Hallo,

steht im Momemt auf dem Schlauch.

Wie tausche ich einen Einzelwert innerhalb einer Liste in einen Listenwert?

Ich habe ein Kontrollkästchen und möchte die Werte dynamisch erzeugen.

quell_liste := "A":"B":"C";
ziel_liste := "Wert1|1": ("Wert2|2":Wert2a|2a" ) :"Wert3|3";
@Replace(quell_liste;ziel_liste)

In meinem Beispiel soll B ausgetauscht werden durch 2:2a.

Wie geht das?

Gruß Sascha


« Letzte Änderung: 01.07.05 - 16:35:49 von mibo11 »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
D.h. die Liste, die ursprünglich z.B. 3 Listenwerte hatte, soll dann 4 Listenwerte haben, oder?

Vermutlich geht das nicht so einfach.
Vermutlich musst Du die Liste entsprechend neu zusammensetzen.

z.B. mit @Member also die Position suchen. Mit @GetMembers die Listenelemente links und rechts von dem zu ersetzenden Listenelement rausziehen und dann zusammensetzen.

Matthias

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


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Ach ja, der @GetMembers ist leider nicht dokumentiert.



@GetMembers ( Liste ; Position ; [ Anzahl ] )

* Liste: Die Liste aus der Einträge ausgelesen werden sollen
* Position: Die Startposition der Liste, Typ Integer
* Anzahl: Optional. Die Anzahl der Einträge die zurückgegeben werden sollen. Typ Integer.
   Wenn das Schlüsselwort nicht angegeben wird, wird nur 1 Eintrag zurückgegeben.

Beispiele:
Dieses Beispiel gibt die Liste "B":"C":"D" zurück
_List := "A" : "B" : "C" : "D" : "E";
 @GetMembers(List; 2; 3)

 Dieses Beispiel gibt "C" zurück
_List := "A" : "B" : "C" : "D" : "E";
@GetMembers(_List; 3)
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
Ich befürchte auch, das geht nicht "einfach", da sowohl @Replace als auch @ReplaceSubstring immer die Dimension der Ursprungsliste respektieren.

So, wie von Matthias vorgeschlagen prinzipiell vorgeschlagen wurde, würde ich das auch angehen (wenn kein LS in Frage kommt).
Da @Getmembers undokumentiert ist, sollte man vielleicht zur Sicherheit vielleicht doch auf @Subset ausweichen, da dadurch das Konstrukt noch nicht mal sehr aufgebläht würde (vor allem durch die Möglichkeit, negative Werte angeben zu können).

Bernhard

EDIT: Auf das undokumentierte Getmembers hat TMC unterdessen schon hingewiesen ...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Stimmt, Bernhard, @Subset ist hier eigentlich besser als @GetMembers, und auch sehr einfach umzusetzen.
Mit diesen undokumentierten Dingen muss man eh immer sehr vorsichtig sein, in der Designerhilfe zur R7 Beta 2 wird @GetMembers übrigens auch nicht erwähnt.
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
Undokumentierte Funktionen: Es bleibt halt immer das mulmige Gefühl ... Einige tauchen dann ja in der Doku der nächsten Version auf, andere bleiben "geheim". Man weiss halt nie, was man davon halten soll.

Reizvoll sind sie natürlich schon, diese "under cover feature"  ;D
Aber wenn ich mir vorstelle, dass NotesUIDocument.ModifiedSinceSaved in einer kommenden Version nicht mehr funktioniert ... Und man hätte es eingesetzt ...

Bernhard

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Vielen Dank für die Anregungen.

Hab's jetzt erst einmal ganz profan gelöst. Scheint zu funktionieren. Ich schaue mir den Code aber heute abend noch einmal an, da ich jetzt ganz dringend nach Hause muss und werde euch berichten.  :)


such_bugfix := "AUSTAUSCHELEMENT";
austausch_bugfix := "Wert2|2":Wert2a|2a" ;
quell_liste := "A":"B":"C";
ziel_liste := "Wert1|1":such_bugfix:Wert3|3;
einzelwert := @Replace(allewerte;quell_liste;ziel_liste);
@If(@Contains(einzelwert;such_bugfix);austausch_bugfix;einzelwert)

Gruß Sascha

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Habe gerade bemerkt, dass meine Fragestellung ziemlich bescheiden war. Meine Problemstellung war nämlich so:

Als Vergleichswert kommt nur ein Wert in Frage, der dann ggf. durch einen, bzw. zwei Werte ausgetauscht wird.

Deshalb funktioniert die vorher gepostete Formel auch.

Sofern allerdings Listen durch unterscheidlich große Listen ausgetauscht werden sollen, funktioniert diese Formel nicht und man müsste in der Tat auf @Subset in Verbindung mit @Elements zurückgreifen.

Vielen Dank nochmals für die Anregungen.

Gruß Sascha  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz