Wie rufe ich eine DLL-Funktion mit String Array auf und empfange Double Array-Daten?Ich habe den Inhalt von Charta 14 im Skriptleitfaden gelesen und einige Tests zu meiner C-Funktion durchgeführt.
Der Anhang testdll.jsl funktioniert gut mit einfachen Daten wie AnsiString (ein- und ausgehend). Im Protokoll kann ich sehen:
---
dll_obj = DLL("C:\Benutzer\charlie.chu\Dokumente\JMP\JSL\jmptest2.dll");
[CDECL] AnsiString testFunc(AnsiString);
result = "ABC";
---
Meine Frage ist, ob ich Daten wie {"1.2, 2.3, 3.4", "5.6, 6.7, 7.8"} senden und schließlich die Rückgabedaten wie { {1.2, 2.3, 3.4} , {5.6, 6.7, 7.8} }.Wie soll ich es machen? Ich kann keinen passenden Datentyp finden.
Im C-Code ist die Funktion strSplit mit definiert
doppelt ** strSplit ( verkohlen ** strArray ) {
Ich kann AnsiString nicht verwenden, aber ObjPtr ist ebenfalls fehlgeschlagen.
PS: Ich habe festgestellt, dass der C-Sprachcode keine Anhangsdatei sein kann.....
Automatisierung und SkripterstellungMassenanpassungWindowsBetreff: Wie rufe ich eine DLL-Funktion mit String Array auf und empfange Double Array-Daten?Möglicherweise stoßen Sie auf einige der hier genannten Probleme https://community.jmp.com/t5/Discussions/Does-anyone-know-about-TDMS-format-data-converting-into-JMP/mp/367590/highlight/true#M61750
Wunschlistenartikel Erweitern Sie die Unterstützung von Arrays in den DLL-Funktionen von JMP um mehr als das Doppelte
Betreff: Wie rufe ich eine DLL-Funktion mit String Array auf und empfange Double Array-Daten?Danke. Das Fazit lautet also: Bisher keine Lösung.
Ich werde versuchen, Daten von JMP mit einem TCPIP-Socket zu senden, anstatt die DLL-Funktion aufzurufen, es wird offensichtlich langsamer sein ...
Betreff: Wie rufe ich eine DLL-Funktion mit String Array auf und empfange Double Array-Daten?Versuchen Sie vielleicht, Ihre Argumente neu zu verpacken, bevor Sie sie an Ihre C-Codes senden:
1) Eine lange Zeichenfolge, die eine Verkettung aller Ihrer Zeichenfolgen darstellt
2) Bei einem numerischen Array zeichnen Elemente entweder die Länge einzelner Zeichenfolgen oder den Versatz einzelner Zeichenfolgen auf
Und Ihre C-Codes müssen sie entpacken.
Betreff: Wie rufe ich eine DLL-Funktion mit String Array auf und empfange Double Array-Daten?Wenn Ihr Ziel darin besteht, Ihre Zeichenfolge in eine Liste von Listen umzuwandeln, können Sie dies in JSL tun.Hier sind zwei Ansätze:
// Given this string:
a = {"1.2, 2.3, 3.4", "5.6, 6.7, 7.8"};
// Return data like { {1.2, 2.3, 3.4} , {5.6, 6.7, 7.8} }
// Parse things apart
new_list = {};
m = 0;
for (i = 1, i <= nitems(a), i++,
one_list = words(a[i], ", ");
for (k = 1, k <= nitems(one_list), k++,
one_list[k] = num(one_list[k]);
);
m++;
new_list[m] = one_list;
);
print(new_list);
// Use matrix operators
exec_string = "new_mat = matrix({";
for (i = 1, i <= nitems(a), i++,
if (i == 1,
exec_string = exec_string || "{" || a[i] || "}";
,
exec_string = exec_string || ", {" || a[i] || "}";
);
);
exec_string = exec_string || "})";
eval(parse(exec_string));
print(new_mat);
Der erste gibt Folgendes zurück:
{{1.2, 2.3, 3.4}, {5.6, 6.7, 7.8}}
Der zweite gibt eine Matrix zurück:
[1.2 2.3 3.4, 5.6 6.7 7.8]