bład eaccessviolation, dlaczego?

2011-09-12 12:04
0
procedure TForm1.nextBTNClick(Sender: TObject);
var
 Label1 : Tlabel;
 I : Integer;
 I1 : Integer;
 S : String;
  Tablica : array of String;

begin
    Linie := memo.Lines.count;
    S := memo.text;
  SetLength(Tablica, linie);
  begin
   Celelbl.visible := false;
   edit1.visible := false;
   memo.visible := false;
   memo1.visible := false;
   prdlbl.visible := false;
   wskazowkalbl.visible := false;
   zdzlbl.visible := false;
  end;

  begin
  Label1 := Tlabel.Create( Self );
  Label1.Parent := Self;
  Label1.Left := 10;
  Label1.Top := 10;
  Label1.Caption := 'Nr                    Nazwa                    X | Y                    Ilosc rozkazów                    Rozkaz';
  Label1.Visible := True;

  for I :=1 to linie do    begin
  // \/przypisanie do tablicy nazwy wioski

         Tablica[I] := memo.lines[I];
  I1 := (pos('|', Tablica[I]));
  I1 := I1 - 5;
   delete(Tablica[I], I1, 5);

  label1.caption := inttostr(i1);

  // \/ 1 2 3 liczenie wiosek takjakby
  Label1 := Tlabel.Create( Self );
  Label1.Parent := Self;
  Label1.Left := 10;
  Label1.Top := I*30;
  Label1.Caption := inttostr(I);
  Label1.Visible := True;
  // \/ nazwy wiosek
  Label1 := Tlabel.Create( Self );
  Label1.Parent := Self;
  Label1.Left := 70;
  Label1.Top := I*30;
  Label1.Caption :=   Tablica[I];
  Label1.Visible := True;

                           end;

  end;

niby działa ale jak klikne przycisk to wywala debuga

Project XXXXX.exe raised exception class eaccesviolation with message ' access violation at address 00403E92 in module 'XXXXXX.exe'. Read of address 00000018E. Procces stopped. Use sep or run to continue.

wie ktoś może o co chodzi?

Pozostało 580 znaków

2011-09-12 12:09
0

wie ktoś może o co chodzi?

No jasne, debugger wywala błąd runtime.

Naucz się używać debuggera to rozwiążesz problem i zaoszczędzisz nam czas.


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-09-12 12:14
0

"dziecko" nie "gada głupot" tylko ma rację. Możesz "sobie pomóc" używając debuggera. Określiłbyś przynajmniej w którym miejscu ów błąd się pojawia

Pozostało 580 znaków

2011-09-12 12:14
0

określiłem, napisałem, że podczas klikania buttona

NAUCZ SIĘ UŻYWAĆ DEBUGGERA GENIUSZU. potem tutaj wróć. - payl 2011-09-12 12:16

Pozostało 580 znaków

2011-09-12 12:19
0

Nitro Cee, łap: Debugowanie - poczytaj sobie, poucz się trochę, i wróć dając Call Stack i inne przydatne rzeczy jeśli do tego czasu nie rozwiążesz problemu.


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-09-12 12:32
0

Czytałem cały ten artykuł i mi nie pomógł

Mówiłem - daj Call Stack i inne przydatne rzeczy - to Ci pomogę (pomożemy?). - payl 2011-09-12 12:48

Pozostało 580 znaków

2011-09-12 12:40
0

widocznie jesteś za głupi aby zrozumieć proste słowo pisane. Przerzuć się na szydełkowanie


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-09-15 22:00
ŁF
0

litościwie odpowiem, bo problem jest naprawdę banalny. otóż tablice dynamiczne indeksuje się od zera, oznacza to, że Twój for ma być od zera do linie-1. błąd bierze się z tego, że odwołujesz się poza ostatni indeks tablicy. błędy typu access violation to właśnie odwołania poza przyznaną pamięć - z adresami bliskimi zeru poza rozmiar tablicy lub to nieutworzonych obiektów.


Pozostało 580 znaków

2011-09-15 22:06
1

"Podczas przyciskania buttona" dobre :) To w ogóle nie jest programistyczna odpowiedż - po prostu masakra.

edytowany 3x, ostatnio: szypxx, 2011-09-15 22:14

Pozostało 580 znaków

2011-09-16 11:27
nitro cee.
0

luz panowie, problem nie był w tablicy tylko w memo, nie powinno być for := 1 tylko od 0 bo memo linie ma od index od 0 a nie 1.

gratuluję odkrycia tego, co napisałem 14 godzin wcześniej dwa posty wyżej - ŁF 2011-09-16 12:26
dokładnie :/ - szypxx 2011-09-16 14:36

Pozostało 580 znaków

2011-09-16 12:02
0

powinno być for i:=0 to memo.lines.count-1 do

ktoś jeszcze to napisze? - ŁF 2011-09-16 14:38
Widać tylko mnie brakowało. Niestety ŁF, im prostrze rozwiązanie tym więcej osób wie. - payl 2011-09-16 15:00
prostSZe. rozwiązanie się zna, a nie wie. Azarien podaje to już po tym, jak wpadł na to autor :P - ŁF 2011-09-16 15:42

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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