Título: Editar fichero win32 Publicado por: XKC en 30 Agosto 2018, 20:44 pm Hola buenas,
estoy trabajando con la API de windows. Bien, la cuestion es que quiero editar un fichero. Lo abro con CreateFileW asi: Código: HANDLE hInpFile = CreateFileW(filename, GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); Ahora, quiero leer y escribir a la vez sobre el, esto seria, leo los X primeros bytes(trato el fichero como binario), los edito en el buffer y quiero volver a escribirlos en su correspondiente posicion. Código: while (bResult = ReadFile(hInpFile, chunk, chunk_size, &out_len, NULL)) { Fichero original Código: HOLA MUNDO Resultado que obtengo: Código: HOLA MUNDO XXXXXXXXXXXXXXXXXX Resultado que espero: Código: XXXXXXXXXXXXXXXXXX Comentar que se que esto la manera de hacerlo correctamente seria con un stream, pero en este caso necesito utilizar estas funciones de la API. Muchas gracias Título: Re: Editar fichero win32 Publicado por: ivancea96 en 30 Agosto 2018, 21:02 pm El resultado que obtienes es igual al que esperas?
Título: Re: Editar fichero win32 Publicado por: XKC en 30 Agosto 2018, 21:06 pm El resultado que obtienes es igual al que esperas? No, perdona, edito.Simplemente necesito leer X bytes de un fichero, editarlos en el buffer que los lei y volver a escribirlos en donde estaban. Título: Re: Editar fichero win32 Publicado por: MAFUS en 30 Agosto 2018, 21:58 pm En API Windows ni idea.
Pero la idea sería que volvieras atrás el puntero del archivo tantos bytes como leíste, grabas tantos bytes como leíste y continuas con la siguiente escritura. Un fseek si se usara la biblioteca estándar. Título: Re: Editar fichero win32 Publicado por: MCKSys Argentina en 31 Agosto 2018, 17:41 pm Hola!
Probaste usar SetFilePointer (https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfilepointer)? Saludos! |