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 05-04-2011
orlando9427 orlando9427 is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 8
Poder: 0
orlando9427 Va por buen camino
Error en Función de DLL

Hola comunidad, tengo un problema =/
He estado creando DLLs para un proyecto personal, todo bien hasta ahí todas funcionales menos una que me debe de devolver un nombre, la DLL no me la devolvia por lo que decidi revisar la funcion mas de cerca y la agregue a un proyecto nuevo solo para revisarla, paso por paso todo perfecto, pero en la linea "Result := PChar(sTe);" me tira un error EAccessViolation y siempre es en esa linea, intente limpiar las variables incluso un Sleep pero nada. Casualmente sucede cuando cargo archivos relativamente grandes pues mi archivo de prueba es de 1KB y cuando lo quise probar con uno de 120KB sucede lo antes descrito, les dejo la función por si pase algo por alto.

Código Delphi [-]
function Scan32(sFile, sDir: PChar): PChar;
var sTe: String; //Alamacen de Nombre de Firma
    Source: String; //Base de Datos Des/En - Cryptada
    sDest: String; //Archivo a Escanear
    sFirma, sNombre : String; //Variables comparadoras sFirma(Codigo malicioso) sNombre(Nombre del codigo)
begin
     Source := fFileToString(sDir);
     sDest := fFileToString(sFile); 

     Source := fPMADecrypt(TrimLeft(Source), 'xxxxxx'); //Desencriptamos la DB
     while Pos('"', Source) > 0 do begin //Repetimos mientras haya firmas que comparar
           sNombre := ''; sTe := '';
           sFirma := LeftStr(Source,Pos('"',Source) - 1); //Obtenemos el codigo firmado
           Source := RightStr(Source, Length(Source) - Length(sFirma) - 1); //Lo quitamos de la DB
           if sFirma[1] = #$D then sFirma := RightStr(sFirma, Length(sFirma) - 2); //Si Existe CRLF lo quitamos
              sNombre := LeftStr(Source,Pos('"',Source) - 1); //Obtenemos el nombre de la firma

           if Pos(sFirma, sDest) > 0 then begin //Si el codigo esta dentro del archivo
              sTe := sNombre; //Almacenamos el nombre de la firma hasta que otra la sustituya
           end; //Ya sea por una nueva firma o tenga dos firmas el archivo
           Source := RightStr(Source, Length(Source) - Length(sNombre) - 1); Application.ProcessMessages; //Quitamos el Nombre de la DB
     end; //Cerramos el While
     Source := '';
     Result := PChar(sTe); //Regresamos el nombre de la Firma
end; //Terminamos la función

Espero su respuesta
Gracias de antemano
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
Error de Intercalación en Función SQL LCIdesarrollo MS SQL Server 4 11-08-2017 22:01:27
error en funcion diego007 Varios 4 03-03-2010 01:25:29
Error al accesar una funcion en una DLL FGarcia Varios 11 23-06-2008 22:24:59
Error con funcion astut Varios 4 17-09-2006 14:47:04
Error funcion mail() Andrea Martinez PHP 6 02-12-2004 16:00:34


La franja horaria es GMT +2. Ahora son las 20:01:44.


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