Błąd w programie

SA
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 6 lat
0

Witam mam taki kawałek kodu jak niżej i chyba jest za ciepło ponieważ nie mogę znaleźć błędu.
Jeśli był w procedurze drukuj to za każdym razem przy debugowaniu kursor wychodził mi z pętli for do begina i zerował trzy zminenne ijk a jest to niemożliwe
Teraz mam ten kawałek jako osobną procedurę i wywala błąd raised exception class EaccesViolation
Spróbuję jeszcze raz w domu wieczorem może się sypie Delphi 7 a może ja mam kłopoty ze wzrokiem.

Jeśli ktoś coś wymyśli to zapraszam do podzielenia się uwagami.

Pozdr AS

Kopiuj
procedure TForm1.PrzygotujSpis;
var
s: string ;
ii,jj,kk,ll,m : integer;
begin
 jj:=0;
 kk:=0;
 ll:=0;
    for ii:= 1 to dl_tabeli do
      begin
          s:= StringGrid3.Cells[3,ii];

          if s='Kęty 1' then
          begin
              Kety1[jj]:= StringGrid3.Cells[1,ii];
              jj:=jj+1;
          end
          else if  s='Kęty 2' then
          begin
              Kety2[kk]:= StringGrid3.Cells[1,ii];
              kk:=kk+1;
          end
         else if s='Brzeszcze' then
         begin
            Brzeszcze[ll]:= StringGrid3.Cells[1,ii];
             ll:=ll+1;
         end ;
end ;


// wybieram która tablica jest najdłuższa
If jj > kk then   ii:=jj
 else    ii:=kk;

If ii > ll then   MTab:=ii
 else  MTab:=ll;

end;
b0bik
  • Rejestracja:około 22 lata
  • Ostatnio:około 2 miesiące
  • Postów:1112
0

Access Violation - to m.in. próba dostępu do zabronionego obszaru pamięci. Ja bym stawiał, że odwołujesz się do jakiejś zmiennej niezainicjowanej, lub do jakiejś tablicy (może ten StringGrid) poza jej granicami. Nie wiem, za mało jest kodu żeby cokolwiek wywnioskować. Skąd bierzesz dł. tablicy. Mam nadzieje że wiesz że Cells w StringGrid'zie są numerowane od 0.

KD
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
0

to moze byc for ii:= 1 to dl_tabeli do

długość tabeli to nie to samo co ostatni idneks w tablicy sproboj dac
for ii:= 1 to dl_tabeli-1 do

SA
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 6 lat
0

Dzięki za podpowiedzi, dalej coś nie działa, dizisiaj może jutro posiedzę nad tym.
Spróbuję przekonstruować cały raport wraz z tą procedurą.

pozdr AS

Oleksy_Adam
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 11 lat
0

Tablice Kety1 jak masz zadeklarowane? Jak ustalasz ich długość?


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>
0

Witam , tablica ma tak Kety1: array[1..250] of string;
W ogóle cała zabawa polega na tym że muszę posortować dane przed wysłaniem je do rv report.
Ze stringgrida wczytuje zależnie od stałego filtru dotrzech tabel a następnie układam odpowienio dane.

Jest to bajecznie proste , tabela, ify , druk ???

Zmieniłem deklaracje zmiennych ii:=1 i ruszyło ale dalej jak podglądam program w debugerze to widzę ze program wyskakuje z pętli for do pierwszego begina a tak być nie powinno, gdzieś się wywala ale teraz błędów nie pokazuje, danych mam 170 więc tablica jest odpowiednio długa.
Prawdopodobnie mam namieszane gdzieś w kodzie ale już nie wywala się program i co najgorsze nie pokazuje się błąd.

podr AS

0

StringGrid na bank ma cells liczone od 0

SA
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 6 lat
0

Tak ale w pierwszej linii mam nazwy kolumn
pozdr AS.

Wykasowałem pół programu i błąd zniknął.
Teraz wiem że gdzieś w programie jest błąd lub ostrzeżenie które może być zignorowane a w czasie pracy może spowodować błąd.
AS

Oleksy_Adam
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 11 lat
0

Błąd masz w indeksach tablic Kety1 (itd). Masz 1..250 a indeksujesz:

Kopiuj
ii := 0;
Kety1[ii czyli 0] := cos tam;
ii:= ii+1;

Masz dwie opcje:

Kopiuj
ii := 1;
for begin
  Kety[ii] := ....
  Inc(ii);
end;

i

Kopiuj
ii := 0;
for begin
  Inc(ii);
  Kety[ii] := ....
end;

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>
SA
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 6 lat
0

Dzięki czasem człowieka coś zaćmi.
POZDR AS

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.