• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Borland C++ Builder 6 - Błąd Access violation

0 głosów
1,571 wizyt
pytanie zadane 30 sierpnia 2015 w C i C++ przez gniewko717 Nowicjusz (160 p.)
Czasami, kiedy próbuję uruchomić mój program wyskakuje błąd Access Violation.

Sęk w tym, że błąd pojawia się losowo i mogę go dostać przy uruchomieniu programu lub po którymś zrestartowaniu.

Funkcja do restartowania ma ten sam kod, który napisałem do uruchamiania programu.

3 odpowiedzi

0 głosów
odpowiedź 30 sierpnia 2015 przez gnx Dyskutant (7,720 p.)
Program jest dość stary już i prawdopodobnie ciężko będzie to przeskoczyć. Od siebie dodam, że mi dość naturalnie przeskoczyło się z C++ Buildera na Qt Designer. Polecam :)
0 głosów
odpowiedź 31 sierpnia 2015 przez gniewko717 Nowicjusz (160 p.)
Problem rozwiązany, błąd wyskakiwał zawsze, kiedy odnosiłem się do obiektu we własnej funkcji.

Wszystko przekopiowałem do funkcji obiektów bez Form1->... i zadziałało.
0 głosów
odpowiedź 19 grudnia 2015 przez Adux Obywatel (1,740 p.)

Też mam podobny program ale chciałbym aby kody mojej funkcji były w nagłówku aby nie śmieciły programu.

Przykładowo chce w StringGrid1 zapisywać liczby funkcją znajdującą się w nagłówku.

Kod wygląda tak :

xxxx.h :

void inicjalizacja()

{

...

Form1 -> StringGrid1 -> Cells[0][i+1] = godzina + " : " + minuta ;

...

}

 

xxx.cpp :

__fastcall TForm1::TForm1(TComponent* Owner)
          : TForm(Owner)
{
inicjalizacja();
}

Identyczny kod wrzucony do .cpp działa. W powyższym przypadku wyrzuca błąd dostępu :)
Ktoś ma jakiś pomysł jak to rozwiązać?
 

komentarz 19 grudnia 2015 przez Adux Obywatel (1,740 p.)

Dobra, problem rozwiązany. Wystarczyło włączyć mózg(sobota rano -.-). 

Oczywiście powyższy kod z .h nie może istnieć bo obiekt powstaje dopiero w .cpp.

Prawidłowy kod wygląda tak. 

xxxx.h :

void inicjalizacja(TForm1 *x)

{

...

x -> StringGrid1 -> Cells[0][i+1] = godzina + " : " + minuta ;

...

}

xxx.cpp :

__fastcall TForm1::TForm1(TComponent* Owner) 
          : TForm(Owner) 

inicjalizacja(Form1); 
}

 

 

Podobne pytania

0 głosów
1 odpowiedź 1,405 wizyt
pytanie zadane 8 lutego 2018 w C i C++ przez qwerty723446 Obywatel (1,750 p.)
0 głosów
1 odpowiedź 579 wizyt
pytanie zadane 2 lutego 2016 w C i C++ przez Arek Sob Początkujący (410 p.)
0 głosów
1 odpowiedź 345 wizyt

93,720 zapytań

142,648 odpowiedzi

323,266 komentarzy

63,270 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...