Ver Mensaje Individual
  #1  
Antiguo 17-11-2006
Ictiandro Ictiandro is offline
Miembro
 
Registrado: jul 2005
Posts: 13
Reputación: 0
Ictiandro Va por buen camino
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 byte
procedure xxx(param : pointer);
var
buffer : ^arreglobyte;
arch: File;
tamaño, Numbloq, j:integer;
begin
buffer := @param;
...
AssignFile(arch,'ruta de archivo');
rewrite(arch,1);
BlockWrite(arch, buffer^[j], tamaño, Numbloq);
CloseFile(arch);
....
end;


Segunda Forma:
--------------
type
arreglobyte = array of byte
procedure xxx(param : pointer);
var
buffer : ^arreglobyte;
arch: THandle;
tamaño, j:integer;
begin
buffer := @param; //param es de tipo pointer (parametro de entrada)
.....
arch:=filecreate('ruta de archivo');
numbytes := FileWrite(arch,buffer^[j],tamaño);
FileClose(arch);
......
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
Responder Con Cita