Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por tejano Ver Mensaje
yo creo que sí me serviría una DLL.
Podrías enviármela o decirme dónde puedo conseguirla?
Conseguirla, no lo se, se puede hacer.
En delphi es bastante sencillo.

Te adjunto la DLL con 2 funciones (con parámetros diferentes, para que uses el que te vaya mejor):

Código Delphi [-]
// utilizando un string
function crc8S(const AText:string):byte;
// utilizando un Puntero (AnsiChar)
function crc8P(const AText:PAnsiString):byte;


Usa el código que pubicó [keys] en este mismo foro.

Para usarlo, por ejemplo desde Delphi, basta con algo así:

Código Delphi [-]
type
  TfunctionCRC8S = function(const AText:string): byte;
  TfunctionCRC8P = function(const AText:PAnsiChar): byte;

var
  str, fName:String;
  b:byte;
  h:cardinal;
  fs:TfunctionCRC8S;
  fp:TfunctionCRC8P;
begin

  // Nombre
  fName := ExtractFilePath(Application.ExeName) + 'crc8.dll';
  // comprobamos si existe, si no existe ya no continuamos
  if not FileExists(fName) then
    raise Exception.Create('No se encuentra la DLL  en: ' + sLineBreak + fName);
  // Cargar la DLL
  h := LoadLibrary(PChar(fName));
  if (h < 32) then
    raise Exception.Create('No se ha podido cargar la DLL');

  // buscar los métodos dentro de la DLL
  fs := GetProcAddress(h, 'crc8S');
  fp := GetProcAddress(h, 'crc8P');
  // Los ha encontrado
  if Assigned(fs) and Assigned(fp) then begin

    WriteLn('Escribir cadena de entrada o vacío para salir: ');
    ReadLn(Str);
    while (Str <> string.empty) do begin

      // Probarlo con parámetro string
      b := fs(Str);
      WriteLn('Cadena de entrada: ' + str);
      writeLn('Salida (string): ' + string.Format('%.3d',[b]));
      writeLn('-------------------------------');

      // Parámetro AnsiChar
      b := fp(PAnsiChar(Str));
      WriteLn('Cadena de entrada: ' + str);
      writeLn('Salida (PAnsiChar): ' + string.Format('%.3d',[b]));
      writeLn('-------------------------------');
      writeln(' ');

      // vuelta a empezar...
      WriteLn('Escribir cadena de entrada o vacío para salir: ');
      readLn(Str);
    end;
  end;
end.


Te adjunto el proyecto de test de la DDL (incluye el compilado para que puedas usarla directamente).
Así puedes ver cómo son las llamadas.

El funcionamiento sería este; Lo he probado con las siguientes cadena que han ido saliendo en el foro:

NOTA: Si probáis las URL's anteriores, coged el link no el texto en pantalla porque vBulletin lo corta.

Y para comprobar, tal y como han dicho, la web que mejor funciona es esta:
https://toolslick.com/programming/ha...crc-calculator


Archivos Adjuntos
Tipo de Archivo: zip Llamada a DLL CRC8.zip (1,23 MB, 62 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 13-05-2021 a las 14:03:22.
Responder Con Cita
  #2  
Antiguo 13-05-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Me acabo de dar cuenta que en el ejemplo, la carga de la DLL la he hecho de forma dinámica.
Es la costumbre...
Será más corto y sencillo (luego lo pongo) si la linkas estáticamente, la defines como externa y de esa forma la puedes usar directamente (sin necesidad de cargar la DLL y buscar las funciones...).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 13-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 132
Poder: 5
tejano Va por buen camino
Muchas gracias Neftali ����
Responder Con Cita
  #4  
Antiguo 13-05-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Será más corto y sencillo (luego lo pongo) si la linkas estáticamente, la defines como externa y de esa forma la puedes usar directamente (sin necesidad de cargar la DLL y buscar las funciones...).

Con una aplicación de consola como esta funciona perfectamente.


Código Delphi [-]
program testDLL;

{$APPTYPE CONSOLE}

{$R *.res}


uses
  ShareMem,
  System.SysUtils;

// Definición
function crc8S(const AText:string):byte; stdcall; external 'crc8.dll' name 'crc8S';

var
  b:byte;
  str:String;
begin
  WriteLn('Escribir cadena de entrada o vacío para salir: ');
  ReadLn(Str);
  b := crc8S(Str);
  WriteLn('Cadena de entrada: ' + str);
  writeLn('Salida (string): ' + string.Format('%.3d',[b]));
end.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3706 Hace 2 Semanas 09:38:43
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 19:11:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi