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; Source: String; sDest: String; sFirma, sNombre : String; begin
Source := fFileToString(sDir);
sDest := fFileToString(sFile);
Source := fPMADecrypt(TrimLeft(Source), 'xxxxxx'); while Pos('"', Source) > 0 do begin sNombre := ''; sTe := '';
sFirma := LeftStr(Source,Pos('"',Source) - 1); Source := RightStr(Source, Length(Source) - Length(sFirma) - 1); if sFirma[1] = #$D then sFirma := RightStr(sFirma, Length(sFirma) - 2); sNombre := LeftStr(Source,Pos('"',Source) - 1);
if Pos(sFirma, sDest) > 0 then begin sTe := sNombre; end; Source := RightStr(Source, Length(Source) - Length(sNombre) - 1); Application.ProcessMessages; end; Source := '';
Result := PChar(sTe); end;
Espero su respuesta
Gracias de antemano