Autor Thema: Array füllen über eine Function-Prozedur  (Gelesen 2770 mal)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Array füllen über eine Function-Prozedur
« am: 11.02.05 - 14:25:44 »
Hallo,
möchte gerne einen Array über eine Function füllen lassen. Mein Problem wie übergebe ich den Array an eine Function damit ich als Rückgabewert den gefüllten zurückbekomme.

z. B.
.......
Dim etti(16) 
......

Hier der Aufruf der Function
arrayfuellen(?????)


 



« Letzte Änderung: 14.02.05 - 14:42:15 von skywook »

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Array füllen über eine Function-Prozedur
« Antwort #1 am: 11.02.05 - 14:35:08 »
Als Variant
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Array füllen über eine Function-Prozedur
« Antwort #2 am: 11.02.05 - 14:40:25 »
Hi,
als Ergänzung zu Thomas S. :

function arraybefuellen(myArray as Variant) as Variant
    ....Verarbeitung....
    arraybefuellen = befuellterArray;
end Function

wenn Du diesen Array nachher verarbeiten willst, dann prüfst Du mit

If isArray(returnArray) Then
     *die Operatinen über die Inhalte
End IF

den Typ und verarbeitest das Teil in der If-Bedingung

Thomas
+++To be human is more important than to be important!+++

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Array füllen über eine Function-Prozedur
« Antwort #3 am: 11.02.05 - 15:32:12 »
Danke, Thomas.
Aber komme damit nicht ganz klar. Habe bis jetzt noch nicht mit Array gearbeitet. Kannst Du mir einen etwas ausführlicheres Beispiel posten.

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Array füllen über eine Function-Prozedur
« Antwort #4 am: 11.02.05 - 15:52:29 »
Dann beschreib doch bitte mal, was Du genau machen willst (was soll übergeben werden und wie soll's in den Array), so genau kann ich mir das grad nicht vorstellen.
+++To be human is more important than to be important!+++

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Array füllen über eine Function-Prozedur
« Antwort #5 am: 11.02.05 - 21:56:22 »
Habe bis jetzt noch nicht mit Array gearbeitet.

Wenn Du das Trial & Error abkürzen willst, empfehle ich, ein Buch über Notes-Entwicklung zu lesen, Arrays werden wohl in jedem Buch behandelt.
Ansonsten kann hier noch hilfreich sein:
 - Redim Preserve <-- mit Bedacht in Schleifen zu verwenden aufgrund Performance
 - ArrayAppend
 - Fulltrim
 - Forall Schleife
(ist alles in der Designerhilfe erklärt).
Matthias

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


Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Array füllen über eine Function-Prozedur
« Antwort #6 am: 14.02.05 - 09:09:38 »
Hallo,
hier die kurze Form des Scripts:
Wird über einen Agenten gestartet.

Sub Initialize
Dim etti1(16) As String
Dim x As Integer   
Dim auswahl As Integer   
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace   
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim newdoc As NotesDocument
   
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
   
If collection.Count = 0 Then
   Messagebox "Sie haben kein Dokument markiert!",0 + 16,"Fehler"
   Exit Sub
End If
   
diabox = ws.DialogBox ( "DDruck", True, True, False, True,True, False, "Etikettendruck" )   
If diabox = "False" Then
   Exit Sub
End If
   
While Not(doc Is Nothing)   
.........


Hier sollte die Function aufgerufen werden (mit dem
nachfolgenden Script) um den Array zu füllen.
      
etti1(1) = doc.eapnr(0)
etti1(2) = doc.sachgebiet1(0)
etti1(3) = doc.sachgebiet2(0)
etti1(4) = doc.stichwort1(0)
etti1(5) = doc.stichwort(0)
etti1(6) = doc.stichwort3(0)
etti1(7) = doc.stichwort4(0)
etti1(8) = doc.Bemerkungen1(0)
etti1(9) = doc.Bemerkungen(0)
etti1(10) = doc.Bemerkungen3(0)
etti1(11) = doc.Bemerkungen4(0)
etti1(12) = doc.Ordner1(0)
etti1(13) = doc.Ordner2(0)
etti1(14) = doc.Fachabteilung(0)
etti1(15) = doc.Vernichtungsjahr(0)
etti1(16) = Cstr(doc.Ablagejahr(0))

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Array füllen über eine Function-Prozedur
« Antwort #7 am: 14.02.05 - 09:55:43 »
Hi,

der Funktionsrumpf muss so ausseshen:

function fillArray() as variant

   ... die Operationen mit etti
   
   fillArray = etti
end funktion

allerdings ist die Funktion dann auch in anderem Context eigentlich nicht verwendbar und kann höchstens ein bisschen zur Übersicht beitragen. Wenn Du die auch in anderen Situationen verwenden willst, must Du sie noch generalisieren (Übergabeparameter usw.).

Thomas
+++To be human is more important than to be important!+++

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Array füllen über eine Function-Prozedur
« Antwort #8 am: 14.02.05 - 10:19:50 »
Danke Thomas,
wie sieht das denn mit den Übergabeparameter aus.

Wie übergebe ich dann den Array als string oder als variant (ist im Script als String definiert)?

Muss ich das doc.Collection auch übergeben?

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Array füllen über eine Function-Prozedur
« Antwort #9 am: 14.02.05 - 10:24:36 »
Nein musst du nicht, du musst das Doc übergeben und bekommt eine Variant mit allen Einträgen zurück. Aber du solltest dir WIRKLICH mal ein Buch kaufen. Nicht notwendigerweise zu Lotus Script aber zur Programmierung allgemein. Wie man Paramter übergibt und warum ist Basiswissen, das man grundsätzlich kennen sollte.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Array füllen über eine Function-Prozedur
« Antwort #10 am: 14.02.05 - 10:47:59 »
Aber du solltest dir WIRKLICH mal ein Buch kaufen. Nicht notwendigerweise zu Lotus Script aber zur Programmierung allgemein. Wie man Paramter übergibt und warum ist Basiswissen, das man grundsätzlich kennen sollte.
Jau skywook, da kann ich meinem Namensvetter nur zustimmen...
+++To be human is more important than to be important!+++

Marinero Atlántico

  • Gast
Re: Array füllen über eine Function-Prozedur
« Antwort #11 am: 14.02.05 - 11:11:20 »
Als Standardwerk für strukturierte Programmier gilt dieses extrem empfehlenswerte Buch von Microsoft Press:
http://www.amazon.de/exec/obidos/ASIN/386063593X/qid=1108375688/ref=sr_8_xs_ap_i1_xgl/028-9496007-5489363
Es gibt auch eine englische Version und eine 1. Auflage, die deutlich billiger sein sollte und völlig ausreichend ist. 

Im übrigen ist die "Kurznotation" in sowas wie
Code
etti1(1) = doc.eapnr(0)
etti1(2) = doc.sachgebiet1(0)
etti1(3) = doc.sachgebiet2(0)
[...]
ein Antipattern.
Es ist viel besser mit doc.replaceItemValue(arNameField(), val);
zu arbeiten.
Dann kannst du die Feldnamen in einem Array initialisieren und diese Namen bei Bedarf auch in ein Konfigurationsdokument auslagern.


« Letzte Änderung: 14.02.05 - 11:26:35 von Marinero Atlántico »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz