[gelöst] Automation und Array als Rückgabe

22. März 2011 17:09

Hallo,

ich habe einen Automation-Server in Navision eingebunden.
Nun liefert eine Funktion mir eine Array als Rückgabewert. Beinhalt z.B. 10 Messwert von einer SPS.
Leider schaffe ich es nicht, diese Array Wert Navision Variable zuzuordnen.
Geht das überhaupt.

lg
stony
Zuletzt geändert von stony am 23. März 2011 10:54, insgesamt 1-mal geändert.

Re: Automation und Array als Rückgabe

22. März 2011 18:11

Hi,


kannst du nicht einfach ein Array in NAV deklarieren mit der gleichen Dimension und dein Automation-Array da übergeben.

NavArray := AutomationArray;

Ansonsten mal etwas Code hinzufügen, damit wir es nachvollziehen können:-)



Gruß
Aydin

Re: Automation und Array als Rückgabe

22. März 2011 19:25

Hi,
das habe ich schon versucht. Leider aber ohne Erfolg.
Anbei der C#-Code
Code:
public class myConnect
    {
       
        int BDEWert;
 
        int[] H1L5BDEWerte = new int[10];

        public int[] H1L5WerteLesen()
        {
            ..befüllen der Array
        for (int item = 0; item < 12; item++)
                {
                    if (itemIdentifiers[item].ResultID.Succeeded)
                    {
                        H1L5BDEWerte[item] = Convert.ToInt32(itemValues[item].Value);
                    }

                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Read exception Reason: ", ex.ToString());
            }

            //BDEWert = 1;
            return H1L5BDEWerte;
        }


Und hier der C/AL-Code
Code:

<Control1000000004> - OnPush()
CREATE(NAVBDEH1L5);

H1L5SPSWerte := NAVBDEH1L5.H1L5WerteLesen;  --> geht aber nicht zu kompilieren
CLEAR(NAVBDEH1L5);


Scheinbar bekomme ich nur einen Wert zurück.

lg
stony

Re: Automation und Array als Rückgabe

23. März 2011 09:45

Hallo,

schau doch mal hier.

Gruß, Fiddi

Re: Automation und Array als Rückgabe

23. März 2011 10:18

fiddi hat geschrieben:Hallo,

schau doch mal hier.

Gruß, Fiddi


.NET Interop gibt es erst ab R2.
Habt ihr R2 im Einsatz?
Ansonsten musst Du bei Automation so bauen, dass eine Iteration per Aufruf möglich ist und dann das aktuelle Feld ausgibt.

Gruß
Jan

Re: Automation und Array als Rückgabe

23. März 2011 10:28

Hallo Stony,


also meine Vermutung wäre, dass die Indizes probleme bereiten.
In C# fangen die Arrays mit dem Index 0 und In NAV mit dem Index 1 an?!


Wichtig wäre wie ein NAV Array in ein C# Array konvertiert wird (und umgekehrt natürlich). Hast du schon mal im RTC gedebugt?
Dann würdest du sehen wie der Code in C# aussieht:-)



Gruß
Aydin

Re: Automation und Array als Rückgabe

23. März 2011 10:40

Aktuell haben wir 2009 SP1 im Einsatz und ich bräuchte dies für den Classic Client.
Habe es aber dadurch gelöst, das ich mir die Array Werte in C# in einen String , welcher der Komma getrennt ist, speichere und diesen String mir ins Navsion zurückgebe. Dort trenne ich dies wieder auf.
Funtioniert eigentlich.
lg
stony

Re: Automation und Array als Rückgabe

23. März 2011 10:44

gelöst und so vor dem ersten Beitrag schreiben, danke. :-)