![]() |
Error al intentar escribir en un archivos con BlockWrite o FileWrite
Amigos del club delphi, necesito de vuestra ayuda.
Estoy desarrollando una aplicación donde necesito escribir el contenido de una parte de un buffer a un archivo. He intentado realizar esto de dos formas: Primera Forma: -------------- type arreglobyte = array of byteprocedure xxx(param : pointer); var buffer : ^arreglobyte;begin buffer := @param;end; Segunda Forma: -------------- type arreglobyte = array of byteprocedure xxx(param : pointer); var buffer : ^arreglobyte;begin buffer := @param; //param es de tipo pointer (parametro de entrada)end; Comentarios: //tamaño representa cantidad de bytes a escribir del buffer al archivo //j: posición (en el buffer) desde donde se encuentran los bytes que escribiré al archivo La mayorìa de las veces este código trabaja de la manera deseada, es decir se toma "n" bytes del buffer ("n" es igual a la variable "tamaño") y escribe exitosamente estos bytes en el archivo. El problema es que algunas veces para ambos casos cuando se ejecuta la instrucción BlockWrite (en el primer caso), o FileWrite (en el segundo caso), se produce el siguiente error: Error 1784: El buffer del usuario no es válido para esta operación. NOTA: Cabe resaltar que el buffer esta bien y conserva correctamente la información que contiene. Espero que alguien me pueda ayudar a solucionar este problema, o quizas pueda indicar alguna otra manera para escribir un archivo desde un buffer. Les agradezco de antemano. Saludos |
Hola Ictiandro, antes de nada decirte que si usas las etiquetas [delphi][/delphi] tu código se mostrara mucho mejor, y sera mas fácil leerlo.
Con respecto a tu pregunta, no entiendo porque utilizas un array of bytes, creo que es un paso innecesario. De todas formas aqui te dejo como lo haría yo, espero que puedas sacar alguna idea interesante.
|
Gracias Seoane. Para la siguiente prometo usar las etiquetas [ delphi][ /delphi].
Tengo otra duda. En el ejemplo que dí tengo el tipo arreglobyte = array of byte, y la variable buffer : ^arreglobyte; Que puedo hacer para saber la dirección de memoria de de una de las celdas del buffer. Por ejemplo quiero saber la dirección de memoria de: buffer^[j], y como puedo hacer para convertir esa dirección a una cadena, para de esa manera poder mostrarla con outputdebugstring o con un showmessage. Una vez más muchas gracias Saludos |
Hola Ictiandro, ¿al final te funciono la funcion que te pase?, lo digo porque todavia sigues preguntando por el "array of byte".
De todas formas ahora preguntas como mostrar la direccion de la memoria de una variable, por cierto no seras amigo de abracadabra :D
|
Cita:
Saludos. |
La franja horaria es GMT +2. Ahora son las 02:23:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi