Delphi XE - Все синие точки сдвинуты на одну строку вверх

Со вчерашнего дня все синие точки (скомпилированные строки) в моем исходном коде сдвинуты на одну строку вверх. Таким образом, первая точка начинается с «var», а не «begin», а последняя точка находится за одну строку до последнего «конца» функции.

Я удалил все файлы (начиная с DCU), кроме DPR, PAS, DFM и DPRJ, и перекомпилировал. Но точки все равно сдвинуты. Как я могу это исправить? Это делает пошаговую отладку практически невозможной.


person Z80    schedule 07.07.2011    source источник
comment
Очистка DCU и принудительная полная сборка — обычный способ исправить это. Возможно ли, что ваш редактор просматривает другую версию файла исходного кода в другом расположении файла, чем версия, используемая в проекте.   -  person David Heffernan    schedule 07.07.2011
comment
Дэвид что-то задумал! Вы можете легко проверить это, введя какую-нибудь некомпилируемую тарабарщину где-нибудь в файле, и посмотреть, жалуется ли компилятор. Если это не так, вы просматриваете один файл, а он компилирует другой.   -  person Cosmin Prund    schedule 07.07.2011
comment
Я просто удалил DCU во всех имеющихся у меня библиотеках и перестроил все с нуля. Точки все равно смещены. Это действительно странно!   -  person Z80    schedule 07.07.2011
comment
@Cosmin - я последовал вашему совету и поместил случайный текст прямо в строку, где находится первая точка (строка содержала только слово «var»), и компилятор сразу же пожаловался. Есть ли другой способ увидеть полный путь к файлу, который я сейчас редактирую?   -  person Z80    schedule 07.07.2011
comment
Является ли эта единица частью пакета? Используете ли вы пакеты времени выполнения? Вы выполнили поиск файлов, чтобы найти все файлы YourUnit.DCU?   -  person Cosmin Prund    schedule 07.07.2011
comment
@космин - да. это часть пакета (который я только что очистил и перестроил - просто для уверенности). Сейчас займусь поиском.   -  person Z80    schedule 07.07.2011
comment
Просто прекрасно. Я удалил DCU, связанный (на этот раз не все DCU в папке, а только этот конкретный DCU) с этим файлом и всей папкой «история» и перекомпилировал. Теперь точки смещены на две линии (вверх)!!!!!!!!!!!!!!!!!!!   -  person Z80    schedule 07.07.2011
comment
Возможно, файл поврежден, поэтому у вас нет правильной комбинации конца строки (# 13 # 10) в одной строке. Является ли ошибка одной строки во всем файле или она начинается где-то в середине устройства?   -  person ain    schedule 07.07.2011
comment
Попробуйте выполнить отладку без пакетов, чтобы убедиться, что вы используете свежую копию модуля. После завершения отладки перекомпилируйте пакет. Также выполните поиск и удаление BPL и DCP пакета, чтобы убедиться, что вы связываете актуальную копию.   -  person Cosmin Prund    schedule 07.07.2011
comment
@ain - ДА! Он начинается с определенного момента в моем файле. Все синие точки в порядке ВЫШЕ определенного места! Похоже на проблему с половинным вводом! Я отредактирую файл в шестнадцатеричном формате.   -  person Z80    schedule 07.07.2011


Ответы (3)


Возможно, файл поврежден, поэтому у вас нет правильной комбинации конца строки (# 13 # 10) в одной строке. Является ли «ошибка одной строки» во всем файле или она начинается где-то в середине устройства?

Начиная с Delphi 2007 (возможно, уже Delphi 2005) вы можете проверить концы строк в вашем коде, установив флажок Show line breaks в Tools - Options - Editor options - Source options. Разрывы строк выглядят так:

введите здесь описание изображения

Как видите, CR сам по себе не считается разрывом строки и нарушает синхронизацию точек исполняемой строки.

person ain    schedule 07.07.2011
comment
фиксированный! Большое спасибо. Разгадана еще одна загадка. Cosmin спасибо также за ваши предложения! - person Z80; 07.07.2011
comment
ain, я добавил еще немного информации по теме - person Tom Brunberg; 24.03.2017
comment
В ПОРЯДКЕ. ОП пометил вопрос с помощью delphi-xe, я думаю, что опция отображения разрывов строк уже доступна там. Это не в т.е. Delphi 7. - person ain; 24.03.2017
comment
Я только что проверил D2007, и он присутствует. Так что его добавили то ли в D2005, то ли в D2007. Он существует во всех более поздних версиях, по крайней мере, до сегодняшнего дня. - person Tom Brunberg; 24.03.2017
comment
Notepad++ может вводить такие полувводы - person Z80; 19.02.2021

Попробуйте закрыть Delphi, а затем удалить все *.identcache файлы.

У меня есть пакетный файл в корне каталога моих проектов Delphi, который рекурсивно удаляет все файлы identcache.

person Shannon Matthews    schedule 24.03.2017
comment
Не думаю, что они связаны с проблемой. Временный файл кэша, созданный механизмом рефакторинга для повышения производительности. delphi.wikia.com/wiki/Delphi_File_Extensions - person Z80; 24.03.2017
comment
@Turbine Извините, я понятия не имею, как это влияет на отладчик Delphi, только то, что он влияет. При использовании Delphi Berlin в течение последних двух недель отладчик иногда не синхронизировался с проектом. Программа игнорирует все точки останова, а синие точки находятся не в том месте. Удаление файлов identcache каждый раз устраняло проблему. - person Shannon Matthews; 25.03.2017
comment
@Turbine Это старый вопрос, но последний вопрос stackoverflow.com/questions/42991392/ был закрыт как дубликат этого. - person Shannon Matthews; 25.03.2017

Попробуй это:

  1. Откройте блок в редакторе с возможностью изменения кодировки, например Notepad++.

  2. Закодируйте/сохраните файл как ANSI.

  3. Откройте или перезагрузите файл в Delphi IDE.

Точки должны быть в правильном месте.

person santaklaus    schedule 07.02.2020
comment
Этот ответ неверен. Это не имеет ничего общего с сортировкой. Проблема связана с неправильным окончанием строки (только CR вместо комбинации CRLF). Эта информация содержится в предыдущих ответах, все из которых были написаны почти 4 года назад. (Кстати, Delphi IDE поддерживала контент, отличный от ANSI, задолго до версии XE.) - person Ken White; 07.02.2020