text files with borland c++ builder

G

gulbrrs

Hello

Here is my code:

void __fastcall TNovaMistura::Button5Click(TObject *Sender)
{
FILE *fp;

AnsiString data1 = NovaMistura->Edit32->Text;
char *Data = data1.c_str();

AnsiString partidan_1 = NovaMistura->Edit33->Text;
char *PartidaN = partidan_1.c_str();

NovaMistura->Label21->Caption = NovaMistura->Label19->Caption +
NovaMistura->Edit33->Text + NovaMistura->Label20->Caption;
AnsiString partida_diretorio = NovaMistura->Label21->Caption;
const char *PartidaN1;
PartidaN1 = partida_diretorio.c_str();

AnsiString tipo_de_mistura_1 = NovaMistura->Edit35->Text;
char *Tipo_De_Mistura = tipo_de_mistura_1.c_str();

AnsiString equipamento_1 = NovaMistura->Edit34->Text;
char *Equipamento = equipamento_1.c_str();

AnsiString total_mistura_1 = NovaMistura->Edit31->Text;
char *Total_Da_Mistura = total_mistura_1.c_str();

AnsiString tipo_de_la_1 = NovaMistura->Edit1->Text;
char *Tipo_De_La1 = tipo_de_la_1.c_str();

AnsiString porcentagem_1 = NovaMistura->Edit11->Text;
char *Porcentagem1 = porcentagem_1.c_str();

AnsiString peso_1 = NovaMistura->Edit21->Text;
char *Peso1 = peso_1.c_str();

fp = fopen(PartidaN1,"w"); //abre o arquivo para escrita.

fprintf(fp,"Data: %s\n",Data);
fprintf(fp,"Partida Nº: %s\n",PartidaN);
fprintf(fp,"Tipo da Mistura: %s\n",Tipo_De_Mistura);
fprintf(fp,"Equipamento: %s\n",Equipamento);
fprintf(fp,"Total da mistura: %s\n",Total_Da_Mistura);
fprintf(fp,"Tipo de Lã 1: %s\n",Tipo_De_La1);
fprintf(fp,"Porcentagem 1: %s\n",Porcentagem1);
fprintf(fp,"Peso 1: %s kg\n",Peso1);

fclose(fp);
}
//---------------------------------------------------------------------------

I need to use an EditBox to name the file that is going to be open. The
path should always be the same, for example:
c:\\windows\\desktop\\"myfile".txt
The user have to write "myfile" in the EditBox
(NovaMistura->Edit33->Text).

This code doesn't work I have always the same error message:
First chance exception at 0x40005B68. Exception class EAccessViolation
with message 'Access violation at address 32665A50 in module
'CC3260MT.DLL'. Read of address F8B46F90'. Process Project1.exe
(0xFFF6D97D)

Can somebody help me?


Thanks in advance,
Renan
 
M

mlimber

Hello

Here is my code:

void __fastcall TNovaMistura::Button5Click(TObject *Sender)
{
FILE *fp;

AnsiString data1 = NovaMistura->Edit32->Text;
char *Data = data1.c_str();

AnsiString partidan_1 = NovaMistura->Edit33->Text;
char *PartidaN = partidan_1.c_str();

NovaMistura->Label21->Caption = NovaMistura->Label19->Caption +
NovaMistura->Edit33->Text + NovaMistura->Label20->Caption;
AnsiString partida_diretorio = NovaMistura->Label21->Caption;
const char *PartidaN1;
PartidaN1 = partida_diretorio.c_str();

AnsiString tipo_de_mistura_1 = NovaMistura->Edit35->Text;
char *Tipo_De_Mistura = tipo_de_mistura_1.c_str();

AnsiString equipamento_1 = NovaMistura->Edit34->Text;
char *Equipamento = equipamento_1.c_str();

AnsiString total_mistura_1 = NovaMistura->Edit31->Text;
char *Total_Da_Mistura = total_mistura_1.c_str();

AnsiString tipo_de_la_1 = NovaMistura->Edit1->Text;
char *Tipo_De_La1 = tipo_de_la_1.c_str();

AnsiString porcentagem_1 = NovaMistura->Edit11->Text;
char *Porcentagem1 = porcentagem_1.c_str();

AnsiString peso_1 = NovaMistura->Edit21->Text;
char *Peso1 = peso_1.c_str();

fp = fopen(PartidaN1,"w"); //abre o arquivo para escrita.

fprintf(fp,"Data: %s\n",Data);
fprintf(fp,"Partida Nº: %s\n",PartidaN);
fprintf(fp,"Tipo da Mistura: %s\n",Tipo_De_Mistura);
fprintf(fp,"Equipamento: %s\n",Equipamento);
fprintf(fp,"Total da mistura: %s\n",Total_Da_Mistura);
fprintf(fp,"Tipo de Lã 1: %s\n",Tipo_De_La1);
fprintf(fp,"Porcentagem 1: %s\n",Porcentagem1);
fprintf(fp,"Peso 1: %s kg\n",Peso1);

fclose(fp);
}
//---------------------------------------------------------------------------

I need to use an EditBox to name the file that is going to be open. The
path should always be the same, for example:
c:\\windows\\desktop\\"myfile".txt
The user have to write "myfile" in the EditBox
(NovaMistura->Edit33->Text).

This code doesn't work I have always the same error message:
First chance exception at 0x40005B68. Exception class EAccessViolation
with message 'Access violation at address 32665A50 in module
'CC3260MT.DLL'. Read of address F8B46F90'. Process Project1.exe
(0xFFF6D97D)

Can somebody help me?

Have you stepped through it in the debugger? On what line does the
access violation occur. If it turns out your question deals with a
Borland-specific or GUI-related question, you'll probably need to take
it to a more appropriate newsgroup. See this FAQ for what is on-topic
here:

http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9

Cheers! --M
 
G

gulbrrs

That's the line the access violation occur:

fprintf(fp,"Data: %s\n",Data);
I think this problem is c/c++ problem.

Thanks
Renan

mlimber escreveu:
 
M

mlimber

That's the line the access violation occur:

fprintf(fp,"Data: %s\n",Data);
I think this problem is c/c++ problem.

The problem could lie in these lines:

AnsiString data1 = NovaMistura->Edit32->Text;
char *Data = data1.c_str();

But it's hard to say since standard C++ has no knowledge of a class
called AnsiString. It may just be that the file failed to open. You
need to check it for success:

fp = fopen(PartidaN1,"w"); //abre o arquivo para escrita.
if( !fp )
{
// ...print an error or whatever...
return;
}

Cheers! --M
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top