Strona 1 z 1

Zapis danych do pliku za pomocą TFileStream

Nowy postNapisane: wtorek, 26 maja 2009, 23:21
przez Miroo_007
Mam coś takiego;
Kod: Zaznacz cały
//-------------Unit1.h----------------
struct TSzablon_zapis {
      char      tytul_szablonu[100],
            tytul_wiadomosci[300],
            sciezka_szablonu[300];
      bool      szablon_listy,
            szablon_email,
            szablon_SMS;
      char      Tresc_wiadomosci[2000];
};
//--------------Unit1.cpp------------------------------
TSzablon_zapis zapis;
if(FileExists(lokalny.sciezka_szablonu)) {...}
else {
      TFileStream *Streamer;
      try {
         Streamer = new TFileStream(lokalny.sciezka_szablonu, 0xffff);
         Streamer->WriteBuffer(&zapis,sizeof(zapis));
      } __finally {
         delete Streamer;
      }
    }

Funkcja WriteBuffer wyświetla taki komunikat: E2027 Must take address of a memory location i wywala mi taki błąd:
bez tytułu.JPG

Re: Zapis danych do pliku za pomocą TFileStream

Nowy postNapisane: czwartek, 28 maja 2009, 12:11
przez Cyfrowy Baron
Ten komunikat oznacza, że źle używasz funkcji WriteBuffer, prawdopodobnie używasz środowiska C++ Builder 2009 i tej funkcji należy używać inaczej niż we wcześniejszych wersjach.
U mnie w środowisku C++ Builder 2007 Twój kod działa bez zarzutu.

Sprawdź w pomocy jak należy używać tej funkcji.
Możesz wywołać pomoc do funkcji poprzez zaznaczenie w edytorze funkcji WriteBuffer i naciśnięcie klawisza F1.

Re: Zapis danych do pliku za pomocą TFileStream

Nowy postNapisane: czwartek, 28 maja 2009, 16:51
przez Miroo_007
Nie poradziłem sobie z tym problemem. Nie jestem wstanie kontrolować zapisu pliku jeżeli TFileStream ma tak mało opcji zapisu. Zapis przerobiłem wykorzystując klase ofstream i ifstream... i działa poprawnie.