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 21-05-2015
masrmty masrmty is offline
Registrado
 
Registrado: ago 2010
Posts: 8
Poder: 0
masrmty Va por buen camino
Question Error de 'El programa xxxx.exe dejo de funcionar' por array of ansichar

Hola buen dia.
Tengo problema con una funcion que utiliza la siguiente instruccion:
Código Delphi [-]
var inbuf: array [0..500000000] of ansichar;
Esta instruccion funciona bien cuando el valor maximo es de 1000000.
El codigo completo donde la utilizo es este:
Código Delphi [-]
function CalculaSelloConBig(cadenaoriginal: string; Hash:THash; key: pEVP_PKEY): string;
var inbuf: array [0..500000000] of ansichar;
  outbuf: array [0..1024] of ansichar;
  mdctx: EVP_MD_CTX;
  Len: cardinal; 
begin
  StrPCopy(inbuf,UTF8Encode(cadenaoriginal));
  if Hash = MD5 then EVP_SignInit(@mdctx,EVP_md5());
  if Hash = SHA1 then EVP_SignInit(@mdctx,EVP_sha1());
  EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
  EVP_SignFinal(@mdctx,@outbuf,Len,key);
  result := BinToBase64(@outbuf,Len);
end;
El problema que se presenta es al momento de ejecucion se aborta el programa solo diciendo que: El programa xxxx.exe dejo de funcionar.
Cualquier ayuda se los agradesco.

Última edición por nlsgarcia fecha: 21-05-2015 a las 19:00:45. Razón: Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 21-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
500000000


¿Y cuánta memoria tiene tu equipo?
Responder Con Cita
  #3  
Antiguo 21-05-2015
masrmty masrmty is offline
Registrado
 
Registrado: ago 2010
Posts: 8
Poder: 0
masrmty Va por buen camino
Hola gracias por responder.

La maquina tiene 4GB, utilizo Delphi XE4.
Pero la instruccion falla si le pongo 2,000,000 tambien.
Responder Con Cita
  #4  
Antiguo 21-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y para qué necesitas 500 millones de posiciones en un array?
Responder Con Cita
  #5  
Antiguo 21-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
masrmty,

Cita:
...Tengo problema con una función que utiliza la siguiente instruccion...var inbuf: array [0..500000000] of ansichar...al momento de ejecución se aborta el programa solo diciendo que: El programa xxxx.exe dejo de funcionar...La máquina tiene 4GB, utilizo Delphi XE4...
¡Bienvenido al Club Delphi!

Pregunto:

1- ¿Que versión de Windows y de cuantos bits (32/64) utiliza la aplicación?.

2- ¿Haz considerado usar arreglos dinámicos para optimizar los recursos de la aplicación?.

Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 21-05-2015
masrmty masrmty is offline
Registrado
 
Registrado: ago 2010
Posts: 8
Poder: 0
masrmty Va por buen camino
Hola Casimiro,

Mira esta funcion la he utilizado para el tema de la facturacion electronica (Mexico) para generar el sello de la cadena, normalmente el valor que se requeria para esto es de 20,000 a 50,000.

Ahora ocupo esa misma funcion para el tema de la contabilidad electronica, solo que aqui los archivos a sellar son mucho mas grandes que una factura.

Esa funcion la compre hace como 4 años con alguien que vendia la solucion para la factura electronica, pero ya no tiene soporte.


Hola NlsGarcia,
La maquina en donde estoy haciendo eso es Windows Server Standar 2008 de 32 bytes.
He intentado hacer el array de manera dinamica pero marca error al compilar.

Saludos.
Responder Con Cita
  #7  
Antiguo 21-05-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola masrmty.

Lo primero que noto es que el arreglo está declarado dentro de la función por lo que será almacenado en el stack, y dado su tamaño, no me extraña que haya desborde...

Intenta declarándolo como variable global oculta, dentro de la sección implemetation de la unidad donde resida la función:

Código Delphi [-]
...
implementation

var
  inbuf : array [0..500000000] of AnsiChar;

function CalculaSelloConBig(cadenaoriginal: string; Hash:THash; key: pEVP_PKEY): AnsiChar;
var
  outbuf: array [0..1024] of ansichar;
  ...
begin
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 21-05-2015
masrmty masrmty is offline
Registrado
 
Registrado: ago 2010
Posts: 8
Poder: 0
masrmty Va por buen camino
Hola Ecfisa,

Con tu comentario ya funciono y le puse hasta 1,000,000,000 y funciona perfectamente.
Muchas gracias.

Tambien gracias a todos los que respondieron.

Saludos.
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
Mi aplicación muestra el "mensaje dejó funcionar" y se cierra Playwithfire OOP 12 31-07-2012 17:32:05
error "explorador de windows dejo de funcionar" RONPABLO Windows 0 11-12-2007 01:03:50
BDE dejo de funcionar JULIPO Conexión con bases de datos 2 24-08-2007 22:45:10
Dejó de funcionar firebird (urgente) jzginez Firebird e Interbase 3 24-05-2007 16:38:12
codigo que dejo de funcionar con php 5.1 ctronx PHP 4 21-12-2005 18:10:44


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


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