![Antiguo](images/statusicon/post_old.gif)
31-03-2014
|
![Avatar de eennzzoo](image.php?s=632482ac81fbbe36df4f910d55a0cfbd&u=83505&dateline=1396199003) |
Miembro
NULL
|
|
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Poder: 11
|
|
Error al cargar en un StringGrid
Hola tengo el siguiente codigo, y me da este error
![](http://k36.kn3.net/B/8/0/D/A/B/D0A.png)
Cuando en el edit escribo una palabra y le doy al boton agregar se carga correctamente en el archivo txt y en StringGrid, pero si vuelvo a cargar otra palabra me da ese error. Pero en el archivo txt si se carga la palabra.
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <cstdio>
using namespace std;
#pragma hdrstop
#include "agregarpelicula.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfPeliculas *fPeliculas;
#define INDEX_COL 0
int OldRowHeight;
//---------------------------------------------------------------------------
TStrings *TS2 = new TStringList;
__fastcall TfPeliculas::TfPeliculas(TComponent* Owner)
: TForm(Owner)
{
TS2->LoadFromFile("peliculas.txt");
fPeliculas->Color=static_cast<TColor>(RGB(198, 119, 0));
Label1->Color =static_cast<TColor>(RGB(198, 119, 0));
Label2->Color =static_cast<TColor>(RGB(198, 119, 0));
if (TS2->Count > StringGrid1->RowCount-1){
StringGrid1->RowCount = TS2->Count+1;
}
StringGrid1->Cells[0][0]="Peliculas";
StringGrid1->Cells[1][0]="Cantidad";
int j=TS2->Count;
for(int i= 0; i<TS2->Count; i++) {
StringGrid1->Cells[0][j]=TS2->Strings[i];
j--;
}
//StringGrid1->FixedRows= 1;
//StringGrid1->FixedCols= 0;
// fijar número de filas
//StringGrid1->RowCount=TS2->Count-1;
// fijar número de columnas
//TStrings *aux = new TStringList;
//StringGrid1->ColCount= ExtractStrings(TSysCharSet()<< ',',TSysCharSet() << '\0', TS2->Strings[0].c_str(),aux);
//delete aux;
// obtener alto de celda predeterminado
OldRowHeight = StringGrid1->DefaultRowHeight;
// pasar a StringGrid
//for(int lin=0; lin<TS2->Count; lin++){
//StringGrid1->Rows[StringGrid1->FixedRows+lin]->CommaText= TS2->Strings[lin];
//}
//delete TS2;
}
//---------------------------------------------------------------------------
void __fastcall TfPeliculas::btnAgregarClick(TObject *Sender)
{
FILE *FSave;
char Nombre[30];
strcpy(Nombre, editPelicula->Text.c_str());
FSave = fopen("peliculas.txt", "a");
if( FSave == NULL )
{
ShowMessage("El archivo no se pudo guardar");
return;
}
fprintf(FSave, "%s\n", Nombre);
fclose(FSave);
TS2->LoadFromFile("peliculas.txt");
int j=TS2->Count;
for(int i= 0; i<TS2->Count; i++) {
StringGrid1->Cells[0][j]=TS2->Strings[i];
j--;
}
delete TS2;
}
//---------------------------------------------------------------------------
void __fastcall TfPeliculas::btnBuscarClick(TObject *Sender)
{
/*for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount ; i++)
if((StringGrid1->Cells[0][i] == editPelicula->Text)||(LowerCase(StringGrid1->Cells[0][i]) == editPelicula->Text)) {
TRect Casilla;
StringGrid1->Canvas->Brush->Color=static_cast<TColor>(RGB(252, 210, 147));
Casilla= StringGrid1->CellRect(0, i);
StringGrid1->Canvas->FillRect(Casilla);
StringGrid1->Canvas->TextOut(Casilla.Left+1,Casilla.top+1,StringGrid1->Cells[0][i]);
} */
TStringGrid *SG = StringGrid1;
for(int f=SG->FixedRows; f<SG->RowCount; f++) {
if(UpperCase(SG->Cells[INDEX_COL][f].SubString(1,editPelicula->Text.Length()))== UpperCase(editPelicula->Text)){
SG->RowHeights[f]= OldRowHeight; }
else {
SG->RowHeights[f]= 0;}
}
}
//---------------------------------------------------------------------------
void __fastcall TfPeliculas::FormDestroy(TObject *Sender)
{
delete TS2;
}
//---------------------------------------------------------------------------
void __fastcall TfPeliculas::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if( State.Contains(gdFixed) )
{
StringGrid1->Canvas->Brush->Color = static_cast<TColor>(RGB(198, 119, 0));
StringGrid1->Canvas->Font->Color = static_cast<TColor>(RGB(0, 0, 0));
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->Brush->Style = bsClear;
DrawText(StringGrid1->Canvas->Handle,StringGrid1->Cells[ACol][ARow].c_str(), StringGrid1->Cells[ACol][ARow].Length(), &Rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
}
if( State.Contains(gdSelected) )
{
StringGrid1->Canvas->Brush->Color = clWindow;
StringGrid1->Canvas->Font->Color = static_cast<TColor>(RGB(0, 0, 0));
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->TextOut(Rect.Left+1,Rect.top+1,StringGrid1->Cells[ACol][ARow]);
}
}
//---------------------------------------------------------------------------
|