Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

AnsiString y tb fread, fseek

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: AnsiString y tb fread, fseek Responder citando

Bueno creo que son preguntas mu sencillas y básicas pero q llevo tiempo sin averiguar, porfavor ayudadme!!!!
Weno la primera cuestión es :

TENGO ESTE CODIGO QUE SIMPLEMENTE INTENTA COGER UNA IMAGEN UTILIZANDO OPENDIALOG(LO LLAMO "ABRIR" EN EL CODIGO) LO PRIMERO ES QUE CUANDO SELECCIONO LA IMAGEN SE GUARDA SU NOMBRE EN ARCHIVO=ABRIR->FILENAME Y EN FORMATO ANSISTRING Y YO A LA HORA DE INTENTAR ASIGNARLO A UN MANEJADOR F=FOPEN( "XXXX", "RB")
AHI EN XXXX HAY Q PONER OTRO FORMATO Y NO SE CUAL ES , SI SABEIS CUAL ES DECIRMELO Y COMO CAMBIAR DE ANSISTRING A ESE FORMATO.

2ª CUESTION :
AL EJECUTAR ESTE CODIGO TENGO PROBLEMAS CON FREAD, Y A QUE AL EJECUTAR ME SALE UNA VENTANA CON: "PROJECT PROJECT1.EXE RAISED EXCEPCION CLASS EAXCESS VIOLATION ........IN MODULE CC3250MT.DLL.........ETC" Y NO SE QUE ES TODO ESO, SI REALMENTE SABEIS CUAL ES EL PROBLEMA DECIRMELO PORFAVOR!!!!!!


#include <vcl.h>
#pragma hdrstop
#include "stdio.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void LeerDatosInf(FILE *f,long &tam,long &inimap,long &nfil,long &ncol,short &pc,
short &bpp,long &comp){
/* Lectura de datos de informacion de un fichero .bmp.
f: manejador del fichero de imagen (.bmp)
tam: tamaño del fichero.
inimap: posición en el fichero donde comienzan los datos del mapa de bits.
nfil: nº de filas de la imagen.
ncol: nº de columnas de la imagen.
pc: planos de color.
bpp: bits por pixel.
comp: tipo de compresión.
*/
fseek(f,2,SEEK_SET);
fread(&tam,4,1,f); // tamaño del fichero
fseek(f,10,SEEK_SET);
fread(&inimap,4,1,f); // lectura del offset hacia los datos del mapa
fseek(f,18,SEEK_SET);
fread(&ncol,4,1,f); // nº de columnas
fread(&nfil,4,1,f); // nº de filas
fread(&pc,2,1,f); // nº de planos de color
fread(&bpp,2,1,f); // nº de bits por pixel
fread(&comp,4,1,f); // tipo de compresion
}//FIN LeerDatosInf
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{ FILE*f; bool res;
long tam,inimap,nfil,ncol,comp;
short pc,bpp;

AnsiString archivo;
res=false;
res=abrir->Execute();
if (res)
{
archivo=abrir->FileName;
Edit1->Text=archivo;
Image1->Picture->LoadFromFile(archivo);
f=fopen("c:\bp3.bmp","rb"); //PONGO ESTO PQ NO PUEDO PONER ARCHIVO
}
LeerDatosInf(f,tam,inimap,nfil,ncol,pc,bpp,comp);
}
//---------------------------------------------------------------------------
Volver arriba
Mensaje    Asunto: Responder citando

Bueno esto me ha pasado y me costo algo entenderlo cuando comenzaba,
el asunto es que intentas usar una AnsiString donde se espera un char[]
aqui debes usar c_str() que te hace la conversion.
Código:
Image1->Picture->LoadFromFile(archivo);
f=fopen(archivo.c_str(),"rb");
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Sí, es eso que dice el amigo alfredo. Pero si te preguntas porqué no salía poniendo el nombre del fichero directamente, es porque debes poner dos barras invertidas como separador de directorios:

Código:
f = fopen("c:\\bp3.bmp","rb");


Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Gracias JaqueMate, cuatro ojos ven mas dos, pues si, el compilador interpreta
la primera barra invertida como la contiuacion de una cadena en la siguente linea, si son dos consecutivas como si fuera una sola,
tambien me estrelle con eso al principio...
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.