среда, 18 мая 2011 г.

"Неделя убита на ошибки компилятора", "или польлуйтесь проверенным временем ПО"

И вот. Началось всё с обновления, я всё таки согласился на надоедливое окошко " а не хотите ли вы обновить всё и вся?". Я подумал , а почему бы и нет? Ново, лучшее, новые фитчи удобства, клёво всё. Но вот буквально после пары дней я заметил что-то не ладное, мои программы идеальны по определению а работают почему-то не так, я перепроверял алгоритмы много раз они чисты как слеза не целованной девственницы. А работают не правильно и хоть ты убей. Вот уж я пошел по контрольным точкам в каждой строке и проверял состояние переменных каждый раз пока вдруг не обнаружил УДАСНУЮ ВЕСЧЬ!!! Скорее земля сомкнутся с небом чем такое может произойти, наверное в тот момент грохнула ещё какая-то атомная электростанция, может Юпитер обозлился на меня за нерегулярные жертвоприношения, но цикл for вышел за свои рамки! вот такой код, который я использую в среднем по 3-4 раза за час не работает
for i:=0 to 10 do
    for j:=0 to 10 do
       Memo1.Lines.Add(IntToStr(i*j));
Вот так вот ребята. Пришлось переписывать все свои for в whilы.
Ну думаю нет, это адская мука, ну на фиг это Делфю а напишу ка я жизнь на С++.  Фух, там хотя-бы for работает. Писать в наглую по такой же идее скучно, что-бы можно сделать? О! Придумал. А не буду ка я использовать стандартный класс std::Vector.  А научусь ка я самостоятельно работать с динамическими структурами данных на низком уровне.Будет у меня одномерный динамический массив, напишу ка я пересчёт показателей из одномерного в двуменый, пропишу способы доступа как свойства, в общем чтоб научится как положено. Но вот написал смотрю, не работает, мусор из памяти берёт, ну давай рыть что не так. И вуаля. 4 строчки кода.(FA и FB - динамические массивы, A - свойство досупа с пересчётом показателей к FA, B соответственно к FB )

ShowMessage(A[4][1]);//выдал мне -1 как положено
delete []B;
B = new int[50];
ShowMessage(A[4][1]);// и что бы вы думали? выдаёт 16492261(короче мусор)
A  никак не связано с B. Они тупо наезжают друг на друга в памяти.
причём портится только 1 элемент массива A, именно [4][1]. Соль ещё в том что раньше массив B был 4*4 то есть 16. Вот скажите как можно программировать, если не знаешь чему можно доверять а где ошибки компилятора? Как результат неделя убита.

1 комментарий:

  1. Завтра буду ставить 2005 Вижуал студию, и 2007 Борланд студию

    ОтветитьУдалить