Delphi, тихо обрезающий строковые литералы

вы можете использовать document.getElementsByClassName("message") и перебирать все элементы в NodeList

7
задан sharptooth 27 March 2009 в 12:20
поделиться

5 ответов

Это - ошибка Delphi 2009 со строковыми литералами, она должна повысить ту же ошибку как D2007.

Попробуйте последнюю версию Andreas, которого IDE Чинит пакет, предполагать для исправления этой ошибки. http://andy.jgknet.de/blog/?page_id=246

14
ответ дан 6 December 2019 в 11:53
поделиться

Строковый литерал может быть только 255 символами долго. Не уверенный, почему они сохранили это ограничение. Но можно решить его с помощью нескольких литералов:

Memo1.Lines.Add('i have 128 chars' + 'i also have 128 chars').
1
ответ дан 6 December 2019 в 11:53
поделиться

Я соглашаюсь с Gamecat, однако если бы Ваш контакт со строкой, настолько большой, я повредил бы его в muliple строки для помощи в чтении/редактировании.

если Вы - LITTERALLY, пытающийся создать 257 "a" затем, почему бы не использовать функцию DupeString в единице StrUtils?

Memo.Lines.Add( DupeString('a',257) );

Намного легче читать, и поддержать позже. Если Вы делаете это в цикле и поэтому волнуетесь по поводу производительности, то присваиваете функциональный результат локальной переменной и используете переменную.

var
  sLotsOfAs : string;
  ix : integer;
begin
  sLotsOfAs := DupeString('a',257);
  for ix := 0 to 1000000 do
    Memo.Lines.Add( sLotsOfAs );
end;
2
ответ дан 6 December 2019 в 11:53
поделиться

Я не знаю о D2009, но под Delphi 6, по крайней мере, строковые литералы ограничены 255 символами, и компилятор диагностирует ошибку.

0
ответ дан 6 December 2019 в 11:53
поделиться

В Delphi 2007 я добираюсь:

[DCC Error] Unit1.pas(29): E2056 String literals may have at most 255 elements

В Delphi 5 я добираюсь:

[Error] Unit1.pas(29): String literals may have at most 255 elements

Если поведение D2009 состоит в том, как Вы описываете, то две вещи приходят на ум:

1 - Они развернули предел на # символов в строке, но TMemo может все еще только принять до 255.

или

2 - Это - простая ошибка

До предотвращения его единственная вещь, о которой я могу думать, состоит в том, чтобы сделать regex для поиска этих строк в.PAS файлах.

0
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

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