strstr () in a while-loop

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/04/2003 at 07:11, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   7.303 
Platform:   Windows  ;   
Language(s) :   C.O.F.F.E.E  ;

---------
Hi !
I want to parse a string and therefore seek any ">" in it. But unfortunately, these C.O.F.F.E.E. lines don't work:
var MyString = "<tag>text</tag>";
var pos = 0;
var chpos = 0;
while (strchr (MyString,"<[0]",pos) != -1){
chpos = strchr (MyString,"<[0]",pos) ;
println (tostring(chpos));
pos = chpos;
}
The while loop turns into an infinite loop and the value of pos/chpos remains at 0, which is the first position of "<" in the given string.
I guess, C.O.F.F.E.E. forgets to update the pos/chpos-variables and this might be caused by using referenced values instead of copies. 
Does anyone have a clue to solve this ?
thanx

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/04/2003 at 10:08, xxxxxxxx wrote:

Why are you searching for "<[0]"?
It will never find that string in the MyString variable.
Shouldn't you just be searching for "<"?
Or, at the very least "<"[0], if this is, at least, valid.
Also, you said you were looking out for ">" but you never search for it.

Rui Batista

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/04/2003 at 11:33, xxxxxxxx wrote:

Sorry, i had to write the code above ex cognito, so it was a bit misleading...
But my problem remains... here is the corrected code, which still causes an infinite loop instead of printing all occurences of "<"...
Btw, you have to use "<"[0] to search for "<" with strchr (), because it expects an unicode char... I had the same problem using strstr () instead.....

var MyString = "<tag>text</tag>";
var pos = 0;
var chpos = 0;

while (strchr (MyString,"<"[0], pos) != -1){
chpos = strchr (MyString,"<"[0], pos) ;
println (tostring(chpos));
pos = chpos;
}
I appreciate your help a LOT !
thanx....

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/04/2003 at 11:47, xxxxxxxx wrote:

Just use this:

  
while (strchr (MyString,"<"[0], pos) != -1){   
chpos = strchr (MyString,"<"[0], pos) ;   
println (chpos);   
pos = chpos+1;   
}  

You were starting the search always from the same place, hence the infinite loop. With pos=chpos+1; you will start on the next character.
Also, you don't need the tostring to print chpos.
Was this what you needed?

Rui Batista

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/04/2003 at 13:13, xxxxxxxx wrote:

Thanx a lot Rui...
That was really a stupid mistake, but after having written some dozen lines of code, one can hardly free his mind to eliminate such errors...