Delphi 7 И Сборка Проекта -- Каждый Раз По Новому?

Тема в разделе "Delphi - FAQ", создана пользователем erhe, 10 авг 2013.

  1. erhe

    erhe Well-Known Member

    Регистрация:
    5 мар 2013
    Сообщения:
    48
    Симпатии:
    0
    Здравствуйте.

    Вопрос, видимо, чисто академический, но мне немного неприятно ;)

    Имеется консольное приложение написанное на Дельфи 7. Оно обрабатывает входные данные и, если всё хорошо, формирует выходной файл. Или записывает ошибки, чтобы пользователь мог их обработать и повторить обработку.

    Данные прогоняются через множество проверок. Для пары проверок был написан такой код (упрощаю, оставляю только нужное):

    Код (Delphi):
    function Fun1(const AList: TStringList): Boolean;
    var
    dd: TDateTime;
    i: Integer;
    begin
    dd := TMyClass(AList.Objects[0]).DateR;
    . . .
    end;

    function Fun2(const AList: TStringList): Boolean;
    var
    dd: TDateTime;
    i: Integer;
    begin
    dd := TMyClass(AList.Objects[0]).DateDr;
    . . .
    end;
    Эти функции вызываются последовательно и только тогда, когда в списке есть данные. Т.е., всегда AList.Count >= 1.

    К чему пост. Через пару месяцев потребовалось поменять зашитую в приложение константу -- так сделано специально, чтобы ушлые пользователи не могли жульничать. Поменял значение константы, нажал "Save", потом "Build". И получил при работе ошибку в Fun1():
    при первом присваивании -- выход индекса на границы массива.

    Запустил в отладчике: да, в списке есть 1 значение; да, TMyClass().DateR -- возвращает в отладчик значение, но присваивания не происходит. Причем! Если закомментировать вызов Fun1() и сразу пойти в Fun2() -- всё работает на тех же данных!

    Ладно, посколько время не ждет, сделал изврат и обошел случай 1 элемента через if. Через пару месяцев снова поменял значение константы и, поскольку время было, вернул код к первоначальному без извращенного if -- всё работает.

    А потом было ещё веселее. Поменяли значение константы -- не работает. Вернули на то, что было -- не работает. Снова поставили нужное значение и после 4-5 нажатия на build -- заработало.

    Такое ощущение, что Дельфи 7 на одних и тех же исходниках собирает разные exe-шки! Бред просто какой-то...

    Кто стаким сталкивался или знает как лечить? Грустно наступать на грабли в отлаженном коде...
     
  2. nforumer

    nforumer New Member

    Регистрация:
    9 окт 2012
    Сообщения:
    1
    Симпатии:
    0
    Могу лишь сказать, что глюки есть в любых программах. Особенно в тех, которые пишем мы сами))) С подобными вещами сталкивался, но объяснения так и не нашёл. Иногда в таких случаях помогает перезагрузка Delphi (или другой среды разработки, так как глючит не только Delphi)))
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Если один и тот же код скопилировать два раза подряд, то exeшки уже побайтово будут отличаться. Сам с твоей проблемой не сталкивался. Но если код модульный, попробую удалить файлы *.dcu, может он их как закешировал и не думает перестраивать? (Просто предположение)
     
Загрузка...
Похожие Темы - Delphi Сборка Проекта
  1. cybert
    Ответов:
    0
    Просмотров:
    90
  2. Shouldercannon
    Ответов:
    0
    Просмотров:
    151
  3. antares
    Ответов:
    0
    Просмотров:
    432
  4. Луиза
    Ответов:
    0
    Просмотров:
    294
  5. avizer
    Ответов:
    5
    Просмотров:
    726

Поделиться этой страницей