ES2243384T3 - Metodo para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello. - Google Patents

Metodo para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello.

Info

Publication number
ES2243384T3
ES2243384T3 ES01130279T ES01130279T ES2243384T3 ES 2243384 T3 ES2243384 T3 ES 2243384T3 ES 01130279 T ES01130279 T ES 01130279T ES 01130279 T ES01130279 T ES 01130279T ES 2243384 T3 ES2243384 T3 ES 2243384T3
Authority
ES
Spain
Prior art keywords
data
string
characters
character string
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES01130279T
Other languages
English (en)
Inventor
Junichi c/o Seiko Epson Corp. Otsuka
Toshiyuki c/o Seiko Epson Corp. Sugimoto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Application granted granted Critical
Publication of ES2243384T3 publication Critical patent/ES2243384T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/20Point-of-sale [POS] network systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Stored Programmes (AREA)
  • Cash Registers Or Receiving Machines (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Document Processing Apparatus (AREA)
  • Communication Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • Programmable Controllers (AREA)
  • Character Input (AREA)
  • Processing Or Creating Images (AREA)

Abstract

Un método de procesar datos de cadenas de caracteres para hacer pasar una primera cadena de caracteres, declarada como un primer tipo de datos, a través de un objeto de interfaz (18) que se ejecuta bajo un sistema operativo de ordenador desde un primer objeto (11; 12) que sirve como objeto de cliente a un segundo objeto (12; 13) que sirve como un objeto de servidor para el primer objeto (11; 12) cuando se ejecuta un programa de aplicación (11), en el que los objetos de interfaz (18) convierten la primera cadena de caracteres en una segunda cadena de caracteres de un tipo de datos de cadena básico que contiene información de longitud de cadena y pasa la segunda cadena de caracteres al segundo objeto (12; 13), procesando el último la segunda cadena de caracteres declarada como cadena de tipo de datos de cadena básico.

Description

Método para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello.
La presente invención se refiere a un método y sistema de procesar cadenas de caracteres que utilizan componentes de objeto de software o de componentes lógicos.
Los programas basados en componentes (objetos) escritos en un lenguaje de programación orientado a objetos, son objetos lógicos reutilizables que se ejecutan en un sistema operativo particular. Utilizando objetos se hace más fácil desarrollar una variedad de sistemas y aplicaciones. El Modelo Objeto de Componentes (COM) respaldado, por ejemplo, por el sistema operativo Windows® de Microsoft es un sistema funcionalmente rico que proporciona un entorno en el que las aplicaciones del cliente (aplicaciones contenidas) pueden utilizar y compartir ob-
jetos.
Desarrollando sistemas basados en objetos de COM, los productos de componentes lógicos se pueden suministrar como partes reutilizables que permiten a usuarios individuales construir sistemas personalizados y reducir costes de mantenimiento. Este modelo de diseño permite también el desarrollo y la evolución adicional de los activos de componentes lógicos existentes, que hacen más fácil el desarrollo del sistema y reducen los costes de desarrollo afines. La capacidad para desarrollar objetos en una base de componentes también simplifica desarrollar un sistema complejo que consiste en varios subsistemas o varios dispositivos periféricos, y ha resultado esencial para el desarrollo sistemas que funcionan bajo un entorno de red.
Un sistema de POS (Punto De Venta) es un tipo de sistema que se ensambla a partir de una variedad de dispositivos periféricos. Un sistema típico de POS comprende un dispositivo de visualización, una impresora, escáner, cajón de efectivo, lector de tarjetas, y otros dispositivos de entrada/salida conectados a un ordenador personal u otro ordenador principal central. En los documentos JP-A -9-106355 y JP-A -9-73395, se pensó previamente un sistema de POS basado en un ordenador personal flexible que utilizaba objetos.
La Figura 1 muestra el concepto de un sistema 10 de POS de objetos distribuidos. Este sistema 10 de POS comprende un programa 11 de aplicación de POS suministrado por el fabricante del sistema; control de objetos (COA) 12 suministrado para el tipo particular de dispositivo (clase de dispositivo), tal como impresora 21, escáner 22, cajón de efectivo 23, u otro tipo de dispositivos periféricos; y objetos de servicio 13 (OS) suministrados para un dispositivo particular. Para el programa 11 de aplicación del POS para imprimir algo desde la impresora 21, se envían en primer lugar datos al objeto de control de la impresora, luego al objeto de servicio 13 para la marca o modelo de impresora desde la que se imprimirán los datos, y después desde el sistema operativo (SO) 14 a la impresora
21.
El programa 11 de aplicación de POS puede utilizar también la pantalla de visualización 15, el teclado 16 y otros recursos de elementos físicos (hardware) del ordenador personal como dispositivos periféricos del programa 11 de aplicación del POS a través del SO 14.
El sistema de control de objetos 19 que contiene los objetos 12 de control y los objetos de servicio 13 en el sistema 10 de POS mostrado en la Figura 1 proporciona el programa 11 de aplicación del POS con un interfaz que es independiente de los dispositivos periféricos particulares (tal como la impresora 21). Debido a que los objetos de control 12 se desarrollan para clases de dispositivos particulares se crea una petición de objeto de control por el COM soportado por el SO 14 cuando se ejecuta el programa 11 de aplicación de POS. El objeto de servicio 13 proporciona un interfaz uniforme independiente del dispositivo particular para el objeto de control 12; cuando un dispositivo particular es llamado por el objeto de control 12, se crea una petición de objeto de servicio y se vincula al programa 11 de aplicación del POS.
En un sistema basado en COM, por ejemplo, controles de ActiveX (controles de OLE) que pueden hacer regresar eventos al programa 11, se puede utilizar para el objeto de control 12, y un servidor ActiveX (Servidor de Automatización OLE) se puede utilizar como el objeto de servicio 13 que funciona como un servidor para los controles ActiveX. El COM proporciona soporte para la comunicación de datos entre objetos vinculados por automatización, es decir, entre solicitudes de objetos vinculados con objeto de ejecutar el programa de la aplicación. "Servidor de Automatización" es un objeto de software (elementos lógicos) que contiene propiedades y métodos, y "automatización" es un mecanismo para difundir o manipular objetos.
La automatización es dependiente del interfaz IDispatch COM, y la comunicación entre objetos se lleva a cabo ejecutando el método Invoke (Invocar). IDispatch es un interfaz para difundir controles ActiveX y métodos y propiedades de servidor de ActiveX. para ser utilizado con un lenguaje de programación compatible con COM. La biblioteca Microsoft Foundation Class (MFC), que proporciona un entorno de desarrollo con una función de automatización basada en Visual C++®, un lenguaje de programación orientado a objetos editado por Microsoft, proporciona por lo tanto la clase de base COIeDispatchDriver (objeto) para manipular las complejidades para llamar la función Invoke desde el programa de aplicación u objeto de cliente. Un objeto de cliente puede por tanto enviar datos a un objeto de servidor llamando a InvokeHelper, una función de miembro del objeto de interfaz derivada desde esta clase de base. En otras palabras, con objeto de utilizar la función Invoke, se debe ejecutar un procedimiento específico, y está prevista una función InvokeHelper que contiene este procedimiento predefinido para ayudar a llamar a la función Invoke. Este procedimiento predefinido incluye, por ejemplo, leer argumentos de una lista, y ejecutar un procedimiento basado en estos argumentos, convirtiendo el resultado de Invoke en un método, o desechando excepciones cuando se ejecuta un procedimiento ilegal.
La Figura 2 muestra en forma de esquema el flujo de datos desde un programa 11 de aplicación POS a un dispositivo (impresora) 21. Con objeto de imprimir datos de texto en la impresora 21, el programa 11 de aplicación de POS llama al método de impresión del objeto de control 12 de la impresora y pasa los datos de texto al método de impresión. Con objeto de llamar al método de objeto de servicio 13 para la impresora 21, el objeto de control 12 llama a la función de miembro InvokeHelper de la clase COIeDispatchDriver (el objeto de interfaz (IFO) 18). Los datos se pasan luego a través del objeto de interfaz 18 al objeto de servicio 13, y a través del SO 14 a la impresora 21.
Un problema es que si se presenta un carácter nulo o no válido, (0x00 en anotación hexadecimal; todos los datos de caracteres anotados más abajo también están en anotación hexadecimal) tal como a veces está contenido en datos de código de barras en los datos de texto (cadenas de caracteres), la cadena de caracteres no se reproducirá en la impresora 21 del sistema 10 de POS. El objeto de control 12 de la impresora en un sistema de POS tiene típicamente un método PrintBarCode, y si se especifica una cadena de datos que contiene un carácter nulo (0x00) como el parámetro de datos del método PrintBarCode, la cadena de datos se pasa por un procedimiento tal como sigue:
En primer lugar el programa 11 de aplicación del POS envía la siguiente cadena A0 de caracteres al objeto de control 12.
A0:
7B 41 00 30 31 32 33 34 35 36 37 38 39
El objeto de control 12 recibe la cadena de caracteres A0 pero la recibe declarada como un tipo LPCTSTR. Un LPCTSTR es un indicador hacia una cadena terminada como nula (0x00) de 8 bit ANSI (Instituto Americano de Normas Nacionales), así como una cadena de caracteres de Shift JIS (Normas Industriales Japonesas) de caracteres definidos. Por lo tanto, en medio de la cadena no se permite un carácter nulo o no válido (0x00). Cuando no se trata imprimir datos de byte como datos de imagen en los caracteres de imprimibles no está contenido el nulo (0x00) y los datos de cadena de caracteres se declara generalmente como un tipo LPCTSTR en el objeto de impresora.
No obstante, en un entorno COM, COM soporta transferencias de datos aplicacion-objeto y objeto-objeto con cadenas de caracteres que pasaron a través de COM como cadenas BSTR, es decir cadenas básicas o binarias que contienen una declaración de longitud de cadena (contado de caracteres). La cadena A0 se convierte entonces en
A1:
A1:
0D 00 00 00 7B 41 00 31 32 33 34 35 36 37 38 39 00
Una cadena BSTR comienza entonces con la longitud de cadena escrita en los primeros cuatro dígitos y termina con 00 (que no está incluido en la longitud de cadena (contado de caracteres)). No obstante, nótese que este 00 no se utiliza como el carácter de finalización. La memoria de datos se gestiona basada en el número de caracteres desde el cursor de modo que incluso un nulo (0x00) contenido en la cadena de caracteres se trata como datos de carácter.
Con objeto de que el objeto de control 12 llame al método de salida de impresora del objeto de servicio 13, primero llama a la función de miembro InvoKeHelper de la clase COIeDispatchDriver (objeto de interfaz 18 dispuesto como una biblioteca MFC), e InvokeHelper llama a InvokeHelperV como sigue:
Nulo COIeDipatchDriver::InvokeHelperV(DISPID dwDispID, WORD wflags, VARTYPE vtRet, Nulo* pvRet, const BYTE* pbParaminfo, va_list argList)
donde los parámetros se definen como sigue:
\vskip1.000000\baselineskip
- dwDispID:
Identifica el método o propiedad a ser invocada.
- wFlags:
Marca que describe el contexto de la llamada a iDispatch::Invoke
- vtRet
Especifica el tipo del valor de retorno.
- PvRet
Dirección de la variable que recibirá el valor de propiedad o de retorno.
- PbParaminfo:
Indicador a una cadena de bytes finalizada en nulo que especifica los tipos de parámetros almacenados en la argList que sigue a pbParaminfo.
- argList
lista de parámetros
\newpage
COIeDipatchDriver::InvokeHelperV convierte después una cadena de caracteres como sigue.
LPCSTR lpsz = va_arg(argList, LPSTR);
PArg->bstrVal=::SysAllocString(T2COLE(lpsz));
If (lpsz l = NULL && pArg->bstrVal = = NULL)
AfxThrowMemoryException();
PArg->vt = VT_BSTR;
Debido a que la cadena de caracteres lpsz pasada desde el objeto de control 12 se representa por un JIS Shift de 8-bit o dígitos binarios LPCTSTR (carácter multiocteto), se selecciona automáticamente la macro T2COLE de conversión de caracteres y loscaracteres se convierten a caracteres de 16 bit de amplitud (Unicode), el tipo de cadena de transferencia básico pasado por COM T2COLE se define como un modelo de biblioteca (ATL: Biblioteca de Plantilla Activa) para crear controles ActiveX utilizando Visual C + +.
La primera línea anterior lee los parámetros de datos de la lista de parámetros, y los datos después se convierten realmente por la siguiente línea. La macro T2COLE llama a la función AfxA2Whelper en la que MultiByteTo Wide Char convierte los datos en caracteres extendidos como se muestra abajo.
A2:
78 00 41 00 00 00
Es decir, debido a que el objeto de control 12 representa la cadena de caracteres que utiliza un tipo LPCTSTR terminada en nulo, los caracteres nulos (0x00) contenidos en medio de la cadena de caracteres se interpretan como una cadena de caracteres que termina. El resultado es una cadena de un tipo de caracteres extendidos (LPCTSTR) que no contiene ningún dato a continuación de 00 y que borra todo a continuación de 00. La cadena de caracteres se convierte entonces mediante SysAllocString en un tipo BSTR que contiene datos acerca del número de caracteres (actualmente octetos) en la cadena, que se pasan a través de COM al objeto 13 de servicio,
Los datos pasados al objeto de servicio 13 después de haberse añadido los cuatro octetos de longitud de cadena son por tanto:
A3:
04 00 00 00 7B 00 41 00 00 00
Del mismo modo que el objeto de control 12, el objeto de servicio 13 utiliza también LPCTSTR para representar datos de caracteres, y recibe datos en unidades de 8 dígitos binarios según el tipo de datos de cadenas de caracteres representado por COM. El objeto de servicio recibe por tanto:
A4:
7B 41 00
Por lo tanto, la impresora 21 controlada por el objeto de servicio 13 no es capaz de imprimir los datos especificados por el programa de aplicación 11, y solo imprime parte de los datos especificados (esto es, los datos recibidos, A4). Mientras los datos de cadena enviados por COM son de tipo BSTR y la cadena de caracteres A4 se puede lanzar y procesar como un tipo BSTR, los datos en la memoria solo contienen la información de la longitud de la cadena del tipo BSTR como se muestra más abajo, y los datos omitidos se pierden cuando se transfieren desde el objeto de control.
A5:
02 00 00 00 7B 41 00
Por tanto resultará evidente que si el objeto de control 12 recibe datos de cadena declarados como tipo LPCTSTR que contienen un carácter nulo (0x00) desde el programa 11 de aplicación de POS, estos datos de cadena no se pueden enviar al objeto de servicio 13 ni entregarse adecuadamente en la impresora 21.
Además, cambiar el tipo de datos de cadena declarado en el objeto de control o en el objeto de servicio no se puede utilizar en un sistema POS orientado a objetos que desea proporcionar un interfaz uniforme al programa de aplicación y unificar los parámetros intercambiados entre objetos y entre el programa de aplicación y objetos. Tampoco es deseable desde la perspectiva de proteger los activos de elementos lógicos actuales del usuario.
Hay métodos para convertir nulos (0x00) por la fuerza que utilizan conversión binaria para otros valores antes de transferir datos, y restaurando luego nulos (0x00) en un objeto siguiente. Además de que son complicados, no obstante, los procedimientos de conversión utilizados por los diferentes objetos deben coincidir y por lo tanto el objeto que se recibe es dependiente del diseño (funcionamiento) del objeto que se envía. Obviamente esto es contradictorio con uno de los fines de la programación orientada a objetos, es decir, mejorar la reutilización y la modularidad del software, Con mayor detalle, todavía, si el objeto que se recibe no puede procesar los datos convertidos a binario, podría entregar una cadena de caracteres completamente diferentes.
Por tanto, procesar datos de cadenas de caracteres que contienen nulos (0x00) presenta algunos problemas difíciles. No obstante, con objeto de construir un sistema POS capaz de manipular códigos de barras y otros tipos de datos diferentes, es necesario estar capacitado para enviar con precisión datos de caracteres que contengan nulos (0x00) a los objetos de servicio para entregarlos por una impresora u otro dispositivo.
El documento EP 0762 273 A1 describe un método y un sistema según la porción caracterizadora de las reivindicaciones 1 y 5, respectivamente. Esta técnica anterior implica los problemas explicados en detalle más arriba.
Por tanto es un objeto de la presente invención proporcionar un método que procesa datos de caracteres, un sistema de procesamiento, y un programa mediante el cual se pueden enviar de manera precisa entre objetos incluso cuando la cadena de caracteres contiene datos nulos (0x00), sin cambiar la declaración de tipo de cadena de caracteres del objeto de control o del objeto de servicio o realizando otras operaciones complicadas.
Este objeto se logra mediante un método, sistema y programa como se reivindica en las reivindicaciones 1, 5 y 9, respectivamente. Las realizaciones preferidas de la invención son objeto de las reivindicaciones dependientes.
El número de caracteres efectivo que incluyen los datos nulos (0x00) contenidos en cadena de caracteres pasada como cadena de un primer tipo de datos desde el primer objeto al objeto de interfaz se puede determinar procesando la cadena de caracteres como un tipo de datos de cadena básica que contienen información de longitud de cadena permitiendo de ese modo el número de caracteres a ser contados en la cadena, incluyendo caracteres nulos (0X00), sin tener en cuenta el tipo de primeros datos declarados por el primer objeto. Además, convirtiendo solo el número real de caracteres de la primera cadena de caracteres, en una segunda cadena de caracteres que se puede pasar por el sistema operativo, una cadena de caracteres que contiene caracteres nulos (0x00) que se pueden pasar fiablemente sin los caracteres nulos (0x00) que termina la cadena. Los datos de la cadena de caracteres que contienen nulos (0x00) se pueden pasar entonces de manera fiable entre objetos incluso en sistemas integrados o arquitecturas, tales como COM, que solo soportan que pasen entre objetos tipos estandarizados de datos de cadenas de caracteres.
El tipo de datos de cadena básica es un tipo de datos que contiene información de longitud de cadena, tal como el tipo BSTR de datos de canales soportado por COM.
Los problemas de transferencia de datos anteriores no se limitan a la comunicación objeto a objeto, y también se producen cuando se hacen pasar datos entre programas de aplicación y objetos. Estos problemas se producen entonces cuando el programa de aplicación está escrito, por ejemplo, utilizando MFC en visual C++.(Nótese que estos problemas no se presentan cuando el programa de aplicación está escrito con Visual Basic® publicado por Microsoft debido a que MFC no se utiliza por tales lenguajes de programación). Por tanto, el primer objeto es el programa de aplicación o un objeto de control de clase de dispositivo periférico; y el segundo objeto es un objeto de control o un objeto de servicio de dispositivo periférico. Por tanto la presente invención se puede aplicar a programas de aplicación haciendo al programa de aplicación el primer objeto. Por lo tanto, un objeto como se utiliza más adelante incluye ejemplos de objetos enlazados por el mecanismo vinculante COM cuando se ejecuta el programa de aplicación, y a no ser que se haga notar específicamente otra cosa no se hace distinción entre un objeto y un ejemplo.
El método y el sistema de procesar datos de cadena de caracteres de la presente invención puede por tanto pasar, de manera fiable entre objetos, datos de cadena de caracteres que contienen en la cadena, incluso cuando el tipo de cadena de caracteres declarado por un objeto supone que en la cadena no se contiene ningún dato nulo (0x00). El método y el sistema de la invención pueden por tanto procesar datos de códigos de barras y otros datos de cadenas de caracteres que podrían contener datos nulos (0x00) sin cambiar el tipo de datos habitualmente declarados por el objeto. Un sistema POS basado en objetos que puede manipular fiablemente datos de código de barras y otros diversos tipos de datos puede estar provisto por tanto mediante la presente invención.
Otros objetos y logros junto con un entendimiento más completo de la invención resultará evidente y apreciado haciendo referencia a la siguiente descripción de realizaciones preferidas tomada junto con los dibujos que se acompañan en los que:
la Figura 1 describe el concepto de un objeto de servicio basado en un sistema POS;
la Figura 2 muestra el proceso para transferir cadenas de caracteres entre un programa de aplicación y objetos; y
la Figura 3 muestra el concepto de la presente invención para procesar objetos de control, objetos de interfaz, y objetos de servicio.
La presente invención se describe más abajo basada en sistema POS 10 construida a partir de objetos distribuidos como se describe con relación a la Figura 1 y a la Figura 2. Con objeto de aplicar la presente invención a un sistema POS 10 es necesario en primer lugar derivar un objeto de interfaz de clase CCoOleDispatchDriver desde la clase MFC COleDispatchDriver, luego dejar a un lado la parte de conversión de datos del objeto de interfaz como sigue:
\newpage
LPCSTR lpsz = va_arg(argList, LPSTR);
long lLen = ::SysStringByteLen((BSTR)lpsz);
long lDestLen = lLen + 1;
LPWSTR pWideChar = (LPWSTR)CoTaskMemAlloc(IdestLen * 2 * sizeof(WCHAR));
long lTrueLen;
if(ILen)
{
lTruelen = MultiByteToWideChar(CP_ACP, 0 ,lpsz, lLen, pWideChar, lLen);
}
else
{
lTruelen = MultiByteToWideChar(CP_ACP, 0 ,lpsz, 0, pWideChar, lDestLen);
}
pArg->bstrVal = ::SysAllocStringLen(pWideChar, ITrueLen);
CoTaskMemFree((void*)pWideChar);
If (lpsz I = NULL && pArg->bstrVal = = NULL)
AfxThrowMemoryException();
PArg->vt = VT_BSTR;
Este proceso de conversión de datos funciona como sigue. En primer lugar el parámetro de la cadena de caracteres se lee desde la lista de parámetros argList y se asigna a la cadena lpsz del tipo LPCSTR. Las siguientes líneas seleccionan la cadena lpsz como tipo BSTR, y determinan la longitud (contado de caracteres) de la cadena de caracteres, incluyendo cualquiera de los caracteres nulos (0x00) que pudiesen estar presentes en la cadena. Para asegurar que la longitud de la cadena lLen nunca sea 0, se añade 1 a lLen, y se reserva memoria para convertir la cadena de caracteres a caracteres extendidos, es decir, caracteres Unicode (el código de caracteres estándar utilizados por COM). La cadena lpsz se convierte entonces a caracteres extendidos utilizando la longitud de cadena especificada por ILen, y el resultado se guarda como cadena de caracteres extendidos pWideChar tipo LPWSTR.
La cadena se convierte después a parámetro pArg tipo BSTR, utilizando la longitud de cadena especificada por ILen, para transferirla al objeto de servicio a través de COM. Después de terminarse la conversión, se libera la memoria reservada para la conversión de caracteres extendidos. Se deshecha una excepción si se encuentra un parámetro ilegal. La cadena de caracteres pArg pasada al objeto de servicio se establece entonces como tipo BSTR.
La configuración completa del sistema POS 30 es por tanto la misma que se muestra en la Figura 1, pero los datos se manejan como se muestra en la Figura 3 en el objeto de control 32, en el objeto de interfaz 38, y en el objeto de servicio 33. Cuando el programa de aplicación 11 solicita en la operación 51 el método PrintBarCode, que es un método para imprimir un código de barras, y hace pasar una cadena de caracteres A0 que contiene datos nulos (0x00) como se muestra más abajo, el objeto de control 32 recibe una cadena de caracteres A1 tipo BSTR como se muestra más abajo.
A0
7B 41 00 30 31 32 33 34 35 36 37 38 39
A1
0D 00 00 00 7B 41 00 30 31 32 33 34 35 36 37 38 39 00
Con objeto de hacer pasar la cadena de caracteres del código de barras al objeto de servicio, el objeto de control solicita la función InvokeHelperV clase CCoOleDispatchDriver, que es un objeto de interfaz 38 que deja a un lado la función de conversión como se describió anteriormente, en vez de invocar ColeDispatchDriver.
void CcoOleDispatchDriver::InvokeHelperV(DISPID dwDispID, WORD wFlags, VARTYPE vtRet, Void* pvRet, const BYTE* pbParamInfo, va_list argList)
Como se muestra más arriba, el objeto de interfaz 38 recibe una cadena lpsz declarada como tipo LPCTSTR desde el objeto de control 32, pero desecha la cadena lpsz como tipo BSTR para detectar la longitud de cadena (operación 53). El objeto de interfaz 38 convierte entonces la cadena en caracteres extendidos sin disminuir la longitud de cadena de datos para transferirla a través de COM (operación 54), y entonces establece el parámetro pArg transferido al objeto de servicio 33 basado en la cadena de caracteres extendidos tipo BSTR (operación 55). El objeto de interfaz 38 en esta realización envía por tanto una cadena de caracteres como se muestra más abajo.
En primer lugar, la cadena de caracteres A1 se convierte en la cadena de caracteres A2' en la operación 54 especificando la longitud de cadena convirtiendo después la cadena en caracteres extendidos utilizando la función de conversión de cadena MultiByteToWideChar.
A2':
7B 00 41 00 00 00 30 00 31 00 32 00 33 00 34 00 35 00 36 00 37 00 38 00 39 00
En esta realización todos los datos que siguen al nulo (0x00) en la cadena A1 se convierten también en caracteres extendidos, en contraste a la anterior cadena A2 convertida de forma habitual, como resultado de declarar la longitud de la cadena A1. Esta cadena de caracteres ampliados se convierte entonces en la operación 55 por la macro de conversión de caracteres SysAllocStringLen en cadena A3' tipo BSTR de caracteres Unicode para transferirse por
COM
A3':
1A 00 00 00 7B 00 41 00 00 00 30 00 31 00 32 00 33 00 34 00 35 00 36 00 37 00 38 00 39 00 00 00
Como resultado de este proceso de conversión todos los datos de cadena suministrados por el programa de aplicación 11 POS que incluye nulos (0x00), se hace pasar al objeto de servicio 33.
No obstante el objeto de servicio 33 recibe la siguiente cadena A4 porque el parámetro pData para recibir los datos de cadena se declara como tipo LPCTSTR terminado en nulo.
A4:
7B 41 00
Resultará obvio que si la cadena de caracteres se manipula como la declarada tipo LPCTSTR, todos los datos que siguen al nulo (0x00) se dejarán caer y no se podrán procesar. No obstante, cuando la cadena de datos se hace pasar por COM como se ha descrito anteriormente, los datos se pasan en la memoria como un tipo BSTR para el objeto que recibe. Esto significa que en el objeto de servicio el tipo de parámetro se declara simplemente como LPCTSTR por el prototipo de función (definición de tipo de función) y los datos reales son tipo BSTR. Los datos reales en la memoria antes y después de la cadena A4 es como A5' como se muestra más abajo.
A5':
0D 00 00 00 7B 41 00 30 31 32 33 34 35 36 37 38 39 00
El objeto de servicio 33 procesa por lo tanto el parámetro pData declarado como tipo LPCTSTR como datos tipo BSTR en la operación 56.
lDataLen = SysStringByteLen((BSTR)pData);
CString strBinaryDate (pData, IdataLen);
Es decir, el parámetro pData declarado como tipo LPCTSTR se selecciona como tipo BSTR, se detecta la longitud de cadena, y la variable strBinaryData clase MFC Cstring se establece para imprimir como pData de longitud de cadena lDataLen. Como resultado de esto, se envía una cadena de caracteres que contiene nulos (0x00) suministrada desde el programa de aplicación POS 11 desde el objeto de servicio 33 a la impresora sin quitar nulos (0x00) y lo siguientes datos, y por tanto se puede producir una señal desde la impresora.
Aunque el objeto de interfaz 38 para hacer pasar datos desde el objeto de control 32 al objeto de servicio 33 a través de COM se deriva así de una clase base de MFC, se puede seleccionar una cadena de caracteres terminada en nulo de tipo LPCTSTR como datos tipo BSTR que contienen información de longitud de cadena que también puede contener el carácter nulo (00) de modo que se puede determinar el número real de caracteres (longitud de cadena efectiva). Por consiguiente, ese número de caracteres se puede convertir en caracteres extendidos independientemente del tipo de cadena LPCTSTR, y los datos se pueden convertir de esta manera en una cadena Unicode estándar manipulada por COM.
Por tanto, resultará obvio que la presente invención puede hacer pasar entre objetos datos de cadena de caracteres que contengan nulos (0x00) en los que un objeto de interfaz habitual derivado de una clase MFC quita todos los datos que siguen al nulo (0x00) cuando los datos se han hecho pasar por COM entre objetos si los datos se declararon como un tipo LPCTSTR u otra cadena de datos terminada en nulos. Este es también el caso cuando el programador de un programa de aplicación utiliza un objeto de interfaz derivado de una clase MFC en vez de ordenar un mecanismo para solicitar un método, por ejemplo, a través de COM), es decir, utilizando el objeto de interfaz de la presente invención, el programa de aplicación puede enviar datos que incluyan nulos (0x00) al objeto de control sin dejar caer nulos (0x00) y los datos siguientes.
Tampoco es necesario cambiar las especificaciones de un sistema de control POS de objetos distribuido que proporciona un API uniforme al programa de aplicación puesto que los problemas habitualmente relacionados con datos nulos (0x00) se pueden prevenir en los objetos de control y objetos de servicio cuando la cadena de caracteres se declara como tipo LPSTSTR. La presente invención permite así al suministrador del programa de aplicación y al usuario del programa tener la ventaja de un sistema de control POS que puede manipular de manera fiable datos de cadena que contienen nulos (0x00) sin desperdiciar recursos de elementos lógicos existentes.
Como se ha hecho notar anteriormente, hay métodos por los cuales un objeto de interfaz habitual puede manipular a la fuerza datos de cadena que contienen nulos (0x00) utilizando conversión binaria para convertir a la fuerza nulos (0x00) en otros valores, se envían los datos convertidos a otro objeto, y el objeto que se recibe restaura entonces los nulos (0x00). No obstante, no solo esto es un procedimiento complicado, las operaciones de conversión de enviar y recibir objetos se deben adaptar, y los objetos que se reciben resultan dependientes respecto al objeto que se envía. No obstante, esta técnica es difícil de implantar, debido a que es contradictoria a la modularización de los elementos lógicos y a los objetivos de reutilización de programación orientada a objetos. Además si el objeto que se recibe no puede manipular datos convertidos binarios, podría dar salida a una cadena completamente diferente.
No obstante, con el método de la invención descrito anteriormente se pueden hacer pasar al siguiente objeto los nulos (0x00) y los datos siguientes sin conversión binaria. Por consiguiente, los datos se pueden procesar por el objeto receptor como datos de cadena terminada en nulos, o los datos se pueden seleccionar y procesar como un tipo BSTR que contiene nulos (0x00). Por ejemplo un método para manipular datos de cadena que no contendrán nunca datos binarios puede procesar los datos como una cadena terminada en nulos, mientras que un método que podría encontrar datos binarios selecciona los datos de cadena como tipo BSTR para procesarlos. Por tanto se puede proporcionar un sistema de control que puede manipular datos nulos (0x00) aunque no tenga efecto en objetos existentes.
El objeto de control 32, el objeto de servicio 33, y el objeto de interfaz 38 de este sistema de control POS 39 se pueden grabar en un disco compacto (CD) u otro tipo de medio de almacenamiento de datos legible en ordenador como un programa de ordenador que tiene comandos para ejecutar las diversas operaciones mostradas en la Figura 3. Instalando el programa en la memoria gestionado por el SO 14 del ordenador y solicitando los métodos y propiedades de los objetos, se generan y limitan ejemplos de los objetos para ejecutar los procedimientos de programa de aplicación deseada.
Se debe hacer notar que mientras que la invención se ha descrito con relación a un sistema POS como ilustrativo de una aplicación con una elevada probabilidad de procesar realmente datos nulos (0x00) debido a la amplia gama de códigos de barras y otros datos manipulados por el sistema POS típico, la invención no está limitada a un sistema POS y obviamente se puede utilizar con otros sistemas que manipulan datos de cadena.
Como se apreciará de la descripción precedente, la presente invención permite datos de cadena que contengan nulos en la cadena para ser pasados de manera precisa y fiable entre objetos sin utilizar la conversión binaria para convertir los datos de cadena a un formato especial. Por consiguiente la presente invención puede proporcionar como un objeto de servicio un método y un sistema para procesar datos de cadena, tales como datos de código de barras, que contengan nulos (0x00) dentro de la cadena. La invención puede proporcionar además unos medios de desarrollo de elementos lógicos que permitan a un sistema POS u otro sistema que manipule potencialmente una variedad de tipos de datos.

Claims (13)

1. Un método de procesar datos de cadenas de caracteres para hacer pasar una primera cadena de caracteres, declarada como un primer tipo de datos, a través de un objeto de interfaz (18) que se ejecuta bajo un sistema operativo de ordenador desde un primer objeto (11; 12) que sirve como objeto de cliente a un segundo objeto (12; 13) que sirve como un objeto de servidor para el primer objeto (11; 12) cuando se ejecuta un programa de aplicación (11), en el que los objetos de interfaz (18) convierten la primera cadena de caracteres en una segunda cadena de caracteres de un tipo de datos de cadena básico que contiene información de longitud de cadena y pasa la segunda cadena de caracteres al segundo objeto (12; 13), procesando el último la segunda cadena de caracteres declarada como cadena de tipo de datos de cadena básico;
caracterizado por;
cambiar, en el objeto de interfaz (18), el tipo de datos declarado de la primera cadena de caracteres de dicho primer tipo de datos a dicho tipo de datos de cadena básica que contienen información de la longitud de cadena, de tal manera que el número de caracteres que incluyen datos nulos en la primera cadena de caracteres se puede contar independientemente de dicho primer tipo de datos, detectando con posterioridad un nuevo efectivo de caracteres en la primera cadena de caracteres, y convirtiendo después el número efectivo de caracteres en la primera cadena de caracteres en dicha segunda cadena de caracteres que se pueden hacer pasar por el sistema operativo.
2. El método de la reivindicación 1, en el que el programa de aplicación (11) puede procesar datos de cadenas de caracteres que contienen datos nulos;
el primer objeto (11; 12) es el programa de aplicación (11) o un objeto de control (12) de clase de dispositivo periférico, siendo capaz el dispositivo periférico (21) de procesar datos de cadena de caracteres; y
el segundo objeto (12; 13) es un objeto de control (12) de clase de dispositivo periférico o un objeto de servicio (13) de dispositivo periférico,
en el que un objeto de control (12) de clase de dispositivo periférico es un ejemplo de una clase para controlar diversos dispositivos periféricos de un ordenador y un objeto de servicio (13) de dispositivo periférico es un ejemplo de una clase para controlar un dispositivo periférico particular del ordenador.
3. El método de la reivindicación 2, en el que los datos de la cadena de caracteres son datos de código de barras.
4. El método de la reivindicación 2, en el que el programa de aplicación (11) es un programa de aplicación POS.
5. Un sistema de procesar datos de cadenas de caracteres que comprende un primer objeto (11; 12) que sirve como un objeto de cliente, un segundo objeto (12;13) que sirve como objeto de servidor con respecto al primer objeto (11;12) y un objeto de interfaz (18) para pasar una primera cadena de caracteres desde el primer objeto (11; 12) al segundo objeto (12; 13) tras la ejecución de un programa de aplicación (11), en el que el objeto de interfaz (18) está adaptado para convertir la primera cadena de caracteres en una segunda cadena de caracteres de un tipo de datos de cadena básico que contiene información de longitud de cadena y para pasar la segunda cadena de caracteres al segundo objeto (12; 13), estando adaptado el último para procesar la segunda cadena de caracteres declarada como cadena de tipo de datos de cadena básico;
caracterizado porque el objeto de interfaz (18) comprende medios para cambiar el tipo de datos declarado de la primera cadena de caracteres de dicho primer tipo de datos a dicho tipo de datos de cadena básico que contiene información de longitud de cadena, de modo que el número de caracteres que incluyen datos nulos en la cadena de caracteres se puede contar independientemente de dicho primer tipo de datos, detectándose un número efectivo de caracteres en la primera cadena de caracteres así cambiada, y convirtiendo el número efectivo de caracteres en la primera cadena de caracteres en dicha segunda cadena de caracteres que se puede hacer pasar por el sistema opera-
tivo.
6. El sistema de la reivindicación 5 para utilizarlo con un programa de aplicación (11) que puede procesar datos de cadenas de caracteres que contengan datos nulos; en el que
el primer objeto es el programa de aplicación (11) o un objeto de control (12) de clase de dispositivo periférico, estando capacitado el dispositivo periférico (21) para procesar datos de cadena de caracteres; y
el segundo objeto es un objeto de control (12) de clase de dispositivo periférico o un objeto de servicio (13) de dispositivo periférico, en el que un objeto de control (12) de clase de dispositivo periférico es un ejemplo de una clase para controlar varios dispositivos periféricos de un ordenador y un objeto de servicio (13) de dispositivo periférico es un ejemplo de una clase para controlar un dispositivo periférico particular del ordenador.
7. El sistema de la reivindicación 6, en el que los datos de la cadena de caracteres son datos de código de barras.
8. El sistema de la reivindicación 6, en el que el programa de la aplicación (11) es un programa de aplicación de POS.
9. Un programa de ordenador que comprende una primera porción de código, una segunda porción de código y una porción de código de interfaz que, cuando se ejecuta en un sistema procesador de datos, implementa un primer objeto (11; 12) que sirve como un objeto de cliente, un segundo objeto (12; 13) que sirve como un objeto de servidor para el primer objeto (11;12) y un objeto de interfaz (18), respectivamente, en el que
dicho primer objeto (11; 12) hace pasar una primera cadena de caracteres, declarada como un primer tipo de datos, a dicho segundo objeto (12; 13) invocando a dicho objeto de interfaz (18), comprendiendo dicho paso una orden ejecutable para ejecutar un procedimiento que invoque al objeto de interfaz (18);
dicho objeto de interfaz (18) convierte la primera cadena de caracteres en una segunda cadena de caracteres de un tipo de datos de cadena básico que contiene información de longitud de cadena, y hace pasar la segunda cadena de caracteres al segundo objeto (12; 13), procesando el último la segunda cadena de caracteres declarada como cadena de tipo de datos de cadena básico;
caracterizado porque el objeto de interfaz (18) cambia el tipo de datos declarado de la primera cadena de caracteres de dicho primer tipo de datos a dicho tipo de datos de cadena básico que contiene información de longitud de cadena, de tal manera que el número de caracteres que incluye datos nulos en los datos de la cadena de caracteres se pueden contar independientemente de dicho primer tipo de datos, luego detecta un número efectivo de caracteres en la primera cadena de caracteres, y convierte el número efectivo de caracteres de la primera cadena de caracteres en dichos segundos datos de cadena de caracteres que se pueden hacer pasar por el sistema operativo.
10. El programa de la reivindicación 9, en el que el primer objeto (11; 12) es un programa de aplicación .(11) capaz de procesar datos de cadenas de caracteres que contienen datos nulos, o un objeto de control (12) de la clase de dispositivo periférico, el dispositivo periférico (21) está capacitado para procesar datos de cadena de caracteres, en el que un objeto de control (12) de clase de dispositivo periférico es un ejemplo de una clase para controlar diversos dispositivos periféricos de un ordenador.
11. El programa de las reivindicaciones 9 ó 10, en el que los datos de la cadena de caracteres son un código de barras, y el programa de aplicación (11) es un programa de aplicación de POS.
12. El programa de la reivindicación 9, 10 u 11, en el que el segundo objeto (12, 13) es un objeto de control (12) de clase de dispositivo periférico, estando capacitado el dispositivo periférico (21) para procesar datos de cadena de caracteres, o un objeto de servicio (13) de dispositivo periférico, en el que un objeto de control (12) de clase de dispositivo periférico es un ejemplo de una clase para controlar diversos dispositivos periféricos de un ordenador y un objeto de servicio (13) de dispositivo periférico es un ejemplo de una clase para controlar un dispositivo periférico particular del ordenador.
13. Un medio de almacenamiento de datos legible por ordenador que lleva un programa como se describe en cualesquiera de las reivindicaciones 9 a 12.
ES01130279T 2000-12-28 2001-12-20 Metodo para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello. Expired - Lifetime ES2243384T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000403300 2000-12-28
JP2000403300A JP3915876B2 (ja) 2000-12-28 2000-12-28 文字列データの処理方法および処理装置

Publications (1)

Publication Number Publication Date
ES2243384T3 true ES2243384T3 (es) 2005-12-01

Family

ID=18867453

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01130279T Expired - Lifetime ES2243384T3 (es) 2000-12-28 2001-12-20 Metodo para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello.

Country Status (8)

Country Link
US (1) US7055155B2 (es)
EP (1) EP1220093B1 (es)
JP (1) JP3915876B2 (es)
KR (1) KR100600217B1 (es)
CN (1) CN1149471C (es)
AT (1) ATE299606T1 (es)
DE (1) DE60111916T2 (es)
ES (1) ES2243384T3 (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055483B1 (en) * 2005-11-28 2011-11-08 The Mathworks, Inc. System and method for performing hybrid expression evaluation
JP2010277440A (ja) * 2009-05-29 2010-12-09 Internatl Business Mach Corp <Ibm> プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
CN102915215B (zh) 2011-08-03 2015-05-27 精工爱普生株式会社 控制装置以及控制方法
JP5906620B2 (ja) * 2011-09-08 2016-04-20 セイコーエプソン株式会社 制御装置の制御方法
CN105242932B (zh) * 2015-10-21 2018-08-31 宁波三星医疗电气股份有限公司 一种基于delphi工具开发的软件的自动翻译方法
CN112307034B (zh) * 2020-11-23 2023-02-07 华立科技股份有限公司 一种集中器的数据收集方法及相关装置
CN117973317B (zh) * 2024-03-29 2024-06-07 恒生电子股份有限公司 字符串信息处理方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263162A (en) * 1990-11-07 1993-11-16 Hewlett-Packard Company Method of validating a label translation configuration by parsing a real expression describing the translation configuration
JPH0973395A (ja) 1995-09-06 1997-03-18 Seiko Epson Corp 複数のオブジェクトを用いた制御システム、その構築方法および周辺装置制御システム
US6108717A (en) * 1995-09-06 2000-08-22 Seiko Epson Corporation Control system using plural objects, a programming method therefor, and a peripheral devices control system
JPH09106355A (ja) 1995-10-12 1997-04-22 Seiko Epson Corp 複数のオブジェクトを用いた制御システム、その構築方法および周辺装置制御システム
GB2330222B (en) 1997-10-08 2003-03-05 Mitel Corp Methods of Communicating Control and/or Data Sginals Between First and Second Data processing Environments
US6633923B1 (en) * 1999-01-29 2003-10-14 Iona Technologies Inc. Method and system for dynamic configuration of interceptors in a client-server environment

Also Published As

Publication number Publication date
KR100600217B1 (ko) 2006-07-13
CN1365046A (zh) 2002-08-21
US20020194073A1 (en) 2002-12-19
DE60111916D1 (de) 2005-08-18
HK1049048A1 (en) 2003-04-25
JP3915876B2 (ja) 2007-05-16
JP2002202892A (ja) 2002-07-19
DE60111916T2 (de) 2006-04-20
EP1220093A2 (en) 2002-07-03
EP1220093A3 (en) 2003-04-16
US7055155B2 (en) 2006-05-30
ATE299606T1 (de) 2005-07-15
KR20020055426A (ko) 2002-07-08
CN1149471C (zh) 2004-05-12
EP1220093B1 (en) 2005-07-13

Similar Documents

Publication Publication Date Title
JP3900536B2 (ja) スマートicカードシステム
US20020120924A1 (en) System of reusable software parts for distributing event flows and methods of use
Chen Java card technology for smart cards: architecture and programmer's guide
ES2280283T3 (es) Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente.
EP0942362B1 (en) Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes
US6405264B1 (en) Marshaling and unmarshaling framework for supporting filters in a distributed object system
TW484099B (en) Method and apparatus for efficient invocation of Java methods from native code
EP1010193A4 (en) COMPUTER SYSTEM AND ASSOCIATED METHOD FOR THE OPTIMAL CONTROL OF STORAGE AND TRANSFER OF COMPUTER PROGRAMS OVER A COMPUTER NETWORK
US6249803B1 (en) Method and apparatus for executing code during method invocation
ES2243384T3 (es) Metodo para el tratamiento de cadenas de caracteres, sistema de tratamiento y programa objeto para ello.
CN101004694A (zh) 隔离的执行上下文之间数据转移的方法和装置
US6925632B2 (en) System for configuration programming
TW504640B (en) System and method for performing a business process in a multi-enterprise, collaborating network
CN117348875B (zh) 统一调度跨框架微组件的方法、装置、微前端系统及介质
CA2255131A1 (en) Method and apparatus for enforcing locking invariants in multi-threaded systems
WO2012047134A1 (ru) Система и способ распределенных вычислений
CN112559137B (zh) 一种h5容器配置方法及装置
KR100576967B1 (ko) 자바 스마트 카드
JP4176889B2 (ja) Icカード
CN108536523A (zh) 浏览器内ActiveX嵌套Flash正常交互的方法
TW480445B (en) Method for downloading application programs on the compiler system platform of an electronic communication device
JP7010084B2 (ja) Ic決済で用いるトークンデバイス
JP4313180B2 (ja) 耐タンパ装置及び耐タンパネットワークシステム
SIG et al. RPC RUNTIME SUPPORT FOR I18N CHARACTERS—FUNCTIONAL SPECIFICATION
Zukowski Compatibility Issues