Алексей Бирюков
25.10.2003, 18:44
Забавная вещь случилось, можа кто прокомментирует. Я уже тут как то писал, что разрабатываю вьюер партий для игры Го. Кусок парсера сначала выглядел так:
if ( "A"<= chr && chr <="Z" ){
...
}
...
} else if ( chr == "" ){
pEnd();
}
Это не работало. При отладке выяснилось, что пустая строка проваливается внутрь первого условия. Ну ладно, переделал:
if ( "A"<= chr && chr <="Z" ){
if ( chr == "" ){
pEnd();
}
else{
...
}
...
А как то перетащил на другой комп и облом. При выяснении оказалось, что на этот раз пустая строка первому условию не удовлетворяет! Дальнейшие эксперименты показали, что на двух машинах с ХР код работает так, а на других двух (NT) сяк.
Короче, теперь код выглядит так:
if ( "A"<= chr && chr <="Z" ){
if ( chr == "" ){ // end of parsing, WinXP
pEnd();
}
else{
...
}
...
} else if ( chr == "" ){// end of parsing, WinNT
pEnd();
}
Интересно, много еще таких подлянок?
if ( "A"<= chr && chr <="Z" ){
...
}
...
} else if ( chr == "" ){
pEnd();
}
Это не работало. При отладке выяснилось, что пустая строка проваливается внутрь первого условия. Ну ладно, переделал:
if ( "A"<= chr && chr <="Z" ){
if ( chr == "" ){
pEnd();
}
else{
...
}
...
А как то перетащил на другой комп и облом. При выяснении оказалось, что на этот раз пустая строка первому условию не удовлетворяет! Дальнейшие эксперименты показали, что на двух машинах с ХР код работает так, а на других двух (NT) сяк.
Короче, теперь код выглядит так:
if ( "A"<= chr && chr <="Z" ){
if ( chr == "" ){ // end of parsing, WinXP
pEnd();
}
else{
...
}
...
} else if ( chr == "" ){// end of parsing, WinNT
pEnd();
}
Интересно, много еще таких подлянок?