Domino 9 und frühere Versionen > Entwicklung

Backend Lesefeld setzen

<< < (2/2)

Semeaphoros:
Aha, wärend ich meine Muskeltn bewegt habe, hast Du Bernhard chemische Reaktionen durchgeführt irgendwo oberhalb Deines Halses :-)

Zur Sache: Wie schon eben beim Name-Thread erwähnt, auch wenns gut aussieht, würde ich hier in jedem Falle nicht über Evaluate die Sache laufen lassen, da Evaluate an und für sich ein relativ "teures" Statement ist. Dies verschärft sich, da man das Item ja trotzdem noch braucht, um es als Reader zu deklarieren.

Die Denkaufgabe, die Du da TMC gegeben hast, ist seit R5 schon so gut wie gelöst: Eine Handvoll langersehnter Funktionen, zum Beispiel:


Appends one array to the end of another array and returns the result as a third array.

Syntax
ArrayAppend( sourceArray1, sourceArray2 )

Dabei darf sourceArray2 auch ein Skalar sein. Du darfst also Deine Funktion ruhig behalten ....... :-))

koehlerbv:
Hi, Semeaphoros,

also ArrayAppend ist echt nicht das Gelbe vom Ei. Probier' mal folgendes:

--- Code: ---Sub Click(Source As Button)
   Dim v1 As Variant
   Dim v2 As Variant
   Dim v3 As String
   
   v2 = "Huhu"
   v3 = "Hallo"
   
   v1 = Arrayappend (v2, v3)
   
End Sub
--- Ende Code ---

Da lob ich mir meine eigene Routine ;-)  Und wie gesagt: Es ist eine wirklich nette Übung ;-)

Bernhard

Semeaphoros:
Wer lesen kann ....... :-)


--- Code: ---Sub Click(Source As Button)
   Dim v1 As Variant
   Dim v2 (0) As Variant
   Dim v3 As String
   
   v2(0) = "Huhu"
   v3 = "Hallo"
   
   v1 = Arrayappend (v2, v3)
   
End Sub

--- Ende Code ---

...... und schon gehts, steht aber auch in meinem Posting, such mal nach Skalar ......

Natürlich ist ArrayAppend nicht besonders flexibel uns sehr rudimentär, aber meistens reicht es. Und, eingebauter Code ist bedeuuuuuutend schneller (und häufig auch sicherer) als die eigenen Bib-Routinen.

Das ist aber ein Thema, das auf meiner Vortrags-Vorschlagsliste steht. Mal sehen, ob ich den irgendwo bei einer Veranstaltung platzieren kann.

koehlerbv:
Ja, ja, das ist alles schon klar (gewesen), aber mir geht es darum, bei immer wieder vorkommenden Aufgaben (z.B. Autorenfelder setzen usw.) nicht jedes Mal das gleiche Zeugs abchecken zu müssen (ist Array noch leer, ist es skalar, was füge ich hinzu etc.).

Autorenfeld "erweitern" (ich weiß ja nicht, was da gerade drin steht ...):

doc.Autoren = ArrayAppend (doc.Autoren, vResponsibles)

soll einfach funktionieren - alle Checks werden in ArrayAppend gemacht. doc.Autoren ist leer und der zweite Parameter ist gar kein Variant, sondern session.UserName - na und ? Funktioniert, die Arbeit macht die Function.

So meinte ich das.
Wenn es natürlich Performance-kritisch wird (zehntausende Änderungen im selben Dokument), dann muß man sich natürlich was anderes überlegen. Bei jeweils wenigen Änderungen in zehntausenden Dokumenten ist es dann schon wieder wurscht, da das Laden der Backend-Docs der Flaschenhals sind.

Wie siehst Du das ?

Ciao,
Bernhard

Semeaphoros:
Nein, das sehe ich grundsätzlich auch so, ich würde den Arrayappend und Consorte irgendwie in eine Function kapseln, die dann da rundherum noch die Tests baut, aber bestimmt nicht mehr wie in R4 den Array abklopfen und Redim und ähnlichen "Hilfsmitteln" arbeiten. Sicher, wenns dann echt um Performance geht, dann muss mans anders machen, aber da müsste man dan eh wohl eher zur API greifen, wenns dann sooo kritisch wird.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln