Получилось немного в обход. Может что посоветуете по оптимизации:
X++:
#WinAPI
str fileParams, scriptZebra, printerName, paramStr;
int z = 1, posCh = 0, numCh, i;
boolean err;
container cnt;
if (!_printStr)
{
info('@AKM288');
return;
}
// Это разложение строчки на поля.
while (1 > 0)
{
numCh = strFind(_printStr, '|', posCh, strlen(_printStr));
cnt += substr(_printStr, posCh + 1, numCh - 1);
_printStr = strDel(_printStr,posCh + 1, numCh);
if (strlen(_printStr) < 1)
{
break;
}
}
scriptZebra = '\^\^XA\^\^A@N,0,0,E:Cyri_ub.FNT'
+'\^\^FO010,010\^\^A@N,40,35\^\^FD'+conPeek(cnt, 1)
+'\^\^FS\^\^FO250,010\^\^A@N,40,35\^\^FD'+conPeek(cnt, 2)
+'\^\^FS\^\^FO010,050\^\^A@N,40,35\^\^FD'+conPeek(cnt, 3)
+'\^\^FS\^\^FO010,090\^\^A@N,40,35\^\^FD'+conPeek(cnt, 4)
+'\^\^fS\^\^FO010,130\^\^A@N,50,40\^\^FD'+conPeek(cnt, 5)
+'\^\^FS\^\^FO260,135\^\^A@N,40,35\^\^FD'+conPeek(cnt, 6)
+'\^\^FS\^\^FO010,190\^\^A@N,40,35\^\^FD'+conPeek(cnt, 7)
+'\^\^FS\^\^PQ1\^\^XZ';
paramStr = scriptZebra+" > c:\\tmp.txt";
WinApi::shellExecute("cmd","/c ECHO "+paramStr);
fileParams = 'c:\\tmp.txt';
printerName = '\\\\Comp_name\\Zebra';
err = WinAPI::copyFile(fileParams,printerName,false);
if (err)
{
return;
}
WinApi::shellExecute("cmd","/c del c:\\tmp.txt");
Но зато печатается. Только смущают досовские окна выпрыгивающие и исчезающие. Пользователь испугается... звонить начнет