[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bizarre Error
From: |
pand9613 |
Subject: |
Bizarre Error |
Date: |
Wed, 12 Feb 2003 15:30:01 +1100 |
User-agent: |
Internet Messaging Program (IMP) 3.0 |
Heres an interesting one:
I created a menu system to read in all the files in a directory and then list
them 10 at a time allowing users to change pages or to select a file. As part
of my error checking i use the input string option to make the user input as a
string. To turn the users string input into a numerical input i used num2str.
If the input is not numeric this returns an empty matrix which i can then act
on, in this case returning to the top of the program. Now if i entered in
say "hfdlas" (any erroneous string) in the user input i get the correct
response. Also with "as576gf" (an erroneous alphanumeric string). However if i
enter in "23dsjk" then i get parse errors when the code returns to the top.
>From everything i can tell this should happen since from the top of the file
nothing is affected by the user input.
I check the outputs of all lines and enterering "4sdjhg" is identical to
entering "kjdhsf4" ie str2num on both produces an empty matrix and thus results
in identical program flow and in no variables being redefined. So how is it
that one produces an error while the other does not?
Cheers,
Peter Anderson
This is the error:
-------------------------------------------------------------
parse error:
>>> load -force materials/B45505.mtl
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 35
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 36
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 37
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 38
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 39
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 40
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 41
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 42
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 43
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 44
parse error:
>>> load -force materials/B45505.mtl
error: invalid character `' (ASCII 0) near line 49, column 45
parse error:
>>> load -force materials/B45505.mtl
error: evaluating for command near line 23, column 3
error: evaluating if command near line 11, column 2
error: evaluating while command near line 10, column 1
error: called from `getmatv2' in file `/composite/getmatv2.m'
error: called from `viewmat' in file `/composite/viewmat.m'
error: called from `opt' in file `/composite/opt.m'
-------------------------------------------------------------
This is the code that produces the error:
-------------------------------------------------------------
function [Cmat]=getmat
global Ex
Cpage=1;
filelist=readdir('Materials');
mtlfiles=fnmatch('*.mtl',filelist);
mtlfiles=find(mtlfiles==1);
filelist=filelist(mtlfiles,:);
while Ex==0;
if isempty(filelist)==1
disp('No saved files')
return
else
Cpage_start= ((Cpage-1)*10+Cpage);
if (Cpage*10)>length(mtlfiles)
Cpage_finish=length(mtlfiles);
else Cpage_finish=(Cpage*10);
end
disp('\n* Available Files *\n')
matlist='';
for i=Cpage_start:Cpage_finish
loadline=['load -force materials/',filelist(i,:),' matname'];
eval(loadline);
matlist=[matlist;[num2str(i),'. ',matname]];
end
disp(matlist)
disp(sprintf('\n%.0f of %.0f Page(s)\n',Cpage,ceil(length
(mtlfiles)/10)))
disp('Enter material number or (<>)to change page:\n\n
(b)ack\n (e)xit\n')
userin=input('>>','s');
[h,w]=size(userin);
if userin=='b'
return
elseif userin=='e'
Ex=1;
return
elseif userin=='>'
Cpageok=Cpage+1;
if (Cpageok*10-10)>(length(mtlfiles)) | Cpageok<=0
disp('\nInvalid page number\n')
else Cpage=Cpageok;
continue
end
elseif userin=='<'
Cpageok=Cpage-1;
if (Cpageok*10-10)>(length(mtlfiles)) | Cpageok<=0
disp('\nInvalid page number\n')
else Cpage=Cpageok;
continue
end
elseif userin==''
continue
else userin=str2num(userin)
if userin==[]
disp('Invalid Input')
continue
end
if userin>length(mtlfiles)
disp('No such Material')
continue
else
Cmat=[filelist(userin,:)];
return
end
end
end
end
-------------------------------------------------
This mail sent through IMP: www-mail.usyd.edu.au
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
- Bizarre Error,
pand9613 <=