Autor Thema: Konkatenation von Variablennamen  (Gelesen 5107 mal)

Offline kevisback

  • Frischling
  • *
  • Beiträge: 42
Konkatenation von Variablennamen
« am: 27.10.05 - 07:56:48 »
Hallo zusammen,

wie kann man in LS Variablennamen konkatenieren?

Das soll dann so aussehen:


Code
For i = 1 To count
doc.d + i = irgendwas
next i


d1 bis d10 sind meinetwegen die Felder im Dokument, die ich fuellen will per Schleife. Die Konkatenation habe ich schon mit allen bekannten Operatoren probiert, aber nichts funktioniert.

Hat jemand eine Idee?


Danke vielmals!!!

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Konkatenation von Variablennamen
« Antwort #1 am: 27.10.05 - 08:01:55 »
Du willst notesDocument.ReplaceItemValue( ) verwenden, da kannst Du den Feldnamen als String angeben:
Set notesItem = notesDocument.ReplaceItemValue( itemName$, value )

Die "extended class" Syntax (doc.feldname) hat nicht immer Vorteile. ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #2 am: 27.10.05 - 09:18:33 »
doc.feldname=...
ist irgendwie auch schlechter Stil - da der Code dann schlechter zu pflegen bzw. weiterzuverwenden ist, wobei ich ganz klar sagen muss, dass ich ob Faulheit das auch selbst ziemlich häufig nutze - vor allem für kleine Sachen.
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 TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Konkatenation von Variablennamen
« Antwort #3 am: 27.10.05 - 23:42:44 »
doc.feldname=...
ist irgendwie auch schlechter Stil

Ja genau. Ist für mich *mittlerweile* selbe Liga wie Option Declare nicht einzuschalten, zumal auch Probleme auftauchen können wenn reservierte Properties Feldnamen entsprechen.
Ich kann es auch nicht nachvollziehen, warum das in größeren Apps überhaupt noch Leute verwenden, und nicht auf in Konstanten definierte Feldnamen verweisen.
Matthias

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


Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Konkatenation von Variablennamen
« Antwort #4 am: 28.10.05 - 00:07:25 »
Ich bin dieses Jahr zu der Überzeugung gekommen, dass: Es kommt drauf an.
In vielen Situationen ist es einfach nicht wichtig, ob man doc.getItemValue("feldName")(0) oder doc.feldName(0) schreibt. Es kommt eben einfach auf den Kontext an. Es gibt keine einfachen Regeln. In Python und Ruby wird zum Beispiel als Fortschritt gefeiert, dass es kein Äquivalent zu Option Declare gibt ! Wenn man einen functional programming Stil folgt mit kurzen Funktionen, mag das auch einfach so sein.
http://en.wikipedia.org/wiki/Python_programming_language#Functional_programming
Aber das ist offtopic.

In vielen Situationen finde ich Kurzschreibweise besser, weil einfacher zu schreiben und zu lesen. Es kommt eben immer auf den Kontext an.
« Letzte Änderung: 28.10.05 - 00:12:46 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #5 am: 28.10.05 - 07:43:41 »
Also Option Declare sollte meiner Meinung nach defaultmässig eingeschaltet sein - nicht mal wegen Stilfragen, sondern weil es mich vor unglaublich vielen Tippfehlern und endlosem Debuggen bewahrt.
Über die andere Sache lässt sich streiten. Ich setze das wie gesagt auch Situationsbezogen ein - und Konstanten für Feldnamen benutze ich sehr selten - da ich die irgendwie per se als fix betrachte.
Aber auch hier gilt, dass ich das tun werde, sobald es für mich Sinn macht.
Aber es gibt schon ganz schöne Unterschiede zum Stil:
Während viele inzwischen fast ausschliesslich objektorientiert Script schreiben - hat mein aktueller Vorgänger noch nicht mal (kaum) Funktionen oder gar Bibliotheken benutzt.
Dafür ist der Code dann wild über die DB verteilt - und ich wurde zum Suchenden...

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

Glombi

  • Gast
Re: Konkatenation von Variablennamen
« Antwort #6 am: 28.10.05 - 07:49:16 »
Die Extended Class Syntax zu verwenden ist meiner Meinung nach kein schlechter Stil. Solche Aussagen sollten vorsichtiger formuliert werden, ansonsten schmeisst nachher der Auftraggeber dir den Code um die Ohren.

Die Extended Class Syntax hat aber auch Nachteile gegenüber ReplaceItemValue:
1. Die Performance ist wesentlich schlechter, da der Compiler erst nach der Property/Methode sucht und dann - nachdem er keine gefunden hat - das als Abkürzung für ReplaceItemValue erkennt.
2. Aus 1 ergibt sich dann sofort das Problem: Wenn es DOCH eine Property gibt, so führt das zu Fehlern. Das ist bspw. der Fall, wenn in einer neuen Notes-Version eine neue Property hinzukommt.
Akutelles Beispiel (wurde auch hier im Forum behandelt): Lock

ein doc.Lock = "1" funktioniert dann eben nicht mehr.
Und sowas kann mit ReplaceItemValue nicht passieren.

Andreas

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Konkatenation von Variablennamen
« Antwort #7 am: 28.10.05 - 11:09:29 »

Die Extended Class Syntax hat aber auch Nachteile gegenüber ReplaceItemValue:
1. Die Performance ist wesentlich schlechter, da der Compiler erst nach der Property/Methode sucht und dann - nachdem er keine gefunden hat - das als Abkürzung für ReplaceItemValue erkennt.
Das ist in vielen Kontexten eben auch egal. In vielen Fällen wird keiner die eingesparte Zeit merken.
In 7 haben wir ja eine Profiling Klasse. Damit bekommt man für einen konkreten Kontext konkrete Aussagen über die Zeit, die für die einzelnen Funktionen benötigt wird. Betrachtet man Performance vom Standpunkt der merkbaren Auswirkungen beim User (und alles andere macht keinen Sinn), dann sind solche Argumente eben mehr so metaphysisch.

Zitat
2. Aus 1 ergibt sich dann sofort das Problem: Wenn es DOCH eine Property gibt, so führt das zu Fehlern. Das ist bspw. der Fall, wenn in einer neuen Notes-Version eine neue Property hinzukommt.
Akutelles Beispiel (wurde auch hier im Forum behandelt): Lock
ein doc.Lock = "1" funktioniert dann eben nicht mehr.
Und sowas kann mit ReplaceItemValue nicht passieren.
Das ist ein Argument. Mit einem vernünftigen Test-Prozess bei einem upgrade auf die neue Version, in der das implementiert ist, sind die Kosten möglicherweise nicht besonders hoch.

Was ich nur sagen will ist, dass man an einer Menge Stellen aus verschiedenen Gesichtspunkten (Latenz, Skallierbarkeit, Wartbarkeit, etc. ) optimaleren Code schreiben kann. Wir machen es nur nicht, weil man eben nicht alles berücksichtigen kann. Und zwar keiner. Man kann nun 5 einfache Gesetze für "optimalen Code" aufstellen und das als "perfekten code" deklarieren. Die Regeln lassen aber bestimmt 120 Aspekte ausser acht. Ich bin sicherlich nicht gegen gute Programmierpraktiken. Will nur sagen, dass dies oft sehr komplex ist. Und das Ergebnis hinsichtlich einer totalen Betrachtung nie optimal ist.
Eine Architektur-, Design- oder Programmierentscheidung ist letztlich das Ergebnis einer Kosten-Nutzen Rechnung von denen ex ante die wirklichen Kosten und Nutzen nicht kennt.

Ein bischen wie die Theory of the second best in Wipol. In einem Markt mit Störungen führt eine Maßnahme die eine von mehreren Störungen beseitigt zu besseren, genau gleichen oder schlechteren Ergebnissen  ;D
http://internationalecon.com/v1.0/ch100/100c030.html

Axel 
« Letzte Änderung: 28.10.05 - 11:15:00 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Konkatenation von Variablennamen
« Antwort #8 am: 28.10.05 - 11:26:08 »
Würde jetzt möglicherweise jemand auf die Ursprüngliche Frage eingehen ?

Der Arme Kerl hat noch keine Antwort erhalten.

In LS funktioniert das concat. so:

Dim x(9) as String
For i = 1 to 10
  feldName = "D" & Cstr( i )
  x(i-1) = doc.GetItemValue( feldName )(0)
next

Das concat funktioniert aber nur mit Dokument- Feldern, für Variablennamen gibt es sowas nicht, da würde man das aber auch nicht so lösen, sondern entweder mit einem Array (x im obigen Beispiel) oder aber mit einer Liste.

HTH
Tode
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)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Konkatenation von Variablennamen
« Antwort #9 am: 28.10.05 - 14:54:55 »
Tode: Die erste Antwort (meine) auf sein Posting enthielt bereits diese Antwort.  >:(
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline kevisback

  • Frischling
  • *
  • Beiträge: 42
Re: Konkatenation von Variablennamen
« Antwort #10 am: 31.10.05 - 02:36:48 »
@Tode

Danke fuer die Antwort. Erst sie hat mich weitergebracht  ;D

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #11 am: 31.10.05 - 09:06:30 »
Ganz ehrlich, wenn Dir m3s Antwort nicht gereicht hat bist Du evtl. in dem Job falsch..
« Letzte Änderung: 31.10.05 - 09:24:39 von Gandhi »
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 kevisback

  • Frischling
  • *
  • Beiträge: 42
Re: Konkatenation von Variablennamen
« Antwort #12 am: 31.10.05 - 10:19:02 »
Ich habs immer so gemacht, wie m3 es gesagt hat.

Ich dachte, dass meine Frage ohne jegliche Wertung haette beantwortet werden koennen und das hat nunmal als einziger Tode gecheckt...

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #13 am: 31.10.05 - 10:59:44 »
Und was genau war an der Antwort M3s nicht in Ordnung ???
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 kevisback

  • Frischling
  • *
  • Beiträge: 42
Re: Konkatenation von Variablennamen
« Antwort #14 am: 01.11.05 - 02:16:18 »
Na er hat nicht gesagt, wie man eine Konkatenation durchfuehrt...

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #15 am: 01.11.05 - 09:56:52 »
Also ganz im Ernst:  >:(
Dafür gibt es
a) die Hilfe
b) wird es in jedem Buch beschrieben
c) wird es in jeder Schulung gelehrt
d) stehn hierzu im Forum bereits tausend Beispiele.

Also hast Du weder a) noch b) noch c) noch d) bemüht.
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 kevisback

  • Frischling
  • *
  • Beiträge: 42
Re: Konkatenation von Variablennamen
« Antwort #16 am: 01.11.05 - 10:06:08 »
.....aus folgenden Gruenden:


ad a) zeig mir, wo das steht
ad b) ich komme aus Shanghai -> hier gibts ehrlich keine Lotus Buecher
ad c) siehe b)
ad d) siehe a)


 :-:

Glombi

  • Gast
Re: Konkatenation von Variablennamen
« Antwort #17 am: 01.11.05 - 10:26:06 »
Also jetzt kommt mal wieder runter.

@Ghandi:
Das Problem ist nun gelöst und es gibt keinen Grund, hier Kevisback so anzugehen.

@Kevisback:
Das in den Thread ausserdem eine Expertendiskussion zur Extended Class Syntax dabei war, würde ich an Deiner Stelle als Add-On mit nach Hause nehmen und für zukünftige Entwicklungen berücksichtigen.

Andreas

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Konkatenation von Variablennamen
« Antwort #18 am: 01.11.05 - 11:31:37 »
Also Hilfe:
Über den Designer öffnen
Auf Suche gehen
Concat eingeben
oder String eingeben

Dann werden verschiedene Dinge angezeigt.
Die Hilfe ist DIE Referenz - da stehen alle Basisfunktionen drin - und man muss schon lernen damit umzugehen, wenn man Notes entwickeln will.
Mein Groll richtet sich auch weniger gegen Kevisback als vielmehr gegen die, die hier jemanden Notes entwickeln lassen, ohne ihm wenigstens eine Basisschulung zu spendieren. Das kann nichts werden.
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 m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Konkatenation von Variablennamen
« Antwort #19 am: 01.11.05 - 12:07:33 »
.....aus folgenden Gruenden:


ad a) zeig mir, wo das steht
Es muss wirklich schwer sein, in der Notes Designer Hilfe im Index "String Conc" einzugeben. Damit wirst Du nämlich DIREKT auf den Hilfetext "String concatenation operators" geleitet.

Wenn jemand einen Variablennamen dynamisch erzeugen will, gehe ich davon aus, dass Lotusscript nicht seine erste Programmiersprache ist und die Person daher prinzipiell mit einer Online-Hlfe umgehen kann. Daher ist es in meinen Augen nicht vermessen anzunehmen, dass jemand das Kapitel "Lotus Script Language -> Expressions and Operators -> Overview of Expressions and Operators" anschaut. Dort findet sich nämlich auch ein hübsches "String concatenation" Beispiel.

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz