Witam, mam pewien problem, otóż zrobiłem sobie program, który pobiera źródło strony html i teraz chciałbym je sobie przeszukać. Miałoby to polegać na tym, że funkcja sprawdzałaby czy 3 stojące obok siebie znaki odpowiadają 'S' , 'I' oraz 'D'. Cała zawartość strony jest zapisana do zmiennej AnsiString.
Oto kod funkcji odpowiadającej za przeszukiwanie tego ciągu:
char *search(char *txt)
{
txt+=90;
for(;;)
{
txt++;
if((*txt == 'S') && (*(txt-1) == 'I') && (*(txt-2) == 'D'))
{
txt+=4;
break;
}
}
for(int x=0;x<40;x++)
wynik[x] = *(txt++);
return wynik;
}
Problem polega na tym, że wywala mi błąd o treści: "Access violation at address 00401E3A in module 'Project1.exe'. Read of address 0095C000."
Wywołanie tej funkcji wygląda w sposób następujący:
AnsiString x = search(Msg.c_str());
Edit1->Text = x;
Zmienne "Msg" oraz "wynik" są zadeklarowane następująco:
AnsiString Msg;
char wynik[40];
W dodatku po wywaleniu błędu w programie Borland CPP Builder zaznacza mi linijkę z if, a dokładniej:
if((*txt == 'S') && (*(txt-1) == 'I') && (*(txt-2) == 'D'))
Czy ktoś wie co jest nie tak z kodem który napisałem? Jeszcze mam takie pytanie: jak ustawiam wskaźnik char *txt na Msg.c_str() to wskaźnik ten pokazuje na pierwszy element czy który? Pytam, bo kiedy zrobiłem opercję txt+=100 to dostałem tekst gdzieś z środka, na pewno nie był to setny element, ani nic w tych okolicach.