FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con Bookmark
Hola,
tengo un problema con los bookmarks, que paso a explicar: Uso delphi 6 con MySql El código es algo así:
Generalmente funciona bien, pero de repente me da error "Invalid pointer" ¿Alguien sabe que puede pasar?? Gracias. Última edición por dec fecha: 19-10-2006 a las 10:17:39. |
#2
|
||||
|
||||
¿Y el error dónde te salta? ¿Antes del bucle, durante el bucle o después del bucle?
|
#3
|
|||
|
|||
El error salta despues de comprobar que es una marca valida independientemente de lo que haga despues, es decir compruebo que es válida da true y luego en la siguiente sentencia da el error.
|
#4
|
||||
|
||||
Yo utilizo bookmarks pero no las utilizo como tú, y no me han fallado. Prefiero hacerlo al revés: liberar el elemento justo después de su último uso, en lugar de hacerlo como primera acción y dentro de un if.
Así me aseguro que después de su uso se borra y no tengo memoria ocupada.
|
#5
|
|||
|
|||
Gracias,
he hecho lo que comentas que igual es más lógico, pero de vez en cuando y solo de vez en cuando me sigue dando el mismos error de puntero inválido, ya que no es solo cuando libero la marca sino también me lo da cuando hago un GotoBookMark. He mirado el código una y otra vez y no veo que puede pasar, pero seguiré insistiendo.... |
#6
|
||||
|
||||
En principio yo lo veo de otra forma:
Es decir, lo normal es obtener la marca, mover el dataset y por último, preguntar si el BookMark es válido: - si lo es, voy a ese Bookmark y despues lo libero - si no lo es, es que ha habido algún problema, no sé si es conveniente llamar a FreeBookmark, puesto que en este caso, no es un puntero de marca Válido. Por otra parte habría que mirar la implementación o ayuda sobre este tema en MySql. Ten en cuenta que si cierras la consulta y despues la vuelves a abrir, los punteros no serán válidos, quizás sea convienente guardar la clave primaria de ese registro y usar un Locate, en lugar de usar un Bookmark. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
||||
|
||||
Pregunta: ¿Para qué necesitas la marca? ¿Para no perder la posición mientras recorres la consulta?
Porque si es eso puedes ver si te sirve DisableControls/EnableControls. |
#8
|
||||
|
||||
Respuesta(): EnableControls es para que en un bucle no se tenga que refrescar los controles data aware asociados al dataset, por tanto, al deshabilitar ese refresco de datos, el bucle se procesa más rápido y el usuario no vé en la pantalla cómo pasan los registros a modo de ráfaga por los controles.
EnableControls hace lo mismo que BeginUpdate y EndUpdate de un TreeView, ListView, StringList, y otros controles no data aware. Puede que MySql tambien implemente los métodos BookmarkStr que es un simple String que no se tiene que liberar y es algo más cómodo su uso. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con Bookmark | marceloalegre | Varios | 4 | 02-10-2006 15:24:36 |
poner bookmark | jsanchez | OOP | 2 | 22-06-2006 16:43:54 |
Bookmark | kuan-yiu | Conexión con bases de datos | 6 | 13-06-2006 11:11:28 |
Duda sobre Bookmark. | Jose_Pérez | Conexión con bases de datos | 0 | 04-03-2005 10:29:41 |
Utilizacion de Bookmark en Interbase | Markoz | Firebird e Interbase | 4 | 29-05-2004 22:08:02 |
|