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 24-08-2005
nax nax is offline
Miembro
 
Registrado: mar 2004
Posts: 52
Poder: 21
nax Va por buen camino
Problemas con String y BORLNDMM

Qué tal, un saludo. Resulta que al leer n caracteres de un archivo de texto, y manipular estos n caracteres en un String, se dispara el error BORLNDMM.DLL, ¿alguien podría informarme por qué se genera un error cuando en mi código no existe? ¿cómo lo soluciono? De antemano gracias.
Responder Con Cita
  #2  
Antiguo 25-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

nax, ¿el error es el nombre de una DLL y ya está? ¿No te dice si lo que ocurre es que falta esa DLL? ¿Otra cosa quizás? Hasta aclarar esto, una búsqueda en Google con las palabras-clave "BORLNDMM.DLL error" ofrece algunos resultados que tal vez puedan indicarte una posible solución.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 25-08-2005
nax nax is offline
Miembro
 
Registrado: mar 2004
Posts: 52
Poder: 21
nax Va por buen camino
Hola Dec, qué tal. El error que dispara es sobre un acceso no válido a una posición de memoria en el módulo BORLNDMM.DLL (Access violation at address 01193E6F in module 'BORLANDMM.DLL). Mi programa lo corro paso a paso, y de verdad que los datos que procesa existen (un String al cual le extrae caracteres hasta que encuentra un espacio en blanco, y como es una oración hay más de un espacio en blanco existente). Busqué en internet y lo que dicen es que ese error se dispara cuando se pasan argumentos String a funciones, que lo mejor es utilizar Char o ShortString. Sin embargo, en mi caso utilizaba funciones y finalmente opté por no utilizarlas, pero el error se me sigue disparando. Gracias!!!
Responder Con Cita
  #4  
Antiguo 26-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Sólo por ayudar un poco con lo que puede estar pasando, comentar que, según la ayuda de Delphi, el archivo BORLANDMM.DLL es un administrador de memoria que permite a los módulos (.dll) compartir memoria reservada dinámicamente. La ayuda dice que si una .dll exporta funciones que devuelven o reciben como parámetro una cadena "larga" (es decir, el tipo "string" de Delphi) o arrays dinámicos es necesario añadir a la cláusula "uses" de la .dll o de las aplicaciones cliente el unit "ShareMem" (al añadir esta unit se usará el administrador de memoria encontrado en BORLANDMM.DLL). (Esto también se cumple cuando se usan las funciones para reservar y liberar memoria: "GetMem", "FreeMem", etc.)

Así que fíjate si "ShareMem" se encuentra en la cláusula "uses" de tu aplicación o en tus .dll (esto último sólo en caso de que tus funciones las haya codificado en una .dll, donde tratas las cadenas). Si no es así, prueba a añadir el unit y, en caso contrario, prueba a quitarlo (al quitar el unit de la cláusula "uses", la aplicación, no debería usar BORLANDMM.DLL). (Está claro que si te da error en el archivo es porque algún módulo de tu aplicación tiene una referencia a "ShareMem", así que la prueba consistiría en eliminar dicha referencia o en añadirla en los units donde haciera falta, que sería en donde tratas las cadenas).

(Una última cosa que también puede estar pasando es que el archivo BORLANDMM.DLL esté corrupto, así que podrías probar a copiarlo de nuevo).

Última edición por jmariano fecha: 26-08-2005 a las 00:24:45.
Responder Con Cita
  #5  
Antiguo 26-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues yo creo que es a causa de un fallo de programación. Si puedes postear la función, le echamos una visual. Creo que es mejor dar por bueno un código antes que empezar a mirar posibles bugs de delphi / windows / etc.

Delphi en sus rutinas más intrinsecas usa GetMem y FreeMem para reservar espacio para las cadenas, es lógico, sin memoria no puede almacenarse una cadena.

PD: Por favor, encierra el código entre

[ delphi ]
aqui vuestro codigo
[ /delphi ]

(sin espacios entre corchetes) Así consigues que respete el identado y aparezca las palabras reservadas en negrita y colores.

Código Delphi [-]
procedure Saludos();
begin 
   ShowMessage(' Un saludo y hasta luego');
end;
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


La franja horaria es GMT +2. Ahora son las 11:14:53.


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