Come chiamare la funzione DLL con String Array e ricevere dati Double Array?Avevo letto il contenuto della Carta 14 nella guida allo scripting e avevo fatto alcuni test sulla mia funzione C.
L'allegato testdll.jsl funziona bene con dati semplici, come AnsiString (in entrata e in uscita). Nel registro posso vedere:
---
dll_obj = DLL("C:\Users\charlie.chu\Documents\JMP\JSL\jmptest2.dll");
[CDECL] AnsiString testFunc(AnsiString);
risultato = "ABC";
---
La mia domanda è: se voglio inviare dati come {"1.2, 2.3, 3.4", "5.6, 6.7, 7.8"} e infine ricevere i dati restituiti come { {1.2, 2.3, 3.4}, {5.6, 6.7, 7.8} }.Come dovrei fare? Non riesco a trovare un tipo di dati adatto.
Nel codice C la funzione strSplit è definita con
Doppio ** strSplit ( car ** strArray ) {
Non riesco a utilizzare AnsiString, ma anche ObjPtr non funziona.
PS: ho scoperto che il codice della lingua C non può essere un file allegato.....
Automazione e scriptingPersonalizzazione di massafinestreRi: Come chiamare la funzione DLL con String Array e ricevere dati Double Array?Potresti riscontrare alcuni problemi menzionati qui https://community.jmp.com/t5/Discussions/Does-anyone-know-about-TDMS-format-data-converting-into-JMP/mp/367590/highlight/true#M61750
Voce della lista dei desideri Estendi oltre il doppio il supporto degli array nelle funzionalità DLL di JMP
Ri: Come chiamare la funzione DLL con String Array e ricevere dati Double Array?Grazie. Quindi la conclusione è: nessuna soluzione finora.
Proverò a inviare dati da JMP con socket TCPIP invece di chiamare la funzione DLL, sarà ovviamente più lento...
Ri: Come chiamare la funzione DLL con String Array e ricevere dati Double Array?Forse prova a riconfezionare i tuoi argomenti prima di inviarli ai tuoi codici C:
1) Una stringa lunga, che è una concatenazione di tutte le stringhe
2) Un array numerico, gli elementi registrano la lunghezza delle singole stringhe o gli offset delle singole stringhe
E i tuoi codici C devono decomprimerli.
Ri: Come chiamare la funzione DLL con String Array e ricevere dati Double Array?Se il tuo obiettivo è convertire la tua stringa in un elenco di elenchi, potresti farlo in JSL.Ecco due approcci:
// 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);
Il primo ritorna:
{{1.2, 2.3, 3.4}, {5.6, 6.7, 7.8}}
Il secondo restituisce una matrice:
[1.2 2.3 3.4, 5.6 6.7 7.8]