bład eaccessviolation, dlaczego?

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?

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.

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

0

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

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.

0

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

0

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

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.

1

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

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.

0

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

0

nie wiem, nie zaglądałem na forum bo bana miałem i ciasteczka dopiero później usunałem i zanim ip mi się zmieniło, a tak poza tym to for i :0 to linie działa bez -1

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