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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Lucinka_BUBU
Level 1
Level 1
Příspěvky: 90
Registrován: září 11
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod Lucinka_BUBU » 20 říj 2012 17:32

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

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 20 říj 2012 17:38

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]] ?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 20 říj 2012 19:32

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.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Sender » 20 říj 2012 19:43

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;

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 21 říj 2012 02:20

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 ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Sender » 21 říj 2012 16:23

To není blábol ! Tazatel používá dynamické pole(nejprve je potřeba SetLength ). To co jsi napsal je statické....

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 21 říj 2012 21:02

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

Obávám se, že SetLength() se v Turbo Pascalu nevyskytuje :cry:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Sender » 21 říj 2012 22:37

Pravda,standardně ne,ale existují knihovny třetích stran který to řeší.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 22 říj 2012 09:16

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() ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Lucinka_BUBU
Level 1
Level 1
Příspěvky: 90
Registrován: září 11
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod Lucinka_BUBU » 18 lis 2012 16:57

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


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů