![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Если уж совсем точно:
"One or more lines were too long and have been truncated" - выдаётся редактором среды при попытке обработать файл со строками длиннее, кажется, 4096 символов. Это есть в любой Delphi и относится только к работе текстового редактора IDE. Это не имеет отношения конкретно к строковым константам, а ссылается на строки в файле вообще. Т.е. если вы весь код в .pas файле запишете в одну строку (которая получится длиннее 4096 символов), то получите такую ошибку, даже если строк вы в коде не используете. "String too long" или "String literals may have at most 255 elements" - выдаётся компилятором Delphi при обработке строковых литералов длиннее 256 символов. К самой строковой константе или строке это не имеет никакого отношения. Она ограничивается только естественными пределами.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
![]()
он пишет не 4096 а 1023...но это не суть по итогам обсуждения я так понимаю вариантов у меня нет??
![]() |
![]() |
![]() |
![]() |
#13 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
В результате обсуждения сказано,что Вам достаточно ваши 3500 строк разбить по десятку-два слов в одной строчке программного кода и всё должно пройти компиляцию. Код:
Допустим, если в ваших строчка не может быть строк длинее 10 символов, тогда уместнее: Код:
А вообще, неужели удобно такую огромную массу в код засовывать? неужели во внешнем файле или ресурсе это было не проще хранить, редактировать, грузить и т.д. и т.п... Последний раз редактировалось Serge_Bliznykov; 16.01.2011 в 23:57. |
|
![]() |
![]() |
![]() |
#14 | |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#15 | ||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
Домашнее задание: объяснить почему.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось GunSmoker; 17.01.2011 в 01:12. |
||
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
![]()
ну на самом деле помогло компилятор пропустил все заработало!!!спасибо огромное!!а домашнее задание я бы послушал с удовольствием так как я сам его сделать не смогу!!
![]() |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Увеличение размера: потому что ShortString (а любая строка вида String[20] есть ShortString) занимает фиксированный объём в памяти вне зависимости от размера ваших данных.
Иными словами, если в String[20] записать строчку 'xyz', то у вас будет занято 20 + 1 = 21 байт памяти (1 байт на длину строки), даже хотя вам надо всего 3 байта на данные. Если же вы используете String, то у вас занято только 3 + 4 + 4 = 11 байт памяти (4 байта на длину и ещё 4 - на счётчик ссылок). Замедление выполнения: ShortString не является нуль-терминированной строкой и не совместима ни с String, ни с PChar. Поскольку все строковые подпрограммы принимают либо String, либо PChar, то перед использованием строка типа ShortString должна быть сконвертирована в String или PChar, что... занимает время (на выделение памяти для новой строки, да плюс копирование блока памяти и настройка строки). К примеру, ShowMessage(S) - если S - это String, то действий никаких нет: S передаётся в ShowMessage как есть. Если же S - это ShortString, то прежде чем можно было вызвать ShowString, компилятор вынужден вставлять скрытый вызов типа UStrFromString (в каждой версии Delphi разный), который преобразует строку ShortString в String. Если подобное обращение к ShortString встречается в цикле... ну, вы только что здорово насорили. Это уже не говоря про то, что ShortString не может хранить Unicode символы!
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
![]()
Ёшкин кот!дико извиняюсь за нестандартную лексику но просто другого ничего не пришло в голову!!спасибо всем за полезную информацию и за помощь в написании программы!!результат достигнут тему можно закрывать!!
|
![]() |
![]() |
![]() |
#19 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
GunSmoker, спасибо, познавательно. Учту на будущее.
NB. Цитата:
Но в целом я согласен с Вашим замечанием. (и вообще, на самом деле всё не так, как кажется ![]() |
|
![]() |
![]() |
![]() |
#20 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
А вот отсутствие совместимости с String/PChar и отсутствие поддержки Unicode в D2009+ - вполне реальные факторы. Потому что можно забыть, что это у тебя ShortString, и ненароком "чего не то" с ней сделать, что ты обычно делаешь с обычной строкой. И долго-долго потом искать глупую ошибку. В общем, грабли на пустом месте себе лучше не создавать. В конце-концов, это backward-compatibility only.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли написать игру на Delphi типа S.T.A.L.K.E.R и GTA4 | VintProg | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 71 | 21.09.2011 04:03 |
Отображение значений переменных типа float и double(Языки Pascal и C) | Сырно | Помощь студентам | 3 | 17.10.2010 18:37 |
Сохранение и загрузка в файл текстовых значений и значений типа Boolean | krikaved | Общие вопросы Delphi | 1 | 16.03.2010 07:53 |
Как можно взять кусок чужой страницы и засунуть его на свою? | wis239 | PHP | 7 | 12.02.2009 18:11 |
можно ли DBF засунуть в ADOQuery? | Abbatik | БД в Delphi | 3 | 28.01.2008 10:26 |