Funciones API. ¿Qué es una API y por qué podría ser necesaria? API más famosas



API: ¿qué es? Decodificación, definición, traducción.

API es una abreviatura en inglés, que significa A solicitud PAG programación I ninterface - “Interfaz de programación de aplicaciones”. Normalmente, una API es un conjunto de funciones convenientes que le permiten acceder a un servicio y solicitar datos del mismo. En inglés, esta abreviatura se pronuncia "hey-pee-ay", pero los programadores de habla rusa no se complican la vida innecesariamente y dicen "ápi".

Un ejemplo clásico de API es Yandex.maps: cualquier programador o webmaster más o menos experimentado puede colocar en su sitio web un mapa Yandex de cualquier ciudad o pueblo con la configuración que necesita, utilizando funciones API convenientes que, por cierto, son proporcionado por Yandex de forma totalmente gratuita e incluye casi todo el conjunto de configuraciones de mapas disponibles para los usuarios del sitio web Yandex.Maps.




¿Descubriste de dónde vino la palabra? API, su explicación en palabras sencillas, traducción, origen y significado.

Es hora de hablar de un concepto como Funciones API en lenguaje Visual Basic. ¿Por qué son importantes estas funciones en Visual Basic? Averigüemos, en primer lugar, cuando comience a programar en Visual Basic, comprenderá inmediatamente que con estas funciones puede escribir programas muy serios y, en segundo lugar, sin usar las funciones API, simplemente no puede hacer mucho, por ejemplo, casi todo lo relacionado con el uso. el sistema operativo Windows ( por ejemplo: averigüe el nombre de usuario, el espacio en el disco duro, etc.).

Pero para poder empezar a poner en práctica estas funciones es necesario saber cuáles son, hablemos de eso primero.

Teoría sobre las funciones API de Visual Basic

API es una abreviatura de Interfaz de programación de aplicaciones ( interfaz de programación de aplicaciones). En otras palabras, una API es un conjunto de funciones que el propio sistema operativo proporciona al programador para que las utilice en sus programas. Con la API, los programadores pueden poner en práctica fácilmente sus ideas.

Se pueden llamar funciones API desde Visual Basic para realizar tareas para las cuales el código estándar de Visual Basic no es suficiente. Por ejemplo, las herramientas estándar de Visual Basic no le permiten apagar su computadora ni reiniciarla. Sin embargo, todo esto se puede hacer fácilmente llamando a la función API adecuada.

Casi todas las funciones que se encuentran en Windows se encuentran dentro de archivos DLL ( Biblioteca de enlaces dinámicos). Todos los archivos dll se encuentran en la carpeta del sistema de Windows. Hay más de 1000 funciones API, que se dividen en cuatro categorías principales.

  • Trabajar con aplicaciones: iniciar y cerrar aplicaciones, procesar comandos de menú, mover y cambiar el tamaño de ventanas;
  • Gráficos: creación de imágenes;
  • Información del sistema: identificación del disco actual, tamaño de la memoria, nombre de usuario actual, etc.;
  • Trabajar con el registro: manipulación del registro de Windows.

Uso de funciones API en la práctica

Pasemos ahora al uso de estas funciones en la práctica. Las funciones API llamadas en Visual Basic primero deben declararse. La declaración especifica el nombre de la DLL y la función, así como información sobre el número y tipo de argumentos.

Los procedimientos DLL se declaran con el comando Declarar en la sección Declaraciones generales de un módulo de formulario o un módulo estándar:

Declarar nombre de función Lib "biblioteca" [([ _ variable [,ByVal,] variable ]...])] como tipo

Los procedimientos DLL que se encuentran en los módulos estándar son públicos de forma predeterminada y se pueden llamar desde cualquier lugar de la aplicación. Los procedimientos declarados en un módulo de formulario son privados y deben ir precedidos por la palabra clave Privado.

La sección Lib le indica dónde buscar el archivo DLL que contiene la función. Cuando se hace referencia a las bibliotecas principales de Windows (user32.dll, kernel32.dll, gdi.dll), no es necesario incluir la extensión.

Si no se especifica la ruta del archivo, la exploración del directorio comienza en la siguiente secuencia

  1. El directorio que contiene el archivo EXE del programa;
  2. Directorio actual;
  3. Directorio del sistema de Windows;
  4. Directorio de Windows;
  5. Variable de entorno de ruta.

Aquí hay una pequeña lista de archivos DLL estándar de Windows:

  • advapi.dll: protección NT, registro y otros servicios avanzados;
  • comdlg.dll: cuadros de diálogo estándar;
  • gdi.dll: interfaz del dispositivo gráfico;
  • kernel32.dll: memoria, discos, procesos, recursos;
  • mpr.dll - redes;
  • netapi32.dll - biblioteca API de red;
  • shell32.dll: shell de Windows, arrastrar y soltar, selección de iconos;
  • user32.dll - interfaz de usuario - ventanas, menús, líneas, mensajes;
  • version.dll - control de versiones;
  • winmm.dll: multimedia, sonido, joysticks, temporizadores;
  • winspoll.dll: administrador de impresión.

La mayoría de los procedimientos de DLL están documentados utilizando la notación del lenguaje de programación C y C++. Para convertir con éxito una función API en un comando Declarar, debe comprender el mecanismo de paso de argumentos. Normalmente los argumentos se pasan por valor. En este caso, la palabra clave ByVal se coloca antes del nombre del argumento. Si el argumento se pasa por referencia, se establece ByRef.

Aquí está la lista más pequeña de funciones que se utilizan en Visual Basic:

  • BitBlt: copia una imagen de un HDC a otro;
  • FindWindow: busca el identificador de una ventana con el título especificado;
  • GetCursorPos: devuelve la posición actual del cursor del mouse (global);
  • GetDriveType: devuelve el tipo de unidad;
  • GetForegroundWindow: devuelve el identificador de la ventana activa;
  • SetCursorPos: establece la nueva posición del cursor del mouse;
  • SetVolumeLabel: cambia la etiqueta del disco;
  • SetWindowPos: establece la posición de una ventana con un determinado identificador (también puede usar esta función para colocar la ventana ARRIBA de todas las demás);
  • ShellExecute: inicia la aplicación asociada con la extensión que tiene el archivo especificado (también puede simplemente iniciar la aplicación especificada);
  • ShowCursor: oculta o muestra el cursor del mouse en la pantalla.

Ejemplos de trabajo con el registro.

Además, al programar en Visual Basic y en otros lenguajes, surge un problema cuando necesitas usar el registro de Windows, pero usando funciones de la API esto es fácil de hacer, por ejemplo:

Para leer un parámetro de cadena use la función GetRegString

Ejemplo:

Prueba tenue Como prueba de cadena = GetRegString(HKEY_LOCAL_MACHINE, _ "Software\Microsoft\DirectX", "Versión") Form1.Caption = prueba

Para leer un parámetro DWORD GetRegDWord

Ejemplo:

Prueba tenue Como prueba larga = GetRegDWord(HKEY_LOCAL_MACHINE, _ "Software\Microsoft\Internet Explorer\AboutURLs", "Home") Form1.Caption = prueba

Para escribir un parámetro de cadena, use SetRegString

Ejemplo:

SetRegString HKEY_LOCAL_MACHINE, _ "Software\prueba", "MiPrograma", "Opciones"

Si la clave o parámetro no ha sido creado, entonces se creará; si la clave o parámetro ya existe, entonces los nuevos valores se escribirán sobre los antiguos.

Para escribir un parámetro de tipo DWORD, utilice SetRegDWord

Ejemplo:

SetRegDWord HKEY_LOCAL_MACHINE, _ "Software\prueba", "MiPrograma", "555"

Para eliminar una clave del registro, utilice la función DeleteRegKey

Ejemplo:

DeleteRegKey HKEY_LOCAL_MACHINE, "Software", "prueba", Verdadero

Segundo parámetro: clave principal
El tercer parámetro es Verdadero (si se requiere confirmación para la eliminación) o Falso (si no se requiere confirmación).

Para eliminar un valor del registro, utilice la función DeleteRegValue

Ejemplo:

DeleteRegValue HKEY_LOCAL_MACHINE,_ "Software\Microsoft\Internet Explorer\AboutURLs", "mozilla", Falso

De hecho, las posibilidades de las funciones API en el sistema operativo Windows son casi ilimitadas. Terminemos de ver esta característica de Visual Basic y finalmente escribamos un pequeño programa usando funciones API.

Este programa simplemente muestra un mensaje en pantalla, pega el siguiente código:

Función de declaración privada BeginPath Lib "gdi32" (ByVal hdc mientras) Función de declaración privada EndPath Lib "gdi32" (ByVal hdc mientras) Función de declaración privada PathToRegion Lib "gdi32" (ByVal hdc mientras) Mientras declara privada Función SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Sub Form_Load() Const TEXT = "Usaste la API" Dim hRgn As Long Font.Name = "Times New Roman " Font.Bold = True Font.Size = 60 Ancho = TextWidth(TEXTO) Alto = TextHeight(TEXTO) BeginPath hdc Imprimir TEXTO EndPath hdc hRgn = PathToRegion(hdc) SetWindowRgn hWnd, hRgn, False Move (Pantalla.Ancho - Ancho) / 2, (Altura.Pantalla - Altura) / 2 Sub final

Aquí utilizamos 4 funciones (BeginPath, EndPath, PathToRegion, SetWindowRgn), que se encuentran en dos bibliotecas dll (gdi32, user32).

¡Eso es todo por ahora!

Una API es una interfaz externa para programar una aplicación, acceder a sitios utilizando un protocolo específico para obtener información y desarrollar de forma simplificada programas asociados a servicios internos.

¿Qué significa API?

La analogía más sencilla para utilizar una API sería utilizar una calculadora para realizar cálculos complejos. Digamos que tienes una tarea, puedes comprender su esencia, construir ecuaciones y gráficas, pero no sabes realizar operaciones aritméticas con números. Hay una calculadora a tu lado que puede realizar estas operaciones con facilidad. No sabes lo que sucede dentro de la computadora y no necesitas saberlo. Usted proporciona información de una forma y la recibe de otra, necesaria para sus propósitos.

Cualquier API funciona según este principio. No le importa cómo obtiene el programa la respuesta, qué camino toma la solicitud dentro de él, cómo se realizan los cálculos. De una sola cosa está seguro: en respuesta, se le dará información estandarizada sobre el éxito de la operación o su error.

La interfaz API le permite no perder tiempo, dinero y esfuerzo comprando una "bicicleta nueva". Obtiene un puerto de información funcional que recibe y envía las cantidades necesarias de datos para los fines de su desarrollo.

Ventajas:

  • Ahorro en el desarrollo de su propia interfaz.
  • No es necesario comprender los matices del problema.
  • Las API son desarrolladas por profesionales y tienen en cuenta todos los factores de los procesos internos que quizás no conozca al crear su solución.
  • Le permite comunicarse con servicios que están cerrados a través de otros protocolos.

Contras:

  • Si el servicio de destino se actualiza, la API no siempre recibe inmediatamente la funcionalidad completa.
  • No puedes detectar errores y no sabes cómo funciona el proceso en el código de otra persona.
  • La API no siempre da el resultado más optimizado en términos de tiempo, ya que está diseñada para manejar casos generales, no específicos.

Ejemplos de API

La integración API es el proceso de conectar una aplicación a una interfaz de datos externa. Trabajar con la API comienza con el estudio de la documentación y los protocolos utilizados y luego integrando directamente su programa en la interfaz. Veamos los servicios más populares que tienen su propia API.

VKAPI

Interfaz externa para la interacción de la popular red social VKontakte con clientes, así como con aplicaciones de navegador y servidor. Le permite administrar mensajes de la comunidad, portadas de grupos, páginas de usuario si tiene las claves de acceso adecuadas.

Todas las solicitudes se realizan a la dirección. https://api.vk.com/method/

Después de la barra diagonal viene el nombre del método API utilizado y se transmiten los parámetros GET de la solicitud. La respuesta también llega vía HTTPS en formato JSON.

API DE BOT DE TELEGRAM

Una de las API más populares. Se utiliza para controlar bots en Telegram Messenger. Después de crear un bot a través de @botfather y obtener las claves de acceso necesarias, puede comenzar a interactuar con el backend.

Las solicitudes se pueden realizar a: https://api.telegram.org/bot0000000:token/

Donde bot0000000 se reemplaza por el identificador único de su bot y token expresa la clave secreta.

Las solicitudes se envían a través de conexiones HTTPS, el nombre del método se indica con una barra diagonal a la dirección principal. La respuesta viene en formato JSON.

API DE MAPA DEL TIEMPO ABIERTO

A menudo es necesario obtener información meteorológica sin utilizar widgets de terceros ni aplicaciones de pago. El servicio OpenWeatherMap viene al rescate con una API abierta y gratuita. Después de registrarse y recibir datos de identificación, puede enviar solicitudes meteorológicas desde scripts de servidores de todo el mundo. En respuesta al ID de la ciudad, el recurso devuelve la información más detallada sobre el clima actual y ofrece un pronóstico para el futuro cercano.

Formato: Transmisión HTTP vía api.openweathermap.org/data/2.5/weather?id= indicando el número de identificación de la ciudad deseada. Respuesta del servidor: JSON.

API DE MAPAS DE GOOGLE

¿Qué podría ser mejor que un mapa mundial interactivo en un sitio web? Especialmente si no se trata de una plantilla de Google Maps, sino de su edición personal de un mapa popular con grupos de marcadores personales. El mapa interactuará con otros scripts del sitio, enviando información sobre clics y coordenadas.

La API JavaScript de Google Maps ofrece capacidades similares. El módulo está completamente programado y funciona en el lado del navegador, por lo que no necesitamos solicitudes HTTP de PHP ni la formación de encabezados en el lado del servidor, como era el caso de otras API.

Por ejemplo, colocar un marcador en un mapa se verá así:

marca var = nuevo google.maps.Marker((
posición: miPOS,
mapa: mapa,
título: "¡Hola!"
});

¿Cuál es la necesidad y los beneficios de utilizar la API?

Hay bastantes funciones útiles.

Primer aspecto

Puede establecer una interacción interactiva del usuario con redes sociales y mensajería instantánea, utilizar las capacidades de sistemas informáticos de terceros para mostrar tipos de cambio, clima y otra información importante.

Con la API, puede conectar instantáneamente otros recursos y soluciones de software a los servidores, lo que normalmente llevaría semanas de desarrollo. La API simplifica la vida cuando no se necesita una implementación única y la confiabilidad y la seguridad son una prioridad.

Segundo aspecto

Si usted es propietario de una potencia informática compleja, un servicio popular o un almacenamiento de datos para acceso público o semiprivado, entonces una buena medida sería crear su propia API. ¿Qué dará?

  • Gran flujo de clientes.
  • Acceso simplificado a sus servicios para socios.
  • Conveniencia del análisis estadístico del uso del servicio.

Tercer aspecto

Casi igual que el segundo. Pero sin necesidad de implementar una API de acceso abierto. Si tiene un portal y desea crear una aplicación móvil para él en Android/IOS, la mejor solución es reescribir el sistema bajo una única API. Toda la estructura de datos está sistematizada. El sitio y la aplicación funcionarán a través de canales de datos únicos.

API de Windows: un conjunto de funciones del sistema operativo

La abreviatura API parece muy misteriosa e incluso aterradora para muchos programadores novatos. De hecho, una interfaz de programación de aplicaciones (API) es sólo un conjunto de funciones ya preparadas que los desarrolladores de aplicaciones pueden utilizar. En general, este concepto es equivalente a lo que antes se llamaba más a menudo biblioteca de subrutinas. Sin embargo, API suele referirse a una categoría especial de dichas bibliotecas.

Durante el desarrollo de casi cualquier aplicación bastante compleja (MyApplication) para el usuario final, se forma un conjunto de funciones internas específicas que se utilizan para implementar este programa en particular, que se denomina API MyApplication. Sin embargo, a menudo resulta que estas funciones pueden utilizarse eficazmente para crear otras aplicaciones, incluso por parte de otros programadores. En este caso, los autores, en función de la estrategia de promoción de su producto, deben decidir la pregunta: ¿abren el acceso a este conjunto a usuarios externos o no? Si la respuesta es sí, la frase "El paquete incluye un conjunto abierto de funciones API" aparece en la descripción del paquete de software como una característica positiva (pero a veces por dinero adicional).

Por lo tanto, la mayoría de las veces una API se refiere a un conjunto de funciones que forman parte de una aplicación, pero que también están disponibles para su uso en otros programas. Por ejemplo, Excel, además de su interfaz de usuario final, tiene un conjunto de funciones API de Excel que se pueden utilizar, en particular, al crear aplicaciones utilizando VB.

En consecuencia, la API de Windows es un conjunto de funciones que forma parte del propio sistema operativo y al mismo tiempo es accesible para cualquier otra aplicación, incluidas las escritas en VB. En este sentido, la analogía con el conjunto de interrupciones del sistema BIOS/DOS, que en realidad es una API de DOS, está bastante justificada.

La diferencia es que la gama de funciones API de Windows, por un lado, es mucho más amplia en comparación con DOS y, por otro lado, no incluye muchas de las herramientas para administrar directamente los recursos informáticos que estaban disponibles para los programadores en el pasado. SO. Además, las llamadas a la API de Windows se realizan mediante llamadas a procedimientos ordinarios y las llamadas a funciones de DOS se realizan mediante una instrucción especial del procesador llamada Interrupción.

¿Por qué necesitamos Win API para programadores de VB?

A pesar de que VB tiene una gran variedad de funciones, en el proceso de desarrollo más o menos serio se descubre que sus capacidades a menudo no son suficientes para resolver los problemas necesarios. Al mismo tiempo, los programadores novatos a menudo comienzan a quejarse de las deficiencias de VB y piensan en cambiar de herramienta, sin sospechar que su computadora tiene un gran conjunto de herramientas y solo necesitan saber cómo usarlas.

Al familiarizarse con la API de Win, se descubre que muchas funciones integradas de VB no son más que llamadas a los procedimientos correspondientes del sistema, pero solo se implementan en forma de sintaxis de un lenguaje determinado. Teniendo esto en cuenta, la necesidad de utilizar la API viene determinada por las siguientes opciones:

  1. Funciones API que están completamente implementadas como funciones VB integradas.
  2. Sin embargo, a veces en este caso es útil cambiar al uso de la API, ya que esto a veces puede mejorar significativamente el rendimiento (en particular, debido a la ausencia de transformaciones innecesarias de los parámetros pasados).
  3. Las funciones VB integradas implementan solo un caso especial de la función API correspondiente.

Esta es una opción bastante común. Por ejemplo, la función API CreateDirectory tiene más capacidades que el operador VB MkDir integrado.

El punto de vista personal del autor es el siguiente: en lugar de expandir las funciones integradas de VB de una versión a otra, se debe dar una buena descripción de las funciones API más populares. Al mismo tiempo, me gustaría aconsejar a los desarrolladores que no esperen a que aparezca una nueva versión de la herramienta con funciones ampliadas, sino que observen más de cerca la composición de la API Win existente; es probable que las capacidades que necesita podría haberse implementado ya en la versión VB 1.0, lanzada en 1991.

Cómo aprender a ganar API

Esta no es una pregunta tan simple, considerando que el número de funciones API de Win32 se estima en unas 10 mil (nadie conoce la cifra exacta, ni siquiera Microsoft).

VB (versiones 4-6) incluye un archivo que describe las declaraciones de Win API: WIN32API.TXT (le contaremos más sobre su uso más adelante). Pero, en primer lugar, con su ayuda puede obtener información sobre el propósito de una función en particular y sus parámetros solo mediante los nombres mnemónicos utilizados y, en segundo lugar, la lista de funciones en este archivo está lejos de ser completa. En un momento (hace siete años), VB 3.0 tenía archivos de ayuda especiales que describían las funciones de la API Win16. Sin embargo, ya en la versión 4.0 esta información útil con una interfaz conveniente desapareció.

Puede encontrar información completa sobre la API Win32 en la ayuda del kit de desarrollo de software de plataforma, que se incluye en los CD de la biblioteca MSDN incluidos con VB 5.0 y 6.0 Enterprise Edition y Office 2000 Developer Edition. Sin embargo, encontrar allí la información necesaria y comprenderla no es nada fácil. Sin mencionar que todas las descripciones allí se dan en relación con el lenguaje C.

Los libros del famoso experto estadounidense Daniel Appleman son generalmente reconocidos en el mundo por aprender a programar API en el entorno VB. Su Guía del programador Visual Basic de Dan Appleman para la serie API de Windows (para Win16, Win32 y varias versiones de VB) ha sido uno de los libros más vendidos para programadores de VB desde 1993. El libro Guía del programador VB 5.0 de Dan Appleman para la API Win32, publicado en 1997, fue traído al autor desde Estados Unidos por un amigo que lo encontró en la primera librería de una pequeña ciudad de provincias.

Este libro tiene más de 1500 páginas y cubre técnicas generales de programación API en VB, así como más de 900 funciones. El CD incluido contiene el texto completo del libro y todos los ejemplos de programas, así como varios capítulos adicionales no incluidos en la versión impresa. En 1999, Dan Appleman publicó un nuevo libro, Win32 API Puzzle Book and Tutorial for Visual Basic Programmers de Dan Appleman, que incluye información sobre otras 7.600 funciones (aunque no tan extensa).

Win API y biblioteca de vínculos dinámicos (DLL)

El conjunto de Win API se implementa en forma de DLL dinámicas. A continuación, hablaremos sobre la tecnología de uso de DLL en el entorno VB usando el ejemplo de las bibliotecas incluidas en Win API. Sin embargo, cuando se habla de DLL, hay algunos puntos importantes que destacar.

En este caso, por DLL nos referimos a la versión tradicional de las bibliotecas dinámicas binarias, que proporcionan a las aplicaciones acceso directo a los procedimientos necesarios: subrutinas o funciones (de forma muy similar a lo que sucede cuando se llaman procedimientos dentro de un proyecto VB). Estas bibliotecas se pueden crear utilizando diferentes herramientas: VC++, Delphi, Fortran, excepto VB (veamos qué aparece en la versión 7.0); este último sólo puede crear archivos DLL ActiveX, a los que se accede a través de la interfaz OLE Automation.

Normalmente, los archivos de biblioteca dinámica tienen la extensión .DLL, pero esto no es en absoluto necesario (para Win16 se usaba a menudo la extensión .EXE); Los controladores de dispositivos externos se designan mediante .DRV.

Como ya hemos señalado, es bastante difícil determinar el número exacto de funciones API de Windows y los archivos que las contienen, pero todas están ubicadas en el directorio del sistema. En este sentido, es mejor destacar la composición de las bibliotecas incluidas en el kernel del sistema operativo y las bibliotecas principales con funciones adicionales clave.

Y ahora algunos consejos.

Consejo 1. Asegúrese de que su anuncio de DL tenga el formato correcto Procedimientos L

La misma llamada a procedimientos DLL en un programa tiene exactamente el mismo aspecto que a los procedimientos "normales" de Visual Basic, por ejemplo:

Llamar a DllName([lista de argumentos])

Sin embargo, para utilizar funciones DLL externas (incluida la API de Win), deben declararse en el programa mediante la declaración Declare, que tiene este aspecto:

Declarar SubProcedimientoName Lib _ “LibraryName” _ [([ArgumentList])]

Declarar función Nombre de función _ Lib “Nombre de biblioteca” _ [([Lista de argumentos])]

Aquí, los elementos opcionales del operador se muestran entre corchetes, las expresiones variables están en cursiva y las palabras restantes son palabras clave. El sistema de ayuda ofrece una descripción bastante buena de la sintaxis del operador, por lo que por ahora sólo señalaremos algunos puntos.

Las declaraciones de funciones externas deben colocarse en la sección Declaraciones generales del módulo. Si lo coloca en un módulo de formulario, debe especificar la palabra clave Privada (esta declaración solo estará disponible dentro de este módulo); esta es una limitación para todos los procedimientos del módulo de formulario.

El conjunto de API de Win32 se implementa solo en forma de funciones (la API de Win16 tenía muchas subrutinas). En su mayor parte, se trata de funciones de tipo Long, que suelen devolver el código de finalización de la operación.

El operador Declarar apareció en MS Basic en la época de DOS y también se usaba para declarar procedimientos internos de proyectos. En Visual Basic esto no es necesario, ya que la declaración de procedimientos internos es automáticamente su declaración Sub o Función. En comparación con Basic/DOS, la nueva descripción debe indicar el nombre del archivo de la biblioteca donde se encuentra el procedimiento requerido. Las bibliotecas de Wip API se encuentran en el directorio del sistema de Windows, por lo que basta con proporcionar solo el nombre del archivo. Si accede a una DLL que se encuentra en una ubicación aleatoria, debe escribir la ruta completa a este archivo.

La descripción de la declaración Declare suele ocupar bastante espacio y no cabe en una sola línea de la ventana de código. Por lo tanto, le recomendamos que siga un esquema de salto de línea específico al escribir aplicaciones, por ejemplo:

Declarar función GetTempPath _ Lib “kernel32” Alias ​​​​“GetTempPathA” _ (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long

En este caso, todos los elementos principales de la descripción están colocados en líneas diferentes y, por lo tanto, son fáciles de leer.

Consejo 2: tenga especial cuidado al trabajar con funciones DLL

El uso de Win API y varias funciones DLL amplía significativamente la funcionalidad de VB y, a menudo, mejora el rendimiento del programa. Sin embargo, el precio a pagar por esto es el riesgo de reducir la confiabilidad de la aplicación, especialmente durante su depuración.

Una de las ventajas más importantes del entorno VB es la confiabilidad del proceso de desarrollo del programa: al operar bajo el control de un intérprete, el código del programa teóricamente no puede interrumpir el funcionamiento de Windows y del propio VB. Es posible que el programador no tenga mucho cuidado con la exactitud de la transferencia de parámetros a las funciones llamadas; el propio intérprete detectará fácilmente dichos errores durante el proceso de traducción del código o durante su ejecución. En el caso más desagradable, el modo de procesamiento simplemente se interrumpirá, con una indicación de dónde y por qué ocurrió el error.

El uso de funciones API de Windows u otras DLL elimina directamente dicho control sobre la transferencia de datos y el proceso de ejecución de código fuera del entorno VB. Por lo tanto, un error al acceder a funciones externas puede provocar la inoperancia tanto de VB como del sistema operativo. Esto es especialmente cierto en la etapa de desarrollo del programa, cuando la presencia de errores es bastante natural. Así, al utilizar las capacidades más amplias de las funciones de la capa base del sistema, el programador asume la responsabilidad del uso correcto de las mismas.

El problema se agrava aún más por el hecho de que diferentes lenguajes de programación utilizan diferentes formas de pasar parámetros entre procedimientos. (Más precisamente, se utilizan diferentes métodos de paso de forma predeterminada, ya que muchos idiomas pueden admitir más de uno). Las API de Win se implementan en C/C++ y utilizan convenciones de paso de parámetros de C/C++ que difieren de la versión habitual de VB.

En este sentido, cabe señalar que la aparición de análogos de funciones API integradas en VB se justifica precisamente por la adaptación de estas últimas a la sintaxis de VB y la implementación de un mecanismo de control del intercambio de datos adecuado. Tengamos en cuenta también que en la etapa de depuración experimental de la aplicación al crear un módulo ejecutable, es mejor utilizar la opción de compilación de código P en lugar de código nativo (código de máquina). En el primer caso, el programa se ejecutará bajo el control de un intérprete: más lento en comparación con el código de máquina, pero más confiable desde el punto de vista del posible impacto erróneo en el sistema operativo y proporcionando un modo más conveniente para identificar posibles errores.

Consejo 3: Diez consejos de Dan Appleman para una programación API sólida en VB

El uso de la función API requiere una programación más cuidadosa utilizando algunas técnicas de llamada a procedimientos menos familiares (en comparación con VB). Continuaremos abordando estos temas a continuación. Y ahora presentamos un resumen de los consejos formulados por Dan Appleman sobre este tema (su primera versión apareció en 1993) con algunas de nuestras adiciones y comentarios.

1. Recuerda ByVal. El error más común que se comete al acceder a las funciones API y DLL es el uso incorrecto de la palabra clave ByVal: o se olvidan de ponerla o, por el contrario, la ponen cuando no es necesaria.

Estos ejemplos muestran el impacto del operador ByVal en el paso de parámetros.

Tipo de parámetro Con ByVal Sin ByVal
Entero Se inserta un entero de 16 bits en la pila La dirección de 32 bits de un entero de 16 bits se inserta en la pila
Largo Se inserta un entero de 32 bits en la pila La dirección de 32 bits de un entero de 32 bits se inserta en la pila
Cadena La cadena se convierte al formato utilizado en C (datos y un byte nulo final). La dirección de 32 bits de la nueva línea se inserta en la pila El mango VB de la cuerda se empuja hacia la pila. (Estos identificadores nunca son utilizados por la API de Windows y solo se reconocen en archivos DLL implementados específicamente para VB).

Cabe recordar aquí que el paso de parámetros en cualquier sistema de programación, incluido VB, se realiza de dos formas principales: por referencia (ByRef) o por valor (ByVal). En el primer caso, se pasa la dirección de la variable (esta opción se usa de forma predeterminada en VB), en el segundo, su valor. La diferencia fundamental es que al utilizar una referencia, el valor modificado del parámetro pasado se devuelve al programa que realiza la llamada.

Para comprender esto, realice un experimento utilizando los siguientes programas:

Dim v As Integer v = 2 Llamar a MyProc(v) MsgBox “v = “ & v Sub MyProc (v As Integer) v = v + 1 End Sub

Cuando ejecute este ejemplo, recibirá un mensaje con el valor de la variable igual a 3. El hecho es que en este caso la dirección de la variable v, creada físicamente en el programa que llama, se pasa a la subrutina MyProc. Ahora cambie la descripción del procedimiento a

Sub MyProc (ByVal v Como entero)

Como resultado, al ejecutar la prueba, obtendrá v = 2, porque solo el valor inicial de la variable se pasa al procedimiento; el resultado de las operaciones realizadas con ella no se devuelve al programa que llama. El modo de transferencia por valor también se puede cambiar usando el operador de llamada de la siguiente manera:

Sub MyProc (v As Integer) ... Call MyProc((v)) ' (v) - los paréntesis indican el modo de transferencia por valor.

Sin embargo, al acceder a procedimientos internos de VB, se prohíbe el uso de la palabra clave ByVal en la declaración Call; en su lugar se utilizan paréntesis. Hay una explicación para esto.

En el caso clásico (C, Fortran, Pascal), la diferencia entre los modos ByRef y ByVal depende de qué se coloca exactamente en la pila de intercambio de datos: la dirección de la variable o su valor. Históricamente, Basic utiliza una variante de la emulación del software ByVal: siempre hay una dirección en la pila, pero solo cuando se pasa por valor se crea una variable temporal para esto. Para distinguir entre estas dos opciones (Clásica y Básica), se utilizan diferentes formas de describir el modo ByVal. Tenga en cuenta que emular el modo ByVal en VB proporciona una mayor confiabilidad del programa: al mezclar la forma de referencia, el programador solo corre el riesgo de que el valor corregido de la variable sea devuelto (o no devuelto) al programa que llama. En la versión "clásica", tal confusión puede conducir a un error fatal al ejecutar un procedimiento (por ejemplo, cuando se usa un valor de variable igual a, digamos, cero, en lugar de una dirección de memoria).

Las funciones DLL se implementan según principios "clásicos" y, por lo tanto, requieren una descripción obligatoria de cómo se intercambian los datos con cada uno de los argumentos. Las declaraciones de funciones a través de la descripción de Declaración (más precisamente, la lista de argumentos pasados) sirven para este propósito. La forma más común de pasar parámetros a una función API de Windows o DLL es utilizar la palabra clave ByVal. Además, se puede especificar tanto en el operador Declarar como directamente al llamar a la función.

Las consecuencias del paso incorrecto de parámetros son fáciles de predecir. Si recibe una dirección obviamente no válida, recibirá un mensaje GPF (Fallo de protección general). Si la función recibe un valor que coincide con una dirección válida, entonces la función API ingresará a un área extraña (por ejemplo, el kernel de Windows) con todas las consecuencias desastrosas resultantes.

2. Verifique el tipo de parámetros que se pasan. El número y tipo correcto de parámetros pasados ​​son igualmente importantes. Es necesario que los argumentos declarados en Declare coincidan con los parámetros esperados en la función API. El caso más común de error al pasar parámetros implica la diferencia entre NULL y una cadena de longitud cero; recuerde que no son lo mismo.

3. Verifique el tipo de devolución.

VB es bastante tolerante con las discrepancias en los tipos de retorno de funciones, ya que los valores numéricos generalmente se devuelven a través de registros en lugar de la pila.

  • Las siguientes reglas ayudarán a determinar el valor correcto devuelto por una función API:
  • Una función DLL que no devuelve un valor (análoga a anular en 'C') debe declararse como VB Sub.
  • Una función API que devuelve un valor entero (Entero o Largo) se puede definir como Sub o Función que devuelve un valor del tipo apropiado.

Ninguna de las funciones API devuelve números de punto flotante, pero algunas DLL pueden devolver este tipo de datos. 4. Utilice la construcción “Como Cualquiera” con mucho cuidado.

Muchas funciones API de Windows tienen la capacidad de aceptar parámetros de diferentes tipos y utilizan la construcción Como cualquier para hacerlo (la interpretación de tipos se realiza según el valor de otros parámetros pasados).

Una buena solución en este caso puede ser utilizar varios alias (Alias) de una función creando dos o más declaraciones para la misma función, especificando cada declaración parámetros de un tipo específico. 5. No olvides inicializar las cadenas.

Hay muchas funciones en Win API que devuelven información cargando datos en búferes de cadena pasados ​​como parámetro. En su programa, aparentemente puede hacer todo correctamente: no se olvide de ByVal, pase los parámetros a la función correctamente. Pero Windows no puede comprobar qué tan grande es el tamaño de la memoria asignada para una fila. El tamaño de la fila debe ser lo suficientemente grande para acomodar todos los datos que se pueden colocar en ella. La responsabilidad de reservar un búfer del tamaño requerido recae en el programador de VB.

Cabe señalar que en Windows de 32 bits, cuando se utilizan cadenas, la conversión se realiza de Unicode (codificación de doble byte) a ANSI (codificación de un solo byte) y viceversa, teniendo en cuenta la configuración nacional del sistema. Por lo tanto, para reservar buffers, a veces es más conveniente usar matrices de bytes en lugar de variables de cadena. (Más sobre esto a continuación).

6. Asegúrese de utilizar la opción explícita.

7. Verifique cuidadosamente los valores de los parámetros y los valores de retorno. VB tiene buenas capacidades de verificación de tipos. Esto significa que cuando intenta pasar un parámetro no válido a una función de VB, lo peor que puede pasar es que reciba un mensaje de error de VB. Pero este mecanismo, lamentablemente, no funciona al acceder a las funciones API de Windows.

Windows 9x ha mejorado la verificación de parámetros para la mayoría de las funciones API. Por tanto, la presencia de un error en los datos no suele provocar un error fatal, pero determinar qué lo provocó no es tan fácil.

Aquí podemos recomendar el uso de varias formas de depurar este tipo de error:

  • Utilice el modo de depuración paso a paso o el comando Debug.Print para comprobar cada llamada a función API sospechosa. Verifique los resultados de estas llamadas para asegurarse de que todo sea normal y que la función se haya completado correctamente;
  • use un depurador de Windows como CodeView y una versión de depuración de Windows (disponible en el SDK de Windows). Estas herramientas pueden detectar un error de parámetro y al menos determinar qué función API está causando el error;
  • Utilice herramientas adicionales de terceros para comprobar los tipos de parámetros y la validez de sus valores. Estas herramientas no sólo pueden encontrar errores de parámetros, sino que incluso pueden señalar la línea de código VB donde ocurrió el error.

Además, es necesario verificar el resultado de ejecutar la función API.

8. Recuerde que los números enteros en VB y en Windows no son lo mismo. En primer lugar, debes tener en cuenta que el término "Entero" en VB significa un número de 16 bits, mientras que en la documentación de Win 32 significa un número de 32 bits. En segundo lugar, los números enteros (Entero y Largo) en VB son cantidades con signo (es decir, un dígito se usa como signo y el resto como mantisa del número), en Windows solo se usan números no negativos. Esta circunstancia debe tenerse en cuenta al formar un parámetro pasado mediante operaciones aritméticas (por ejemplo, calcular una dirección sumando alguna base y desplazamiento).

Las funciones aritméticas estándar de VB no son adecuadas para esto. Discutiremos qué hacer en este caso por separado. A diferencia de Win16, los nombres de todas las funciones de la API de Win32 son sensibles al uso exacto de letras minúsculas y mayúsculas (este no era el caso en Win16). Si en algún lugar utiliza una letra minúscula en lugar de una mayúscula o viceversa, no se encontrará la función deseada. También tenga cuidado de utilizar correctamente el sufijo A o W en funciones que utilizan parámetros de cadena. (Para obtener más información sobre esto, consulte a continuación).

10. Guarde su trabajo con frecuencia. Los errores asociados con el uso incorrecto de DLL y Win API pueden provocar una terminación de emergencia del entorno VB y posiblemente de todo el sistema operativo. Debe asegurarse de que el código que escriba se guarde antes de la ejecución de la prueba. Lo más sencillo es configurar el modo para la grabación automática de los módulos del proyecto antes de iniciar el proyecto en el entorno VB.

Después de leer los consejos anteriores, puede pensar que utilizar las funciones de Win API es arriesgado. Hasta cierto punto esto es cierto, pero sólo en comparación con la programación segura que ofrece el propio VB. Pero con un uso hábil y conocimiento de los posibles peligros, este riesgo es mínimo. Además, a menudo es simplemente imposible abandonar por completo el uso de Win API; seguirán siendo necesarios para cualquier desarrollo serio.

Además, anteriormente mencionamos los peligros de una amplia clase de archivos DLL. En el caso de la Win API todo es mucho más sencillo, ya que la forma de acceso a estas funciones está claramente unificada. Deben tenerse en cuenta los siguientes puntos principales:

  1. Las funciones de la API de Win32 son solo eso: funciones, es decir, procedimientos del tipo Función (había muchas Subrutinas en la API de Win16). Todas estas son funciones de tipo Long, por lo que sus descripciones están escritas de la siguiente forma: Declarar nombre de función... Como Long 'tipo de función _ se define explícitamente

    Declarar nombre de función y 'tipo de función _ se determina mediante el sufijo

    La llamada a la función API se ve así:

Resultado& = NombreApi& ([ Lista de argumentos]
  1. Muy a menudo, el valor de retorno de una función es el código de finalización de la operación.

    Además, un valor distinto de cero en este caso significa finalización normal, cero significa error. Generalmente (pero no siempre) puede aclarar la naturaleza del error llamando a la función GetLastError. La descripción de esta función se ve así: Declarar función GetLastError& Lib “kernel32” () Cuando se trabaja en VB, es mejor usar la propiedad LastDLLError del objeto Err para obtener el valor del código de error calificado, ya que VB a veces restablece la función GetLastError entre llamar a la API y continuar ejecutando el programa.

    Puede interpretar el código devuelto por GelLastError utilizando constantes escritas en el archivo API32.TXT, con nombres que comienzan con el sufijo ERROR_.

    Los errores más típicos tienen los siguientes códigos:

    • ERROR_INVALID_HANDLE = 6& - identificador no válido
    • ERROR_CALL_NOT_IMPLEMENTED = 120& - llamar a una función en Windows 9x que sólo está disponible para Windows NT
    • ERROR_INVALID_PARAMETER = 87& - valor de parámetro incorrecto

    Sin embargo, muchas funciones devuelven el valor de algún parámetro solicitado (por ejemplo, OpenFile devuelve el valor del identificador del archivo). En tales casos, el error está determinado por algún otro valor especial de Return&, normalmente 0 o –1.

  2. Las API de Win32 utilizan métodos estrictamente fijos para transferir los tipos de datos más simples.

    a) ByVal...Siempre y cuando Al menos el 80% del paso de argumentos se realiza mediante variables largas. Tenga en cuenta que el argumento

    Siempre

    va acompañado de la palabra clave ByVal, y esto, entre otras cosas, significa que se realiza una transferencia de datos unidireccional: desde el programa VB a la función API. Al menos el 80% del paso de argumentos se realiza mediante variables largas. B) ByVal...Como cadena

    Este tipo de transferencia de datos también ocurre con bastante frecuencia, y con el argumento también

    Se aplica ByVal. Cuando se llama a una función API, la dirección de la cadena se escribe en la pila, por lo que en este caso es posible el intercambio de datos bidireccional.

    El segundo problema es que cuando se llama a una función API, la cadena fuente se convierte en alguna representación interna y, al salir de la función, viceversa. Si en la época de Win16 esta operación consistía únicamente en agregar un byte cero al final de la línea, con la llegada de Win32 esto se agregó a la transformación de la codificación Unicode de doble byte a ANSI y viceversa. (Esto se discutió en detalle en el artículo "Características de trabajar con variables de cadena en VB", ComputerPress 10'99 y 01'2000). Por ahora, observemos que al usar la construcción ByVal... As String, puede intercambiar cadenas solo con datos de caracteres.

    B) ...Como Cualquiera

    Esto significa que alguna dirección del búfer de memoria se enviará a la pila, cuyo contenido será interpretado por la función API, por ejemplo, dependiendo del valor de otros argumentos. Sin embargo, As Any solo se puede usar en la declaración Declare: cuando se realiza una llamada específica a una función, se debe definir una variable específica como argumento.

    D) ... Como tipo definido por el usuario

    Este diseño también se suele utilizar cuando es necesario intercambiar datos (en general, en ambas direcciones) utilizando alguna estructura. De hecho, esta construcción es una especie de implementación concreta de la forma de transmisión As Any, solo que en este caso la función está configurada en una estructura fija.

    La forma de la estructura de datos está determinada por la función API específica, y es responsabilidad del programador describirla y reservarla correctamente en el programa que la llama. este diseño Al menos el 80% del paso de argumentos se realiza mediante variables largas. usado sin palabras ByVal, es decir, en este caso, se realiza la transferencia por referencia: la dirección de la variable se escribe en la pila.

Ejemplo de llamada a una función API

Ilustremos lo anterior usando el ejemplo del uso de dos funciones útiles para trabajar con archivos: lopen y lread, que se describen a continuación:

Declarar función lopen Lib “kernel32” _ Alias ​​​​“_lopen” (_ ByVal lpFileName As String, _ ByVal wReadWrite As Long) Como largo Declarar función lread Lib “kernel32” _ Alias ​​​​“_lread” (_ ByVal hFile As Long, lpBuffer Como Cualquiera, _ ByVal wBytes Mientras) Mientras tanto

En VB, sus análogos, en este caso exactos, son los operadores Abrir y Obtener (para modo binario). Prestemos atención de inmediato al uso de la palabra clave Alias ​​en una declaración de función; este es exactamente el caso en el que no puede prescindir de ella. Los nombres de funciones reales en la biblioteca comienzan con un guión bajo (estilo típico del lenguaje C), que no está permitido en VB.

La operación de apertura del archivo podría verse así:

Const INVALID_HANDLE_VALUE = -1 ' valor incorrecto del controlador lpFileName$ = “D:\calc.bas” ' nombre de archivo wReadWrite& = 2 ' modo lectura-escritura hFile& = lopen(lpFileName$, wReadWrite&) _ ' define el identificador del archivo Si hFile& = INVALID_HANDLE_VALUE Entonces _ ' error al abrir el archivo ' especifica el código de error CodeError& = Err.LastDllError 'CodeError& = GetLastError _ ' esta construcción no funciona End If

Aquí debes prestar atención a dos puntos:

  • como valor de la función obtenemos el valor del descriptor del archivo. El error corresponde a un valor de –1;
  • Es precisamente en este caso que llamar a la función GetLastError no funciona: para obtener un valor de error refinado, recurrimos al objeto Err (hablamos sobre la posibilidad de tal situación anteriormente).

Luego se puede leer el contenido del archivo, pero esto supone que el programador debe tener algún conocimiento de su estructura (como es el caso cuando se trabaja con archivos binarios arbitrarios). En este caso, llamar a la función lread podría verse así:

Dim MyVar As Single wBytes = lread (hFile&, MyVar, Len(MyVar) ' leyendo un número real, 4 bytes ' wBytes es el número de datos realmente leídos, ' -1 es un error... Escriba MyStruct x As Single i As Tipo de extremo entero Dim MyVar As MyStruct wBytes = lread (hFile&, MyVar, Len(MyVar)) ' leer estructura de datos, 6 bytes

Tenga en cuenta nuevamente: el segundo argumento de la función se pasa por referencia, el resto se pasa por valor.

Dim MyVar As String MyVar = Space$(10) 'reservar una variable para 10 caracteres wBytes = lread (hFile&, ByVal MyVar, Len(MyVar)) 'leer una cadena de caracteres, 10 caracteres

Aquí puede ver una diferencia importante con respecto al ejemplo anterior: la variable de cadena va necesariamente acompañada de la palabra clave ByVal.

La lectura del contenido de un archivo en una matriz (para simplificar, usaremos una matriz de bytes unidimensional) se realiza de la siguiente manera:

Dim MyArray(1 To 10) As Byte wBytes = lread (hFile&, MyArray(1), _ Len(MyArray(1))* 10) 'lee 10 elementos de la matriz

Al especificar el primer elemento de la matriz como argumento, estamos pasando la dirección del comienzo del área de memoria reservada para la matriz. Obviamente, puedes llenar cualquier fragmento de una matriz de esta manera:

WBytes = lread (hFile&, MyArray(4), _ Len(MyArray(1))* 5) 'leer los elementos de la matriz 4 a 8

Consejo 5: utilice alias para Gears y parámetros como cualquier

Aquí, basándonos en el ejemplo anterior, revelaremos la esencia del cuarto consejo de Dan Appleman.

Cuando trabaje con la función lread, debe recordar que al acceder a ella usando una variable de cadena, debe usar la palabra clave ByVal (de lo contrario, recibirá mensajes sobre una operación ilegal). Para protegerse, puede hacer una descripción especial adicional de la misma función para que funcione solo con variables de cadena:

Declarar función lreadString Lib “kernel32” _ Alias ​​​​“_lread” (_ ByVal hFile As Long, ByVal lpBuffer As String, _ ByVal wBytes As Long) As Long

Al trabajar con esta descripción, ya no es necesario especificar ByVal al contactar:

WBytes = lreadString(hFile&, MyVarString, _ Len(MyVarString)) '

Parecería que la sintaxis del operador Declare le permite hacer una descripción especial similar para una matriz:

Declarar función lreadString Lib “kernel32” Alias ​​​​“_lread” (_ ByVal hFile As Long, lpBuffer() As Byte, _ ByVal wBytes As Long) As Long

Sin embargo, el recurso

WBytes = lreadArray(hFile&, MyArray(), 10)

conduce inevitablemente a un error fatal del programa.

Esta es una continuación de la conversación sobre las peculiaridades del procesamiento de variables de cadena en Visual Basic: VB usa codificación Unicode de doble byte, Win API usa ANSI de un solo byte (y con el formato adoptado en C, con un byte cero al final) . En consecuencia, cuando se utilizan variables de cadena como argumento, la conversión de Unicode a ANSI siempre se realiza automáticamente al llamar a una función API (más precisamente, una función DLL) y la conversión inversa al regresar.

La conclusión de esto es simple: las variables de cadena se pueden usar para intercambiar datos de caracteres, pero no se pueden usar para intercambiar información binaria arbitraria (como era el caso con las versiones de VB de 16 bits). En el último caso, es mejor utilizar una matriz de bytes unidimensional.

Como sabes, el tipo String se puede utilizar para describir una estructura personalizada. En este sentido, es necesario recordar lo siguiente:

  • Está estrictamente prohibido utilizar la siguiente construcción para acceder a la API de Win: Escriba MyStruct x As Single s As String 'cadena de longitud variable Tipo final

    En el caso de una cadena de longitud variable, se pasa un descriptor de cadena como parte de la estructura con todas las consecuencias consiguientes en forma de error de ejecución del programa.

  • Puede utilizar una cadena de longitud fija como elemento de estructura: Escriba MyStruct x As Single s As String*8 ‘cadena de longitud fija Tipo final

En este caso, se realiza la conversión de codificación correspondiente.

Y una última nota: bajo ninguna circunstancia debe utilizar una matriz de variables de cadena (tanto de longitud fija como variable) al acceder a una función API.

De lo contrario, se garantizará el surgimiento de una “operación ilegal”.

Es probable que se encuentre en una situación en la que necesite escribir sus propias funciones DLL. La necesidad de esto surgirá inevitablemente si utiliza tecnología de programación mixta, utilizando dos o más lenguajes de programación para implementar una aplicación.

Tengamos en cuenta a este respecto que la programación mixta es bastante común para implementar una aplicación bastante compleja. De hecho, cada lenguaje (más precisamente, un sistema de programación basado en un lenguaje) tiene sus propias fortalezas y debilidades, por lo que es lógico aprovechar diferentes herramientas para resolver diferentes problemas. Por ejemplo, VB - para crear una interfaz de usuario, C - para un acceso eficiente a los recursos del sistema, Fortran - para implementar algoritmos numéricos.

La opinión del autor es la siguiente: cualquier programación seria requiere que el desarrollador domine al menos dos herramientas. Por supuesto, en las condiciones modernas de una clara división del trabajo es muy difícil ser un excelente experto incluso en dos sistemas, por lo que el esquema de "idiomas principales y auxiliares" es más lógico. La idea aquí es que incluso un conocimiento superficial del lenguaje "auxiliar" (escribir procedimientos bastante simples) puede mejorar en gran medida la eficiencia del uso del lenguaje "principal". Tenga en cuenta que el conocimiento de VB, al menos como auxiliar, es hoy en día casi un requisito obligatorio para un programador profesional. Por cierto, en la época de DOS, el conocimiento de los conceptos básicos de Assembler era extremadamente deseable para cualquier programador, incluido el Basic.

De una forma u otra, incluso en el trabajo en grupo, cuando cada programador realiza su tarea específica, todos los participantes del proyecto deben tener una idea de las características de la interfaz de procedimiento en diferentes idiomas. Y sepa que muchos sistemas de programación (incluido VB), además de la interfaz predeterminada, permiten utilizar otros métodos avanzados de acceso a procedimientos que permiten adaptar la interfaz a otro idioma.

  • Diferentes idiomas pueden utilizar diferentes convenciones para escribir identificadores. Por ejemplo, es común utilizar un guión bajo al principio del nombre de un procedimiento, lo cual no está permitido en VB. Este problema se resuelve fácilmente utilizando la palabra clave Alias ​​en la declaración Declare (consulte el consejo de ejemplo 2.3).
  • Se puede utilizar una secuencia diferente de escritura de argumentos pasados ​​en la pila. Por ejemplo, en la época de DOS (lo admito sinceramente, no sé cómo se ve ahora en el entorno Windows), C escribía argumentos desde el final de la lista, otros lenguajes (Fortran, Pascal, Basic) - desde el principio.
  • De forma predeterminada, se utilizan diferentes principios para pasar parámetros: por referencia o por valor.
  • Varios principios para almacenar variables de cadena. Por ejemplo, en C (así como en Fortran y Pascal) la longitud de una cadena está determinada por el byte nulo al final de la misma, pero en Basic la longitud está escrita explícitamente en el descriptor de cadena. Por supuesto, hay que tener en cuenta la posibilidad de utilizar diferentes codificaciones de caracteres.
  • Al transferir matrices multidimensionales, debe recordarse que son posibles varias opciones para convertir estructuras multidimensionales en unidimensionales (a partir del primer índice o del último, en relación con matrices bidimensionales: "por filas" o "por columnas" ).

Teniendo todo esto en cuenta, se pueden formular las siguientes recomendaciones:

  • Utilice los métodos más simples y probados para pasar argumentos a funciones DLL.
  • Los estándares adoptados para Win API son bastante adecuados como modelo.
  • Nunca pase matrices de variables de cadena.
  • Tenga mucho cuidado al pasar variables de cadena simples y matrices multidimensionales.

Pero, ¿qué pasa si la función DLL ya está escrita, por ejemplo, en Fortran, pero su interfaz de entrada no se ajusta muy bien a los estándares VB anteriores? Aquí hay dos consejos. Primero: escriba una función DLL de prueba y úsela para intentar encontrar la llamada deseada del programa VB mediante prueba y error. Segundo: escribir un procedimiento de adaptador en el mismo Fortran que proporcionaría una interfaz simple entre VB y una función DLL con la conversión de estructuras de datos simples en estructuras complejas (por ejemplo, convertir una matriz de bytes multidimensional en una matriz de cadenas).

Entonces: use funciones DLL. Pero mantente alerta...

ComputadoraPrensa 9"2000

También cabe señalar que el programador suele tener a su disposición varias API diferentes para lograr el mismo resultado. Además, cada API suele implementarse utilizando componentes de software API de un nivel inferior de abstracción.

Por ejemplo: para ver la línea "¡Hola mundo!" en el navegador. Sólo necesitas crear un documento HTML con un título mínimo y un cuerpo simple que contenga esta línea. ¿Qué sucede cuando el navegador abre este documento? El programa del navegador pasará el nombre del archivo (o un descriptor de archivo ya abierto) a la biblioteca que procesa documentos HTML, que, a su vez, utilizando la API del sistema operativo, leerá este archivo y comprenderá su estructura, invocando operaciones como "borrar el archivo". window”, “¡escribe Hola, mundo en la fuente seleccionada!”, durante estas operaciones la biblioteca de primitivas gráficas se comunicará con la biblioteca de interfaz de ventana con las solicitudes correspondientes, y esta biblioteca se comunicará con la API del sistema operativo con solicitudes como “ponlo en mi tarjeta de video almacena esto."

Además, en casi todos los niveles existen varias API alternativas posibles. Por ejemplo: podríamos escribir el documento fuente no en HTML, sino en LaTeX, y podríamos usar cualquier navegador para visualizarlo. Los diferentes navegadores generalmente usan diferentes bibliotecas HTML y, además, todo se puede (en términos generales) compilarse usando diferentes bibliotecas primitivas y en diferentes sistemas operativos.

Por lo tanto, los principales desafíos de los sistemas API multinivel existentes son:

  • Dificultad para transferir el código del programa de un sistema API a otro (por ejemplo, al cambiar el sistema operativo);
  • Pérdida de funcionalidad al pasar de un nivel inferior a uno superior. En términos generales, cada “capa” de API se crea para facilitar la ejecución de algún conjunto estándar de operaciones. Pero al mismo tiempo, se vuelve realmente difícil o fundamentalmente imposible realizar algunas otras operaciones proporcionadas por un nivel inferior de API.

Tipos de API básicos

  • El acceso a la API está limitado solo a desarrolladores internos
  • Las aplicaciones están dirigidas a empleados de empresas.

Impulsores comerciales:

  • Consistencia del desarrollo
  • Reducción de costos
  • Mayor eficiencia en el desarrollo

API de socios

  • Las API solo están disponibles para un conjunto limitado de socios comerciales
  • Las aplicaciones están destinadas a consumidores finales y usuarios empresariales.

Impulsores comerciales:

  • Automatización del proceso de desarrollo.
  • Desarrollo de asociaciones
  • Optimizar el proceso de interacción con los socios.

API públicas

El acceso se concede a cualquier desarrollador externo. Las aplicaciones están dirigidas a usuarios finales.

Impulsores comerciales:

  • Desarrollo de nuevos servicios.
  • Desarrollo de ecosistemas
  • Interacción omnicanal

API más famosas

API de sistemas operativos

API GUI

  • Direct3D (parte de DirectX)
  • DirectDraw (parte de DirectX)

API de audio

  • DirectSound (parte de DirectX)
  • DirectMusic (parte de DirectX)

API de sistemas de autenticación

Principio y uso de la economía API.

  • El trabajo de API debe tener un valor mensurable. No desperdicies recursos creando una API que ningún desarrollador utilizará.
  • Cree una API solo si tendrá un usuario específico. Debe haber un socio o ecosistema que lo necesite.
  • La empresa promedio siempre utiliza más API de las que crea. Sus departamentos se ocuparán de muchas API y el CIO tendrá la tarea de gestionarlas.
  • Las API son fundamentales para el Internet de las cosas, las capacidades de los consumidores, los análisis y los sistemas de información. Si te olvidas de estas cosas al crear una API, piénsalo detenidamente.

Las API permiten a las organizaciones crear experiencias de usuario personalizadas

Las expectativas y el comportamiento de los clientes están cambiando

Compradores:

  • Requieren un enfoque individualizado, según sus propios términos.
  • Espere un servicio integrado integral
  • Cambiarán a cualquiera que satisfaga mejor sus necesidades.

Organizaciones:

  • Interactuar con los clientes a través de sitios web interactivos, aplicaciones móviles creadas para tal fin y otras interfaces digitales amigables
  • Espere un servicio integral integral
  • Pasarán a cualquiera que satisfaga mejor sus requisitos.

¡Las API están en todas partes!

Cronología de eventos

2019

Investigación de TAdviser en colaboración con PJSC VTB Bank con la participación de Skolkovo: comienza la transformación API en el sector bancario ruso

El Banco Central invitó a unos 20 bancos a participar en un piloto en el ámbito de las API abiertas

El 21 de agosto de 2019 se supo que el Banco de Rusia actuó como coordinador de un proyecto piloto en el campo de las API (interfaces de programas de aplicación) abiertas para la integración de los servicios bancarios dentro de la Unión Económica Euroasiática (UEE). En el momento de la publicación del material, el Banco Central, junto con los bancos centrales de los países de la UEEA, está trabajando en la preparación del piloto para su implementación. Los banqueros que recibieron la oferta del Banco Central se lo contaron a Kommersant. En total, unas 20 entidades de crédito recibieron la carta del regulador, que deberá responder sobre su disposición a participar antes del 23 de agosto. Leer más.

La industria de valores está lista para las API

El 2 de agosto de 2019 se supo que un estudio conjunto de SWIFT y BCG reveló un aumento en el uso de API en un contexto de deseo de las empresas de mejorar la eficiencia y ofrecer servicios.

La industria de valores se acerca a un punto de inflexión en la adopción de interfaces de programación de aplicaciones (API) a medida que las empresas se esfuerzan por lograr una mayor eficiencia y modelos de negocio modernos.

Según una encuesta de BCG, el conocimiento de las API entre los administradores de activos aumentó un 26 % (del 46 % al 72 %) solo durante 2018. El creciente interés comercial está impulsando esquemas piloto y casos de uso, particularmente entre las empresas de gestión de activos y sus custodios.

Las API tienen el potencial de ayudar a la industria de valores a hacer frente a múltiples y diversos tipos de activos, complejos intercambios de información y crecientes presiones sobre las tarifas. El informe identifica cuatro áreas donde las API pueden beneficiar a toda la industria:

  • Eficiencia y ahorro de costes mediante el intercambio de datos automatizado
  • Acceso a información en tiempo real como estado de liquidación y riesgo intradía
  • Servicios adicionales: datos y análisis enriquecidos
  • Métricas operativas que permiten a los proveedores de servicios comparar el desempeño entre los actores del mercado.

La adopción de API ha sido más lenta en la industria de valores que en otras industrias de servicios financieros debido en parte a la falta de un marco regulatorio y a la falta de coherencia en la voluntad de los actores del mercado de adoptar API. Las empresas de gestión de activos varían significativamente en su sofisticación técnica y apertura para interactuar con proveedores a través de API. Alrededor del 56% de los encuestados de BCG consideran que el nivel de adopción de API en el post-negociación es "experimental", mientras que solo el 21% dice que es "alto" o "medio".

Las API pueden ser un poderoso impulsor de la innovación en el post-negociación, como lo han sido en la industria de pagos y otras áreas de la banca. El interés por esta tecnología va en aumento y los primeros resultados experimentales parecen prometedores. Pero para realmente impulsar y acelerar la adopción generalizada de las API, debemos eliminar la incertidumbre en torno a los estándares y mejorar la comprensión de la madurez de la tecnología.

señaló Juliet Kennel, jefa del departamento de mercados de valores y divisas de SWIFT


El informe proporciona cuatro razones por las que la industria debería implementar API:

  • Interacción dentro de una infraestructura común. Los elementos fundamentales de las soluciones API, como la identidad, la autenticación, la seguridad y la gestión de la red, deben acordarse a nivel industrial, no entre empresas individuales.
  • Coordinar los estándares API para mantener la interoperabilidad. La proliferación de múltiples estándares puede reducir la eficacia del uso de API. La industria necesita un estándar API único que funcione en todos los proveedores.
  • Soporte para API de red, no para soluciones p2p. Las empresas pueden beneficiarse de las API de red: por ejemplo, una única llamada para comprobar el estado de la liquidación de un corredor de bolsa puede enviarse a varios custodios simultáneamente. La solución de red admitirá la convergencia tanto para la explicación de datos como para otras características de la API.
  • Cumple estrictos estándares de seguridad y sostenibilidad. Para un desarrollo exitoso, cualquier solución API debe tener un alto nivel de sostenibilidad y protección de datos.
API se ha convertido en una de las tecnologías clave en la transformación digital de todo el sector bancario. Las API ahora están incursionando en la industria de valores y convirtiéndose en una tecnología líder entre las empresas que buscan pasar a los servicios digitales. A pesar de las dificultades existentes para la adopción de API en términos de interoperabilidad y seguridad, creemos que se superarán y esperamos una mayor implementación de la tecnología en un futuro próximo.

dijo Sumitra Karthikeyan, jefa de servicios de valores de BCG


La introducción de una API en el mercado de valores basada en SWIFT puede garantizar el logro de objetivos clave como reducir costes y crear oportunidades comerciales adicionales para los participantes del mercado y, especialmente, para las sociedades gestoras y los inversores finales. Por lo tanto, NSD está estudiando el uso de API abiertas y coopera activamente con SWIFT en materia de estandarización de la tecnología API y el uso práctico de esta tecnología en el post-negociación global. La plataforma de banca abierta Tink afirma que Ver también



Arriba