ShIvADeSt
Moderator | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Dim2004 Цитата: Ну, это не ко мне, я просто объясняю тов. Larry, почему у него AV лезут. Кроме того, даже с Randomize вероятность выпадения 0 равной нулю не становится. | Я и не утверждал, что вероятность станет равной нулю Я все таки немного Паскаль знаю . Код: a:=Random(Length(s)+1); s[a]:=b1; | угу баг заключается в следующем, что если рандом возвращает ноль, то при попытке вызова a1:=s[a] где а=0 в переменную типа char пишется не символ, как должно а ЧИСЛО. Естественно AV. Как сказал Dim2004 Цитата: Следует написать Random(Length(s)) + 1. | А еще лучше (ИМХО и правильнее) вычисление Length(s)+1 поместить в переменную и потом рандом уже вызывать относительно нее. Кстати еще баг нашел в a:=Random(Length(s)+1); результат может возвратить значение БОЛЬШЕЕ чем длина строки, тогда при попытке прочитать символ за пределами массива (а строка это массив символов) так же может выдать AV.
---------- И создал Бог женщину... Существо получилось злобное, но забавное... |
|