Почему я получаю “Слишком много локальные константы” ошибка?

Для этого вы можете использовать опцию -S для git log :

git log -S'bar' -- foo.rb

Этот поиск текста bar в файле foo.rb

[1112 ] если вы хотите выполнить поиск по всем разным ссылкам, которые вы можете выполнить: git log -G'bar' -- foo.rb

Когда -S или -G найдет изменение, покажите все изменения в этом наборе изменений, а не только файлы, которые содержат изменить.

blockquote>

ПРИМЕЧАНИЕ : Этот поиск чувствителен к регистру .

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

git log -i -S'bar' -- foo.rb

ПРИМЕЧАНИЕ 2 : поиск выполняется только в вашей текущей ветви.

Если вы хотите выполнить поиск по всем ветвям, вам следует добавить флаг --all

Притвориться, будто все ссылки в refs / вместе с HEAD перечислены в командной строке как.

blockquote>

Полная команда будет такой:

git log --all -i -S'bar' -- foo.rb

Вывод будет примерно таким:

$ git log --all -i -S'bar' -- foo.rb

commit 53106e9cd319a2d8f960a3bbf2731acd0699a54f (feature/x)
Author: name 
Date:   Fri Jan 18 13:59:32 2019 +0100

    Added word

5
задан Jens Mühlenhoff 26 October 2013 в 11:53
поделиться

6 ответов

Определенный Win32, могли константы быть от всех включенных единиц.

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

Да это сосет, но это - одна из функций попытки отладить внутренние ошибки компилятора BorlandCodeGaembarcadero.

3
ответ дан 14 December 2019 в 13:51
поделиться

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

Я создал бы выделенные стандартные программы, которые назовут для каждой части в FormCreate вместо этой крупной вашей сумки. - SQLParseInit
- cppParseInit
- pasParseInit
- CodeOutPutInit <-+++++ много констант там

И посмотрите, вызывает ли 1 в особенности проблемы.

И это было бы не плохо, чтобы создать минимальный случай, с как можно меньшим количеством сторонних зависимостей, позволить другим воспроизводить его и видеть, является ли это действительно ошибка или просто плохой код.
И также удалите те $IFDEF... Просто предоставьте фактический код, который вызывает это поведение без всей помехи.

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

3
ответ дан 14 December 2019 в 13:51
поделиться

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

François благодарит, но я действительно осуществлял рефакторинг код и все еще получал ошибку. Если это создало с D2007 и не делает с D2009, который кажется подозрительным мне.

procedure TOutputCodeForm.FormCreate(Sender: TObject);
begin

   if ( IsWindowsVista() )  then
   begin
      SetVistaFonts( self );
   end;

   SetupParser( SQLParser, gstrSQLParser, '' );
   // unresolved jmu - have to comment this out for now or delphi will complain
   // that there are too many literals in this file. Seems like a delphi bug
   // since this builds in older versions, and I've already refactored it.
   //SetupParser( cppParser, gstrCPPParser, '' );
   SetupParser( pasParser, gstrPasParser, ExtractFilePath( Application.ExeName ) + 'pasScript.txt' );
   SetupCodeOutput( poCodeOutput );

   SQLParser.AttachEditor( poCodeOutput );
   cppParser.AttachEditor( poCodeOutput );
   pasParser.AttachEditor( poCodeOutput );

   poCodeOutput.Lines.AddStrings( poCode );

   if ( CodeType = ctCPP ) then
      poCodeOutput.ActiveParser := 2
   else if ( CodeType = ctPascal ) then
      poCodeOutput.ActiveParser := 1
   else
      poCodeOutput.ActiveParser := 3;

   MainForm.AdjustFormSize( self, 0.95, 0.75 );
end;
0
ответ дан 14 December 2019 в 13:51
поделиться

Я посмотрел бы на строку "poCodeOutput. Опции: = [xx....]" Похож на слишком много опций в наборе на одной строке кода.

Проводите ту одну строку и посмотрите, получаете ли Вы ошибку.

0
ответ дан 14 December 2019 в 13:51
поделиться

От справки:

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

Поэтому, возможно, попытайтесь поместить некоторые из тех строк в consts или других переменных (не локальный).

0
ответ дан 14 December 2019 в 13:51
поделиться

Учитывая проблему только происходит в одном из Ваших компиляторов Delphi / установки, я задаюсь вопросом, если это связано с проблемой установки компонента. Вы попытались просто создать каноническую форму, которая использует статические версии всех компонентов, которые Вы создаете динамично? (TSyntaxMemoParser, и т.д.).

(Вы выполняете те версии Delphi на отдельных машинах / btw VM? Может сохранить МНОГО стычки, если Вы используете много сторонних компонентов и больше чем одну версию Delphi),

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: