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 
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...