Stránka 1 z 1

"Error 201: Range check error." v Turbo Pascalu  Vyřešeno

Napsal: 20 říj 2012 17:32
od Lucinka_BUBU
Mohli byste mi prosím poradit, proč mám tuto chybovou hlášku?

Mám tři matice - array of byte (A, coulour1 a colour2) a pomocí dvou se odkazuji na třetí (i je typu byte)

Hláška se objevuje u příkazu

if A[colour1[i],colour[i]]=1then ...

Děkuji za rady.

PS: jsem začátečník, proto prosím vysvětlení velmi jednoduše

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 20 říj 2012 17:38
od CZechBoY
já neznám Pascal, ale pokusím se něco poradit :)
pole A je tedy dvourozměrné?
nelze do něj přistupovat spíše takhle: A[colour1[i][colour[i]] ?

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 20 říj 2012 19:32
od faraon
Pokoušíš se přistupovat do pole mimo jeho rozsah, například když máš
pole[1..10,1..10]
tak volání
pole[5,0]
vyhodí tuhle chybu, stejně jako
pole[5,11]

Prověř co v těch colour1[] a colour2[] máš za hodnoty.

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 20 říj 2012 19:43
od Sender
A je arry of byte
Nelze použít A[ něco, něco] lze použít pouze A[něco];

aby to šlo použít,muselo by to být takto:
var
A : array of array of byte;

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 21 říj 2012 02:20
od faraon
Sender píše:Nelze použít A[ něco, něco] lze použít pouze A[něco];

Tenhle blábol jsi vzal kde?

Dvourozměrné pole se jmenuje matice, nebo anglicky matrix:

Kód: Vybrat vše

program matrix;

var
  i,j: integer;
  m: array [1..10,1..10] of char;

begin
  randomize;
  for i:=1 to 10 do
    for j:=1 to 10 do
      m[i,j]:=chr(random(26)+ord('A'));

  for i:=1 to 10 do
    begin
      for j:=1 to 10 do
        write(m[i,j],' ');
      writeln;
    end;

  readln
end.


Výsledek:

Kód: Vybrat vše

S R N X Y X W B Y R
J L C U U O I I G D
K U U M S M H D L L
X A F X E P H X K X
L S L C I F O O L C
V F I C B G Q U M U
E O H L K D Q Q L Y
J Z M M P F R E Y T
K J C E S I B Z M E
T D L B P R P M C O


Je to jedna ze základních datových struktur, takže teď aspoň víš o čem ten film vlastně je ;-)

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 21 říj 2012 16:23
od Sender
To není blábol ! Tazatel používá dynamické pole(nejprve je potřeba SetLength ). To co jsi napsal je statické....

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 21 říj 2012 21:02
od faraon
"Error 201: Range check error." v Turbo Pascalu

Obávám se, že SetLength() se v Turbo Pascalu nevyskytuje :cry:

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 21 říj 2012 22:37
od Sender
Pravda,standardně ne,ale existují knihovny třetích stran který to řeší.

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 22 říj 2012 09:16
od faraon
Jasně že knihovny třetích stran existují, po webech začátečníků, co si po půl roce myslí že umí programovat, se jich válejí stovky, určitě budou všechny stoprocentně odladěné a multiplatformní, navíc jasně vidím jak si je školáci po třech lekcích instalují... V Turbo Pascalu si člověk holt musí vystačit s GetMem() ;-)

Re: "Error 201: Range check error." v Turbo Pascalu

Napsal: 18 lis 2012 16:57
od Lucinka_BUBU
Děkuji Vám za odpovědi.

Stejně nevím, o co se jedná, ale zjistila jsem, v čem mám chybu, tak uzavírám diskuzi.

Faraone měl jsi pravdu, takhle se se začátečníkem nemluví... ale půl roku teda ještě neprogramuji, já jsem s tím právě teď začala...