do
{
sp_licznik++;
stream_pos = stream_pos + sizeof(TEdit) * (sp_rok * sp_licznik);
plik.seekg(stream_pos);
plik.read((char*)&io_temp, sizeof(TEdit));
} while
(!( io_temp->Text == Form1->Edit173->Text || plik.eof()));
Pętla ta ma obsługiwać pewne wyszukiwanie w moim programie. Przeszukuję plik binarny w celu odpowiedniego ustawienia znacznika plikowego, tak aby móc zapisać wprowadzone dane w odpowiednim miejscu pliku (zamienić dane).
Zmienne:
sp_licznik - nie jest ważna przy rozwiązaniu tego problemu
stream_pos - nie jest ważna przy rozwiązaniu tego problemu
io_temp - jest to zmienna typu TEdit utworzona wcześniej ( czyli objekt klasy TEdit)
Form1->Edit173 - jest to pole tekstowe w głównym oknie programu (tych pól jest strasznie dużo, ale nie jest to ważne) [czyli obiekt kalsy TEdit]
Pola Edit są objektami klasy TEdit tak samo jak io_temp. Tylko pola Edit mają swoje odzwierciedlenie na formulażu programu w postaci pól, które będzie wypełniał użytkownik. Natomiast io_temp nie, jak można zasugerować się nazwą jest to tylko zmienna typu TEdit do tymczasowego przechowania danych.
Plik który przeszukuje jest zapisany blokami danych wielkości TEdit tak aby łatwo można było przestawić znacznik plikowy w odpowiednie miejsce.
PROBLEM
Wyszukiwanie odpowiedniego miejsca działa prawidłowo, odczytanie jednego bloku danych do zmiennej io_temp również. Problem pojawia się w momencie chęci skożystania z elementów tej zmiennej. Jest to klasa, więc można się odwoływać do jej elementów za pomocą operatorów -> np. io_temp->Text. Pojawia się komunikat AccessViolation, błąd dostępu do pamięci w momencie sprawdzania warunku pętli do while, czyli podczas sprawdzania warunku pętli .
