AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
04.06.20 - 11:18:38
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Best Practices
| |-+  Diskussionen zu Best Practices (Moderatoren: Axel, MartinG, animate, koehlerbv)
| | |-+  [Themenvorschlag] Arrays / Textlisten
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: [Themenvorschlag] Arrays / Textlisten  (Gelesen 7527 mal)
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« am: 17.06.04 - 23:00:15 »

Eine spontane Idee:

Ich habe gerade gemerkt, dass ich da auch noch etwas Nachholbedarf habe.

Die Bücher die ich vorliegen habe, erklären die Themen zwar, aber nicht ausführlich genug. Ist zwar eigentlich ein reines Anfängerthema für Script-Neulinge, aber ich unterstelle mal, dass da auch fortgeschrittene Leute noch dann und wann hängen.

- Was ist ein Array
- Feste und dynamische Arrays
- Dimensionen
- Rückgabewerte bei Feldzugriff (UI und Backend)
- Umwandlung von String in Array und umgekehrt (Explode/Implode)
- Ich habe hier ein paar Strings, die will ich in ein Array setzen, wie mach ich das?
- Wie vergleiche ich 2 Arrays?
- Verwendung mehrdimensionaler Arrays
u.v.m.

Ist jetzt eine spontane Idee. Nach Lust und Laune werde ich das mal verfolgen. Evtl. baut man da auch ein paar Functions in die Doku mit ein, die es schon vielfach gibt (dabei saubere Re-Codierung und Versuch, möglichst alle möglichen Error-Cases abzufangen).
Ein @Formel - Teil sollte da imho auch nicht fehlen, da da auch immer wieder mal mit Mehrfachwerte-Textfeldern und Listen gearbeitet wird. Schwerpunkt sollte man aber imho auf LS legen.

Hat wer Lust mitzuwirken? Ist das Thema interessant? Was solll noch unbedingt da rein? Was wird in diesem Bezug immer wieder mal gefragt?
Gespeichert

Matthias

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

Glombi
Gast
« Antworten #1 am: 17.06.04 - 23:12:53 »

Hi Matthias,

gute Idee. In dem Zusammenhang kann man auch die Listen in Script, die etwas stiefmütterlich behandelt werden, gleich mit erschlagen.

Grundaussage, die man verinnerlichen muss: Feldwerte werden alle in einem Array gespeichert. Insbesondere Feldwerte ohne Mehrfachwerte sind in einem 1-dimensionalen Array.

Dann einen Verweis zur "Schleifenkunde", Stichwort: Forall, Ubound und LBound.
Wichtig ist auch die Script Function IsArray(<var>)

Andreas
« Letzte Änderung: 17.06.04 - 23:13:21 von Glombi » Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #2 am: 17.06.04 - 23:31:38 »

Andreas, schön, ich hoffe Du kannst mich da bei Bedarf beim ein- oder anderen unterstützen  Wink

Grundaussage, die man verinnerlichen muss: Feldwerte werden alle in einem Array gespeichert. Insbesondere Feldwerte ohne Mehrfachwerte sind in einem 1-dimensionalen Array.

Hatten wir letztens auch erst:
Backend-Zugriff auf Item: Man erhält ein Array.
Frontend-Zugriff auf Feld: Man erhält ein String.
Gespeichert

Matthias

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

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #3 am: 17.06.04 - 23:45:26 »

Listen: Oh ja, was man mit denen machen kann, steht im krassen Widerspruch zu ihrem üblichen Einsatz.
Basisroutinen: Implode, Explode, ArrayCompare hattest Du ja schon genannt. Interessant weiter:
- ein ArrayAppend, dem es wurscht ist, was schon vorhanden ist
- ein ArrayRemoveMember
- ein ArrayHasMember
usw., und das Ganze möglichst ohne immer an Strings gebunden zu werden.
Weiter: Interessant ist schon die Frage, ob ein Variant (also wieder: Irgendein Datatype dahinter) wirklich leer ist. IsArray ist eine Sache, aber es gibt ja auch noch IsEmpty, IsScalar, Isnull, Nothing  Wink Wenn man das allgemeingültig machen will, ist's ein weites Feld  Wink

Wenn das Ganze richtig läuft, steuere ich gerne auch Routinen bei. Für Fragen, Tipps, Kritiken usw. stehe ich natürlich jederzeit gerne zur Verfügung.

Bernhard
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #4 am: 17.06.04 - 23:59:16 »

Danke, Bernhard, für Deine Bereitschaft zur Unterstützung :-)

Du bestätigst mir irgendwie meine vorherige Vermutung, dass wir da wohl einige klassische Functions mit dazu ziehen sollten. Warum auch nicht - ich käme ohne Array-Functions in vielen Apps nicht mehr aus.

Vielleicht wird daraus ja ein 2Teiler. Erstmal das eigentliche "BP" (Verwendung, Praxisbeispiele, etc.), und als Annex die wichtigsten/meist benötigten von uns re-codierten Array-Routinen.
Das hätte schon was  Smiley

Matthias
Gespeichert

Matthias

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

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #5 am: 18.06.04 - 00:21:13 »

Das hätte wirklich was !
Was mir aber eben aufgefallen ist: Das Thema Arrays / Listen und ähnliches ist hier im Forum übrigens äusserst dürftig vertreten. Ob da die breite Masse meist gar nicht mit arbeitet oder einen Riesenbogen darum macht ?

Bernhard
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #6 am: 18.06.04 - 00:30:33 »

Ich glaub auch, Bernhard, dass viele gar nicht die simplen Möglichkeiten ausschöpfen die uns da dank Arrays geboten werden - und wohl lieber mit Workarounds arbeiten (ohne es vielleicht sogar zu wissen).
Gespeichert

Matthias

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

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #7 am: 18.06.04 - 00:45:20 »

Um so wichtiger wäre es - wenn wir es machen - dann wirkliche Blackboxes anzubieten: Steckt 'rein, was Ihr wollt, die Routine kümmert sich  Wink

Bernhard
Gespeichert
Heiggo
@Notes Preisträger
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 368


Ich habe nix gemacht!


« Antworten #8 am: 18.06.04 - 01:00:06 »

Ich glaube, den Bogen muss ich unumwunden zugeben.
Vieleicht kann Klein-Siebert dann doch mit einer neuen BP mal irgendwann hilfreich sein :-) Lernen tu ich ja recht schnell.

Das hätte wirklich was !
Was mir aber eben aufgefallen ist: Das Thema Arrays / Listen und ähnliches ist hier im Forum übrigens äusserst dürftig vertreten. Ob da die breite Masse meist gar nicht mit arbeitet oder einen Riesenbogen darum macht ?

Bernhard

PeEs: Christopher, sag bitte nix falsches *kicher*
« Letzte Änderung: 18.06.04 - 06:08:15 von SiebertH » Gespeichert

(¯`·._ (¯`·._-=- ...und für Bernhard... nur OFw d.R. :-) -=-_.·´¯)_.·´¯)
Axel
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #9 am: 18.06.04 - 08:25:29 »

Hi,

sehr gute Idee. Ich habe Listen bisher nur sehr rudimentär verwendet, bin aber von deren Mächtigkeit überzeugt.


Um so wichtiger wäre es - wenn wir es machen - dann wirkliche Blackboxes anzubieten: Steckt 'rein, was Ihr wollt, die Routine kümmert sich  Wink

Bernhard

Im Prinzip ja, aber...
Eigentlich wüsste ich schon ganz gerne was da in dem schwarzen Kasten vor sich geht. Vielleicht lassen sich Teile daraus auch für einen blauen Kasten verwenden. Und außerdem, man lernt nie aus.


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
Don Pasquale
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1390

Don Pasquale


WWW
« Antworten #10 am: 22.06.04 - 10:15:53 »

@TMC


bei vielen anderen hätte ich abgewunken, aber weil Deine Projekte
immer hand und fuss haben und meistens einfach nur gut sind bin ich
gerne dabei mein Scherflein beizutragen.

Ciao
Don Pasquale

Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #11 am: 20.07.04 - 22:13:46 »

Danke für Euer Feedback  Smiley

Ich möchte das Thema nun langsam mal angehen....

Hier mal ein erster Auszug Kap. 1:
----------------------------------------------------------
Was ist ein Array?

Ein Array ist eine Sammlung von Daten die alle denselben Datentyp haben und die über eine fortlaufende Nummer indexiert sind.

Beispiel:

Code:
Dim straBPMods(5) as String
straBPMods(0) = "Glombi"
straBPMods(1) = "koehlerbv"
straBPMods(2) = "MartinG"
straBPMods(3) = "Semeaphoros"
straBPMods(4) = "Thomas Völk"
straBPMods(5) = "TMC"

Erklärung des Beispiels:

Dim straBPMods(5) as String

Durch die Klammer am Ende des Variablen-Namens definieren wir das String als Array. Da wir einen fixen Wert in die Klammer geschrieben haben (hier: 5), definieren wir das Array als statisches Array – d.h. die Anzahl der Elemente des Arrays haben wir hier schon beim Dimmen fix vorgegeben.

Ein Array startet per Default immer bei "0" – hier spricht man oft auch von einem "null-basierten" oder "zero-based" - Array. Beim Dimmen kann man aber einen anderen Start vorgeben. Wir hätten oben auch schreiben können:

Dim straBPMods(0 to 5) as String

Wenn wir als Startnummer eine 1 vorziehen, können wir hier folgendes machen:

Dim straBPMods(1 to 6) as String

Alternativ kann man den Default-Wert von "0" als ersten Indexwert der Liste scriptweit auf "1" geändert werden mittels Option Base:

usw. usw.
----------------------------------------------------------

D.h.  im Kap. 1 würde ich anhand des Beispiels ein paar Basics erklären (incl. UBound und LBound).

Dann weitere Kapitel die enthalten:
- Dynamische Arrays (incl. wann nehme ich die her, Redim (Preserve) etc.)
- Mehrdimensionale Arrays
- Listen
- Nützliche Funktionen (IsValueEmpty, ArrayCompare, Explode/Implode etc. etc.)


Nun meine Fragen an Euch:
Weitere Vorschläge?
Konkreter Input?
Will wer von Euch einen Part übernehmen? Oder Teile davon?
Hat wer von Euch schicke Array/List-Funktionen die er/sie zur Verfügung stellen möchte?
Soll man das anders gliedern?
« Letzte Änderung: 20.07.04 - 22:15:37 von TMC » Gespeichert

Matthias

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

Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #12 am: 24.08.04 - 18:00:18 »

gerade zum Thema Arrays sollten auch Beispiele in Javascript (für alle FrontEnd-Sachen, ist schnell, es gibt überall Democode, hat gute Arrayfunktionen) und Java (hat zig Array- und Stringbehandlungsfunktionen) dabei sein.

Ich benutze Arrays hauptsächlich für Auswertungen (alles in n-dimensionale Arrays packen, dann Daten auswerten, Ergebnis dann verexceln oder so) . In Fällen, wo Dokumente einer DocumentCollection mehrmals durchlaufen werden müssen ist das viel schneller, die benötigten Werte in ein Riesenarray zu werfen als die Notes-Dokumente direkt zu nehmen und mehrmals durch die Collection zu gondeln.

Formelsprache hat natürlich viel bessere Arrayfunktionen als Skript, für die meisten findet man aber an jeder Ecke eine Skriptumsetzung (@Explode in Lotusscript etc.). Hier wäre es interessant, nur die wirklich sauber programmierten Workarounds zu präsentieren. Ich habe selbst schon zig verschiedene Explode-Funktionen in Skript gesehen. Witzig wird das Ganze, wenn die ehemaligen Workaround-Funktionen plötzlich mit gleichem Namen in Notes 6 auftauchen. Da hatte ich schon Abstürze in Notes 6, die in Notes 5 nicht passieren, obwohl alles auf einem 6er Server läuft.

Kurz zusammengefasst: Für Arrays sind BP sicher sehr nützlich!
« Letzte Änderung: 24.08.04 - 18:11:31 von mt69clp » Gespeichert

sagt Mark.



slowfood.de
Marinero Atlántico
Gast
« Antworten #13 am: 25.08.04 - 10:25:47 »

Sollte - wie auch schon manchmal angemerkt - gemeinsam mit List gesehen werden.
Das sind Container oder Collections. Datenstrukturen, deren einzige Aufgabe darin besteht andere Elemente zu halten.

Für Java halte ich die Ranch Journal Einträge von Thomas Paul - Storing Objects (ab Juni 2002, 4 Teile) für lesenswert und newbie tauglich. Leute mit stärkeren Nerven können sich Kapitel 11 von Bruce Eckel, Thinking in Java, durchlesen.
http://www.javaranch.com/journal.jsp  
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: