 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Peel Invitado
|
Publicado: Sab 26 Jun, 2004 10:09 am Asunto: AnsiString y tb fread, fseek |
|
|
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 |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Sab 26 Jun, 2004 5:34 pm Asunto: |
|
|
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 |
|
 |
jaquemate Lt Cmdr


Registrado: 30 Sep 2002Mensajes: 110
|
Publicado: Sab 26 Jun, 2004 5:56 pm Asunto: |
|
|
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 |
|
 |
Invitado
|
Publicado: Sab 26 Jun, 2004 6:47 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|