Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Decidme que tengo mal :,(

Estas en el tema de Decidme que tengo mal :,( en el foro de C/C++ en Foros del Web. Llevo literalmente HORAS y siempre me sale algún error, o no me lee o no se que mas si algun buen samaritano me ayudaría a ...
  #1 (permalink)  
Antiguo 02/11/2015, 15:52
 
Fecha de Ingreso: noviembre-2015
Ubicación: Tenerife
Mensajes: 2
Antigüedad: 8 años, 6 meses
Puntos: 0
Decidme que tengo mal :,(

Llevo literalmente HORAS y siempre me sale algún error, o no me lee o no se que mas
si algun buen samaritano me ayudaría a indicarme que tengo mal o que debo cambiar, se lo agradeceré muchísimo.

FILE* fileHandle;
fileHandle= fopen("nationality.lst", "rb");
if (fileHandle== NULL)
{
fileHandle= fopen("nationality.lst", "wb");
String list[]= {"España", "Marruecos"};
//fwrite();
}
else
{
int checkError= 0;
checkError= fseek(fileHandle, 2, SEEK_SET);
//checkError= fseek(fileHandle, -8, SEEK_END);

int* identifier= 0;
//realloc(identifier, 8);
/*int lugar= 0;
lugar= fseek(fileHandle, 0, SEEK_CUR);*/
checkError= fread(identifier, 8, 1, fileHandle);
if (identifier== "_CVFast_")
{
fseek(fileHandle, 0, SEEK_SET);
char* item= "";
char* character= "";
unsigned int counter= 0;
do
{

fread(character, 1, 1, fileHandle);
if (character!= "\n")
{
item= strcat(item, character);
}
else
{
unsigned char i;
String itemStr= "";
for (i= 0; i< sizeof(item); i++)
{
itemStr[i]= item[i];
}
ComboBox3->Items->Add(itemStr);
}
} while (feof(fileHandle)&& item!= "_CVFast_");


}

}
fclose(fileHandle);

Última edición por carlosrebisch; 02/11/2015 a las 15:53 Razón: falta ortográfica
  #2 (permalink)  
Antiguo 02/11/2015, 17:11
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Decidme que tengo mal :,(

Por que mezclas C y C++? Por que no usas fstream para trabajar con archivos? Faltan partes del código que son fundamentales como la declaración de las cabeceras. No sabemos que error te está dando tampoco ni que lenguaje es exactamente aunque pienso que puede ser c++Builder o similar ya que usas un objeto que existe en el.
  #3 (permalink)  
Antiguo 04/11/2015, 09:05
 
Fecha de Ingreso: noviembre-2015
Ubicación: Tenerife
Mensajes: 2
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Decidme que tengo mal :,(

#include <vcl.h>
#include <string.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"

void __fastcall TForm1::FormCreate(TObject *Sender)

FILE* fileHandle;
. fileHandle= fopen("nationality.lst", "rb");
. if (fileHandle== NULL)
. {
. fileHandle= fopen("nationality.lst", "wb");
. String list[]= {"España", "Marruecos"};
. }
. else
. {
. int checkError= 0;
. checkError= fseek(fileHandle, 2, SEEK_SET);
. checkError= fseek(fileHandle, -8, SEEK_END);
.
. int* identifier= 0;
. //realloc(identifier, 8);
. /*int lugar= 0;
. lugar= fseek(fileHandle, 0, SEEK_CUR);*/
. checkError= fread(identifier, 8, 1, fileHandle);
. if (identifier== "_CVFast_")
. {
. fseek(fileHandle, 0, SEEK_SET);
. char* item= "";
. char* character= "";
. unsigned int counter= 0;
. do
. {
. fread(character, 1, 1, fileHandle);
. if (character!= "\n")
. {
. item= strcat(item, character);
. }
. else
. {
. unsigned char i;
. String itemStr= "";
. for (i= 0; i< sizeof(item); i++)
. {
. itemStr[i]= item[i];
. }
. ComboBox3->Items->Add(itemStr);
. }
. } while (feof(fileHandle)&& item!= "_CVFast_");
.
.
. }
.
. }
.fclose(fileHandle);
estoy usando c++ con el programa de C++ builder XE6
y lo que quiero hacer es que en un combobox (comboBox3) aparezca la lista "nationality.lst"(da igual la extensión) que tengo dentro de la misma carpeta y que no tiene ningún error (lo he comprobado) pero por alguna razón no consigo que cuando visualizo el programa aparezca la lista. solo decidme con que función o que estoy tratando mal porque ya he intentado todo lo que se me ocurrió. Si podéis decirme con que función se haría rápido y limpio, se lo agradecería, porque ya me enrede tanto que yo no veo como podría hacerlo de una manera simple.

Simplemente que en el combobox salga la lista que tengo en un archivo aparte.
  #4 (permalink)  
Antiguo 04/11/2015, 11:43
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Decidme que tengo mal :,(

Ufff tiene muchos fallos. Pon como es el archivo para poder ayudarte mejor y tener una idea de lo que quieres hacer porque veo que usas fseek hasta en la sopa y no le veo sentido alguno.

Edito:
Te pongo un ejemplo usando lo que C++Builder pone a tu alcance para facilitarte las cosas:
Código C++:
Ver original
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource "*.dfm"
  10. TForm1 *Form1;
  11. //---------------------------------------------------------------------------
  12. __fastcall TForm1::TForm1(TComponent* Owner)
  13.    : TForm(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17.  
  18. void __fastcall TForm1::FormCreate(TObject *Sender)
  19. {
  20.    TStrings *lista;
  21.    bool error=false;
  22.  
  23.    //Pido memoria para la lista
  24.    try{
  25.       lista=new TStringList;
  26.    }catch(std::bad_alloc){
  27.       error=true;
  28.    }
  29.  
  30.    if(!error){
  31.       if(FileExists("nationality.lst")){ //Compruebas si existe
  32.          //Lleno la lista desde el archivo
  33.          try{
  34.             lista->LoadFromFile("nationality.lst");
  35.          }catch(std::bad_alloc){
  36.             error=true;
  37.          }
  38.       }else{
  39.          try{
  40.             //Lleno la lista con las cadenas deseadas
  41.             lista->Add("¡Viva España!");
  42.             lista->Add("Marruecos");
  43.             lista->Add("Gibraltar");
  44.             //Guardo la lista en el archivo
  45.             lista->SaveToFile("nationality.lst");
  46.             //Limpio la lista
  47.             lista->Clear();
  48.             //Lleno la lista desde el archivo
  49.             lista->LoadFromFile("nationality.lst");
  50.          }catch(std::bad_alloc){
  51.             error=true;
  52.          }
  53.       }
  54.  
  55.       if(!error){
  56.          //Le meto toda la lista de strings obtenida al combobox
  57.          try{
  58.             ComboBox1->Items->AddStrings(lista);
  59.          }catch(std::bad_alloc){
  60.             error=true;
  61.          }
  62.  
  63.          //Coloco el primero como seleccionado si se añadio alguno
  64.          if(ComboBox1->Items->Count > 0)
  65.             ComboBox1->ItemIndex=0;
  66.       }
  67.       delete lista; //Libero la memoria ocupada por la lista
  68.    }
  69.  
  70.    if(error)
  71.       ShowMessage("No hay memoria suficiente");
  72. }
  73. //---------------------------------------------------------------------------

Es algo basico pero creo que hace lo que quieres y controlo solo los errores que se puedan producir por falta de memoria pero si hay otro tipo de error no lo estoy controlando.

Última edición por aguml; 04/11/2015 a las 13:45

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:21.