| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Ошибки программы на 2 Корке |
| Автор: Canada 25.4.2009, 03:15 |
| Программа моя вообще не работает на 2 ядрах, проверял - 100%. Это виноват Делфи 7? Т.е. запускаю на 1 ядерных пнях-селеронах - все гуд. Запускаю на 2-х ядрах - косяки. Отключал 1 ядро на Корке - никак. Обновлятся до 2009 надо? |
| Автор: skyboy 25.4.2009, 09:32 |
не запускается и ничего не сообщает? выбрасывает сообщение про Exception? пишет в системный журнал о "неисправимой ошибке"? что? |
| Автор: kami 25.4.2009, 12:44 |
Я работаю в D7. На машинах с одним ядром и с двумя. Глюков нет. Вывод - глюки в коде. Чтобы понять, что за глюки - ответь на вопросы skyboy. |
| Автор: Canada 25.4.2009, 16:11 | ||
Нет, вы меня не правильно поняли. Ни Эксепшенов ничего более подобного , т.е. ошибок работы с системой нет. Есть ошибки связанные с самой программой. Программа как будто бы перескакивает через куски кода, или выполняет его быстрее чем получены нужные результаты. Так, например, у меня там постоянно ошибка, что данные, переданные в переменную I не являются числом. Т.е. в программе есть обработка текста, потом, например, текст "1000" путем StrToInt превращается в число 1000, с которым идут операции и математические действия дальше. Но тут начинают лететь в сообщениях об ошибках вообще какие-то левые числа, левые данные. Т.е. например что "10=1000" не является integer, ясное дело, что надпись "10=1000" это не число, хотя бы из за знака "=". Откуда это все? Т.е. вылетают в ошибках, как бы промежуточные результаты вычислений, которых на данном месте быть не должно вообще. Или программа не дождавшись получения результатов, начала работать дальше. И такое только на 2 CoreDuo. На Пнях-Селеронах такого нет. |
| Автор: CodeMonkey 25.4.2009, 18:06 |
| Это значит, что у вас в коде косяки. Просто на других машинах из-за каких-либо особенностей вы эти косяки не заметили. Вот и всё. Поэтому нужно не на процессор пенять и не версии Delphi подбирать, а привести код и тогда можно будет разобраться, где у вас ошибка. А ещё лучше - сами понавставляйте в программу логгинг - всё и будет видно как на ладони: кто, где, когда и зачем. |
| Автор: kami 25.4.2009, 18:35 |
| Canada, не в обиду будет сказано, просто навеяло своими вчерашними мыслями после "бодания" со своей программой: "Моя программа неправильно работает в Vista. В XP и ниже работает правильно, а в Vista - нет. Когда MS сделает Vist-у совместимой с моей программой?" |
| Автор: Canada 26.4.2009, 21:27 | ||
| Нет! никаких обид! Я же учусь! Все ваши комментарии очень важны! Просто меня это удивило. Да и самомнение у меня не зашкаливает.
Это как? Программа то результы выдает. И они после проверок совпадают. А проверок около 100 000*количество машин 5 + - 1 ! Т.е. чтобы совпали примерно 100 000 результатов на 5 разных машинах, под XP, Vista. Это просто и удивило. Единственное различие - камень. Ну вежде работает, а именно на Коре 2 - нет. Вот и интересно стало. Код буду править по любому, но удивительно. |
| Автор: kami 26.4.2009, 21:32 |
| Повторюсь: программа "линейная", или использует дополнительные потоки? Потому что единственное, что могу предположить по - это отсутствие/неправильная синхронизация потоков |
| Автор: Canada 26.4.2009, 22:32 |
| Линейная..В общем, будем смотреть |
| Автор: CodeMonkey 27.4.2009, 09:56 | ||
Да ничего удивительного. Вот http://transl-gunsmoker.blogspot.com/2009/01/dllmain_04.html, когда один и тот же код (бажный) может работать верно, неверно или возбуждать AV в зависимости от того, как он скомпилирован. Аналогичные примеры можно подобрать и для смены железа/версии Windows - просто под рукой сейчас нет. |