Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2017
freynoso freynoso is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
freynoso Va por buen camino
Red face Llamar función desde una DLL en Delphi

Hola a todos, un saludo afectuoso.

Tengo una situación que me tiene bastante confundido. Al llamar una función de una DLL desde Delphi la misma me retorna resultados diferentes dependiendo de como paso los parámetros. Les comento, si paso los parámetros escritos (ej. una fecha haciendo el cast a tipo PAnsiChar('20072017'), como lo pide la librería) funciona perfectamente. Sin embargo si utilizo variables del mismo tipo de datos no me funciona.

Este es el procedimiento que ejecuto:
Código Delphi [-]
function TfrmMain.LibroDiario(Desde, Hasta: TDateTime; nArchivoSalida, fExtension: string): Boolean;
var Lib : THandle;
    LeerLibroDiario: function(ZNro_Fecha:PAnsiChar;NombreArchivoSalida:PAnsiChar;Extension:PAnsiChar):Boolean; stdcall;
    verificarConexion: function(puertoConexion:string):Boolean; stdcall;
    Leido:Boolean;
    Fecha: TDatetime;
    sFecha, sArchivo: string;
begin
  Result:=False;
  begin
    Lib:=LoadLibrary('TaurusInterface.dll');
    verificarConexion := GetProcAddress(Lib,'verificarConexion');
    if Assigned(verificarConexion) then
    begin
      if verificarConexion('3') then
      begin
        LeerLibroDiario := GetProcAddress(Lib, 'LeerLibroDiario');
        if Assigned(LeerLibroDiario) then
        begin
          try
            try
              Fecha := Desde;
              while Fecha <= Hasta do
              begin
                sFecha := FormatDateTime('ddmmyyyy', Fecha);
                sArchivo := Concat('c:\lventas\LV', FormatDateTime('yymmdd', Fecha),'.001');
                showmessage(Concat(sFecha, ' - ', sArchivo));
                Leido:=LeerLibroDiario(PAnsiChar(sFecha), PAnsiChar(sArchivo), PAnsiChar('001')); <- Con estos parámetros NO Funciona
                //PAnsiChar('20072017'), PAnsiChar('c:\lventas\LV170720.001'), PAnsiChar('001')); <- Con estos parámetros funciona
                Fecha:=IncDay(Fecha,1);
                Application.ProcessMessages;
              end;
            except on E: Exception do
              raise Exception.Create('Error al extraer Libro de Venta Diario: ' + E.Message) ;
            end;
          finally
            FreeLibrary(Lib);
            Result := Leido;
          end;
        end;
      end;
    end;
  end;
end;
Espero que puedan ayudarme.

Muy agradecido de antemano.

Fabio

Última edición por ecfisa fecha: 30-10-2017 a las 19:23:01. Razón: Agregar etiquetas [delphi], ajustar código a ventana
Responder Con Cita
  #2  
Antiguo 31-10-2017
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
¿Has probado a definir "sFecha" y "sArchivo" como AnsiString?

Piensa que en las versiones Delphi a partir de Delphi 2009 llevan soporte completo Unicode, y lo que antes eran String normales ahora equivalen a WideString. Los Strings "a la antigua" son ahora AnsiSTring, y a lo mejor el Casting de String a PAnsiChar da un resultado distinto al esperado

Prueba y nos comentas como ha ido

Saludos
Responder Con Cita
  #3  
Antiguo 31-10-2017
freynoso freynoso is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
freynoso Va por buen camino
Thumbs up Llamar función desde una DLL en Delphi

ElKurgan, hermano, me funcionó a la perfección!!! Estoy muuuuuy agradecido de tu ayuda. Sabía que aquí encontraría la respuesta.
Responder Con Cita
Respuesta



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
Como llamar a una función de BD desde delphi strelok Conexión con bases de datos 3 06-10-2017 11:46:51
llamar una función desde un formulario cjamacaru PHP 1 03-12-2009 12:52:53
Llamar a una función de una DLL desde PHP MON___ Varios 4 05-10-2007 23:06:48
Llamar una funcion javascript desde vbscript bellota HTML, Javascript y otros 0 24-07-2007 01:33:58
llamar funcion asp desde form Ricardo Alfredo HTML, Javascript y otros 4 11-10-2006 17:39:43


La franja horaria es GMT +2. Ahora son las 02:24:58.


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