Vb 6 Сделайте .exe разные результаты для отладчика - PullRequest
1 голос
/ 21 октября 2008

Я сравниваю результаты, полученные при использовании «Make .exe», с тем, когда я запускаю точно такой же процесс, используя те же переменные, хотя и отладчик IDE vb 6.

Я пробовал массив различных опций компилятора, но безрезультатно.

Итак, мой вопрос: почему я получаю разницу между отладчиком и «Make .exe»? Вы когда-нибудь сталкивались с чем-то подобным, и если да, то нашли ли вы исправление?

программа берет большой файл подсчетов автомобилей за промежуток времени и усредняет их по 15 минутам за день за месяц для каждого маршрута. Это исключает определенные записи в зависимости от того, есть ли за пределами стандартное отклонение и другие статистические алгоритмы для исключения значений. к сожалению, много кода для публикации ...

Ответы [ 4 ]

3 голосов
/ 21 октября 2008

Debug.Assert и Debug.Print Оператор не скомпилирован в двоичный файл. Иногда я использую это, чтобы определить, нахожусь ли я в IDE или скомпилированном двоичном файле:

On Error Resume Next
Debug.Print 1/0
If Err=0 then
  'Compiled Binary
else
  'in the IDE
End if

Будьте осторожны с такими утверждениями:

Debug.Assert( DoSomeThingImportend() )

В скомпилированной версии этот оператор не будет выполнен.

0 голосов
/ 12 ноября 2012

В большинстве случаев различия между скомпилированной отладочной версией возникают из-за проблем с синхронизацией, отладочная версия немного медленнее и может пропустить некоторые другие инициализированные значения или не длится достаточно долго для завершения другой части процесса

вы можете проверить это, добавив несколько пауз между различными частями кода часто дополнительный DoEvent делает свое дело, или позволяет всплыть некоторым сообщениям msgbox (вы можете также сравнить промежуточные результаты скомпилированной версии с отладочной версией)

попытаться выяснить, какая часть вычисления дает неправильный результат, и разделить эту часть на отдельную функцию

часто разница возникает непосредственно в начале (без инициализации времени) или где-то во время процесса до конца (запаздывая в другом процессе)

0 голосов
/ 14 октября 2010

VB 6 довольно солидный, когда дело касается согласованности компиляции. Но одна из возможностей может быть, если вы как-то полагаетесь на события и используете doevents для получения прибыли.

Эта комбинация может вести себя совершенно по-разному в IDE и скомпилированном коде.

Я думаю, что нет, но, эй, есть что проверить.

0 голосов
/ 21 октября 2008

Я обнаружил, что в некоторых (очень редких) случаях могут быть различия в скомпилированном и отладочном коде для VB6.

Возможно, стоит попробовать опцию «Compile to P-Code» - иногда это дает несколько отличные результаты от нативного кода. Вы найдете его на вкладке «Свойства проекта» / «Компиляция».

Возможно, что если вы опубликуете свой алгоритм, мы сможем найти больше возможностей.

Редактировать: Поскольку вы не можете опубликовать алгоритм, я бы предложил постепенно разбивать алгоритм и пытаться выяснить, где именно находятся различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...