Array Subscript Error
Author |
Message |
Dragon20942
|
Posted: Fri Nov 25, 2011 11:19 pm Post subject: Array Subscript Error |
|
|
What is it you are trying to achieve?
I am attempting to create a text file interactive save/load system for any future projects
What is the problem you are having?
Using the following file information: 2.4,6.3,4.2,8.4,0.0,0.0,0.0,0.0,0.0,0.0,
I am able to gain the desired results. However, once any post "." value becomes more than 1 digit, I get the following error message: "Array subscript is out of range." on line 26.
Describe what you have tried to solve this problem
Line 26 deals with the pre "." integer, therefore the value of that integer should not affect line 26, but line 31. I have thought about this for hours, and changed the code slightly.
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
<Answer Here>
Turing: |
%File Syntax: item.nItems,item.nItems etc.
type invSlot : %an inventory slot holds the type of item, and the amount
record
item : int
nItems : int
end record
var inventory : array 1 .. 10 of invSlot %10 inventory slots in inventory
var stream : int
var placeHolder := 1 %the string index of the beginning of each extracted value in the file
var slotNumber := 1 %the slot in which information is stored
var data : string %extracted information
for i : 1 .. 10
inventory (i ).item := 0 %init
inventory (i ).nItems := 0 %init
end for
open : stream, "save1.txt", get
get : stream, data
for i : 1 .. length (data )
if data (i ) = "." then %if a "." is detected
for j : placeHolder .. i - 1 %mark from the placeHolder to just before the "." (extracted values between "." and ",", and vice versa)
inventory (slotNumber ).item := strint (intstr (inventory (slotNumber ).item ) + (data (j ))) %item becomes length(placeholder) to length (i)
placeHolder := i + 1 %next variable begins after "."
end for
elsif data (i ) = "," then %repeated for "," but for inventory(i).nItems instead
for j : placeHolder .. i - 1
inventory (slotNumber ).nItems := strint (intstr (inventory (slotNumber ).nItems ) + (data (j )))
placeHolder := i + 1
slotNumber + = 1 %after every "," another slot is set
end for
end if
end for
for i : 1.. 10
put inventory (i ).item , " x "..
put inventory (i ).nItems
end for
|
Please specify what version of Turing you are using
4.1.1 |
|
|
|
|
|
Sponsor Sponsor
|
|
|
Tony
|
Posted: Fri Nov 25, 2011 11:28 pm Post subject: Re: Array Subscript Error |
|
|
Dragon20942 @ Fri Nov 25, 2011 11:19 pm wrote: I get the following error message: "Array subscript is out of range." on line 26.
Right before the faulty array access, print out the index that is attempted to be used. The actual value of the index might give you a clue as to why it's not what you expect it to be. |
Tony's programming blog. DWITE - a programming contest. |
|
|
|
|
Dragon20942
|
Posted: Fri Nov 25, 2011 11:42 pm Post subject: Re: Array Subscript Error |
|
|
Turing: |
for j : placeHolder .. i - 1
inventory (slotNumber ).nItems := strint (intstr (inventory (slotNumber ).nItems ) + (data (j )))
placeHolder := i + 1
end for
slotNumber + = 1 %after every "," another slot is set
|
Thanks Tony! |
|
|
|
|
|
|
|