Co znaczy blad Access Violation?

0

Jakby kto myślał że to ten sam błąd, to mu mówię że to inny błąd.

Przy kompilacji i podczas działania programu wszystko jest dobrze. Jak wyłączę program to mi wywala taki błąd
user image

W OnClose Formy w bloku try...except zwalniam Bitmapę i Klasę a po except Application.Message('Błąd', 'Sry', 0);

Edit:
Jak uruchomię w delphi, i zamknę to wysakuje ten na górze.
Jak otworze bez użycia delphi, to najpierw wysakuje wiadomość którą to napisałęm a po 30 sek. to
user image

0

A pokaż kod OnClose.
Spróbuj może na czystym projekcie te OnClose użyć.

0

Nie można wyłapywać wyjatku czytania/pisania po nieswojej pamięci. Pewnie próbujesz zwolnić już zwolniony obiekt albo coś...

0

Oto kod

var
 I : Integer;
begin
  try
    Frame.Free;
     for I := 1 to High(Tablica) do
       Tablica[I].Free;
  except
   ShowMessage('Trudno');
  end;
end;

Dodam że w OnCreate mam

  for I := 1 to High(Tablica) do
      Tablica[I] := TNowaKlasa.Create;

Ogółem to wygląda tak:

type
  TNowaKlasa = class
    Wartosc : String;
    procedure TNowaKlasa.MojaProcedura();
   end;

var
 Tablica : array [1..10] of TNowaKlasa;
0

A cha, i mam jeszcze jeden problem.
Mam klasę, jak mówiłem i tablicę tych Klas.
Mam jedną metodę tej klasy (powiedzmy. "Metoda").

procedure TKlasa.Metoda();

A mam też inną metodę...

function Sprawdź(TKlasa) : Boolean;

A teraz w procedurze Metoda chce umieścić funkcję Sprawdź.
I tu jest pytanie: "Co mam podać w parametrze funkcji "Sprawdź"?"
Nie mówicie mi żebym podał nazwę obiektu, bo to ma działać dla wszystkich obiektów w Tablicy Klas.

1

próbujesz się odwołać do nieistniejącego obiektu. Na 99.999% masz gdzieś metodę OnPaint, która próbuje coś zrobić z bitmapą zwolnioną w OnClose.
Do zwalniania obiektów jest zdarzenie OnDestroy a nie OnClose

0

wtym fragmencie to masz tak na prawdę czy tylko w poście wpisałeś :

 procedure TNowaKlasa.MojaProcedura(); 

tak się pisze definicję procedury a nie jej deklarację.

type
  TNowaKlasa = class
    Wartosc : String;
    procedure TNowaKlasa.MojaProcedura();
   end;
 

daj trochę więcej kodu, nie widzę co chcesz robić / jak użyć tej procedury :

Sprawdź(var AKlasa: TKlasa)
0

Nie no, teraz to już kompletnie zbaraniałem.
Wywala Access Violation (at address 00454545 ) przy if...
Zaznacza linijkę z if bez względu na to czy jest na początku czy na końcu procedury
ta procedura to dokładnie

if Zmienna[2] = 'L' then Sprawdź(Obiekt);

o:
user image

A jeśli chodzi o poprzedni post, to chodziło mi o to żeby z poziomu procedury wykonać funkcję która za parametr powinna przyjąć obiekt do którego należała ta procedura.

PS; Funkcja DirtToStr zamienia nowy typ na String, a SpinBitmap to procedura obracająca bitmape w poziomie

PPS; Nie wiem co zrobiłem, ale teraz delphi zostawił tego ifa w spokoju i uczepił się tego

for I := 1 to 4 do
  with Tablica[I] do
    begin
      Wartość1 := '1';
       itd.
    end;

I wywala Access Violation i zaznacza tą pierwszą linję po begin

1
  1. za każdym razem trzeba cię błagać o jakikolwiek kod
  2. "We właściwym kodzie programu procedura się inaczej nazywa" no to zajebiście, przy dobrym wietrze właściwy kod wygląda i robi całkiem co innego
  3. boisz się, że ci ktoś podpierdoli nazwy zmiennych?? Używasz jako nazwy własnego imienia i nazwiska, że je zamazujesz??
  4. na tym ostatnim screenie najprawdopodobniej udało ci się zasłonić najważniejszą część - co to za procedura.
  5. twoje wyjaśnienia co funkcja robi (znaczy powinna robić wg ciebie) a co tak naprawdę się w niej dzieje to często dwie różne rzeczy.

Zrozum wreszcie, że jak chcesz pomocy to dajesz kod a nie jakieś ochłapy, które nic nikomu nie mówią.

0

begin
try
Frame.Free; <------ co to jest? czemu to się tu znajduje na dzień dobry?
for I := 1 to High(Tablica) do <-------- 0 to teś liczba. Nie miałeś matematyki w szkole, czy co?

Zawsze zwalniasz coś czego może nie być?
Tak ciężko użyć Assigned żeby sprawdzić czy obiekt w ogóle istnieje?

Zajrzyj najpierw do google translatora co znaczy AV! Jak zrozumiesz idee tego wyjątku (tak! to wyjątek! nie błąd!) to może ci się uda poskładać swój projekt do kupy chociaż marnie to widzę.

0

TomRiddle a wrzuć i cały kod, od tego masz Pastebin, ale jak będziesz dalej dawał ocenzurowane ochłapy , to nikt nawet nie spróbuje zgadywać o co właściwie chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1