mam następujący problem [BCB c++ 6 na windows7 x64]
mam strukturę
- Kod: Zaznacz cały
struct Blok
{
int obr;
AnsiString napis;
};
- Kod: Zaznacz cały
Blok lista;
wpisuje odpowiednio dane
- Kod: Zaznacz cały
lista.obr = obiekt; //obiekt jest typu int
lista.napis = Edit1->Text;
zapisuje później wszystko do pliku
- Kod: Zaznacz cały
if ( SaveDialog1->Execute())
{
TFileStream *out = new TFileStream(SaveDialog1->FileName, fmCreate);
out->WriteBuffer(&lista, sizeof(lista));
out->Free();
}
później odczytuje
- Kod: Zaznacz cały
TFileStream *in;
if(OpenDialog1->Execute())
{
in = new TFileStream(OpenDialog1->FileName, fmOpenRead);
in->ReadBuffer(&lista, sizeof(lista));
in->Free();
}
i przypisuje napis do Edit1->text
- Kod: Zaznacz cały
Edit1->Text = "";
Edit1->Text = lista.napis;
i tutaj mam problem:
jeśli wpisze coś do Edit1, zapisze to do pliku i otworze ten plik to w polu Edit1 pojawia się to co zapisałem
lecz jeśli zamknę aplikację [lub uruchomie debugowanie jeszcze raz] to albo pojawiają mi się jakieś losowe znaki, albo same " '''' ", lub mam błąd access violation at address in module Project1.exe read of adress, a przy zakończeniu programu abnormal program termination
z lista.obr jest zawsze wszystko ok [sprawdzam nim warunek w if]
czy robię coś źle? jeśli tak, to proszę o rade
z góry dziękuję za pomoc
EDIT: cały kod
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct Blok
{
int obr;
AnsiString napis;
};
Blok lista;
int obiekt;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
obiekt = 2;
lista.obr = obiekt;
lista.napis = Edit1->Text;
if ( SaveDialog1->Execute())
{
TFileStream *out = new TFileStream(SaveDialog1->FileName, fmCreate);
out->WriteBuffer(&lista, sizeof(lista));
out->Free();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TFileStream *in;
if(OpenDialog1->Execute())
{
in = new TFileStream(OpenDialog1->FileName, fmOpenRead);
in->ReadBuffer(&lista, sizeof(lista));
in->Free();
}
Edit1->Text = "";
if (lista.obr ==2) Label1->Caption = IntToStr(lista.obr);
Edit1->Text = lista.napis;
}
//---------------------------------------------------------------------------