Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
 Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Например, есть стандартная константа sLineBreak.
А как найти все остальные? Где их искать? В каком разделе справки, например?
7 янв 19, 19:08    [21779559]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46739

%BDS%\Sources\Win32\Sys\*

Posted via ActualForum NNTP Server 1.5

7 янв 19, 19:23    [21779564]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Гирлионайльдо
Member

Откуда:
Сообщений: 374
ctrl + левая кнопка мыши по константе. Рядом скорее другие будут видны. Или F1 когда каретка на имени константы стоит
7 янв 19, 19:26    [21779567]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
http://docwiki.embarcadero.com/RADStudio/Tokyo/e/index.php?title=Special:Search&search=predefined constant&profile=default
7 янв 19, 19:39    [21779576]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Гирлионайльдо,

Перед тем, как задать вопрос, я уже так делала, там только это
const
   sLineBreak = {$IFDEF POSIX} _AnsiStr(#10) {$ENDIF}
       {$IFDEF MSWINDOWS} _AnsiStr(#13#10) {$ENDIF};

других констант рядом нет
7 янв 19, 19:40    [21779577]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Dimitry Sibiryakov, такого пути (такой папки) нет
7 янв 19, 19:45    [21779581]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Gator, не нашёл там
7 янв 19, 19:48    [21779584]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
GunSmoker
Member

Откуда:
Сообщений: 3091
Мне кажется, это неправильный вопрос. "Мой дом имеет номер 15. Как узнать, какие ещё бывают номера домов?"

Задача конкретная есть?
7 янв 19, 20:47    [21779605]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
ma1tus
Member

Откуда:
Сообщений: 615
X11
Где их искать?
в секциях interface
7 янв 19, 20:51    [21779606]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
DimaBr
Member

Откуда:
Сообщений: 10808
X11
других констант рядом нет
есть, и достаточно много
7 янв 19, 20:58    [21779609]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
GunSmoker, да, именно так и звучит.
Чтобы не придумывать свой лисапет, так сказать.
7 янв 19, 20:58    [21779610]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
где-то ведь есть ещё константы типа разделитель-косая черта
7 янв 19, 21:02    [21779611]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
GunSmoker
Member

Откуда:
Сообщений: 3091
X11
GunSmoker, да, именно так и звучит.
Чтобы не придумывать свой лисапет, так сказать.


Лисапет не озвучен.
7 янв 19, 21:47    [21779631]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
defecator
Member

Откуда:
Сообщений: 39038
GunSmoker
X11
GunSmoker, да, именно так и звучит.
Чтобы не придумывать свой лисапет, так сказать.


Лисапет не озвучен.
Он хочет посмотреть, какие полезные (для неё) константы уже предопределены
7 янв 19, 22:53    [21779665]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Самые полезные константы, имхо, те, которые потенциально можно перевести на великая и могучая русская языка. Вот их и предлагаю изыскивать в первую очередь.))
7 янв 19, 23:05    [21779669]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46739

X11
где-то ведь есть ещё константы типа разделитель-косая черта

Открываешь справку по юниту, например, SysUtils. И, внезапно, видишь список классов,
функций, переменных и констант. То же самое и по System, Classes и остальным.

Posted via ActualForum NNTP Server 1.5

7 янв 19, 23:05    [21779670]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Вот ещё нашёл:
DriveDelim
PathDelim
PathSep
8 янв 19, 11:37    [21779804]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Часть констант можно найти в TFormatSettings, например, DateSeparator, TimeSeparator, ListSeparator и т.д.
8 янв 19, 11:39    [21779805]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
X11
DateSeparator

Это не может быть константой. Оно же зависит от локали + в разных RFC разные правила
8 янв 19, 12:14    [21779823]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3958
Как правильно заметили выше -- надо отталкиваться от задачи. Например, если постоянно требуется разделитель -- то искать его в делфи. Или если требуется получить список файлов -- то опять же искать реализацию в делфи. Как раз в последних версиях (XE) много всяких мелочей добавилось, для которых раньше надо было свои велосипеды писать.
8 янв 19, 13:19    [21779843]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
X-Cite
Это не может быть константой.


это неважно, и sLineBreak тоже зависит от платформы, вопрос в полезных мелочах
8 янв 19, 13:41    [21779849]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X11,

попробуй поищи по всем доступным файлам, и будет тебе ясность.
8 янв 19, 13:50    [21779854]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Поискать ЧТО?
8 янв 19, 14:18    [21779870]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X11
Поискать ЧТО?
все вхождения const в pas/inc файлах
8 янв 19, 14:22    [21779873]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
X11,

Пишешь "System." нажимаешь Ctrl+Space из списка выбираешь константы. Аналогично с "System.SysUtils.".
8 янв 19, 14:23    [21779875]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
к сожалению, там нет фильтра, а данных просматривать очень много и всё идёт вперемешку
8 янв 19, 14:30    [21779878]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
Какой в этом смысл?
Каждая константа привязана к конкретной сущности.
Когда касаетесь какую-то сущность тогда и используются константы.. При чем на 90% они будут описаны в хелпе.
Для своих сущностей пишутся свои константы
8 янв 19, 14:34    [21779883]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Василий 2
Member

Откуда:
Сообщений: 349
В самом деле. Искать константы просто для того, чтобы их где-нибудь применить? Ерунда какая-то.
Пиши код, выделяй свои константы, а потом прикидывай, могут они быть в Дельфях или нет.
9 янв 19, 11:42    [21780385]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
X11,

Вот еще очень полезная - EmptyStr и иже с ней.))
9 янв 19, 12:04    [21780412]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
для этого есть хелперы, например
if s.IsEmpty then
9 янв 19, 12:13    [21780433]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
X11,

На тебя прям не угодишь.)) К тому же хелперы есть не у всех строковых типов.
9 янв 19, 12:33    [21780459]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5142
Vlad F
X11,

Вот еще очень полезная - EmptyStr и иже с ней.))
Чем полезна EmptyStr?
9 янв 19, 12:44    [21780469]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
Да, у TCaption нету :(
9 янв 19, 12:45    [21780470]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5142
X11
Да, у TCaption нету :(
Так запили свой хелпер для TCaption, с оверлоадом и инлайнами
9 янв 19, 12:55    [21780483]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
хочу искаропки :)
9 янв 19, 12:58    [21780487]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Квейд
Чем полезна EmptyStr?

Ну как же, - с ней исходники выглядят куда как боле солидно, а при массовом применении
прямо таки устрашающе. Глядя на все это безобразие благолепие работодатель сразу
проникнется вашей очевидной крутизной и можно будет немедленно ставить вопрос о
всяческом повышении.))
9 янв 19, 13:43    [21780526]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
alekcvp
Member

Откуда:
Сообщений: 1249
X11
Да, у TCaption нету :(


Вот кстати, если тип объявлен как A = type of B; то в чём проблема к нему хелперы от B применять?... Всё равно же по факту тип - один и тот же?..
9 янв 19, 16:54    [21780811]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 416
alekcvp
X11
Да, у TCaption нету :(


Вот кстати, если тип объявлен как A = type of B; то в чём проблема к нему хелперы от B применять?... Всё равно же по факту тип - один и тот же?..


Дебилизм паскаля.
9 янв 19, 16:56    [21780813]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
ma1tus
Member

Откуда:
Сообщений: 615
Vlad F
Квейд
Чем полезна EmptyStr?

Ну как же, - с ней исходники
намного легче читаются "построчно", супротив перпендикулярно направленных апострофов. имхо
9 янв 19, 17:03    [21780832]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
Vlad F
Квейд
Чем полезна EmptyStr?

Ну как же, - с ней исходники выглядят куда как боле солидно, а при массовом применении
прямо таки устрашающе. Глядя на все это безобразие благолепие работодатель сразу
проникнется вашей очевидной крутизной и можно будет немедленно ставить вопрос о
всяческом повышении.))
Ну, кроме улучшения кармы, есть тут и практическая целесообразность. Строка по сути динамическая переменная, пусть даже она нулевой длины (т. е. ''), но какие-то ресурсы и время на её создание тратятся. EmptyStr создается однократно и её использование может немного улучшить производительность. Возможно для Windows компилятор сам оптимизирует работу с '', или на потери можно тупо забить, но вот для мобильных платформ это уже становится более актуально.
9 янв 19, 17:45    [21780905]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Василий 2
Member

Откуда:
Сообщений: 349
roschinspb
Ну, кроме улучшения кармы, есть тут и практическая целесообразность. Строка по сути динамическая переменная, пусть даже она нулевой длины (т. е. ''), но какие-то ресурсы и время на её создание тратятся. EmptyStr создается однократно и её использование может немного улучшить производительность. Возможно для Windows компилятор сам оптимизирует работу с '', или на потери можно тупо забить, но вот для мобильных платформ это уже становится более актуально.

Пруфы? Компилятор, который не оптимизирует операции с пустой строкой, должен быть стерт из реальности вместе с создателем, ибо оба идиоты.
9 янв 19, 18:03    [21780930]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
Василий 2
roschinspb
Ну, кроме улучшения кармы, есть тут и практическая целесообразность. Строка по сути динамическая переменная, пусть даже она нулевой длины (т. е. ''), но какие-то ресурсы и время на её создание тратятся. EmptyStr создается однократно и её использование может немного улучшить производительность. Возможно для Windows компилятор сам оптимизирует работу с '', или на потери можно тупо забить, но вот для мобильных платформ это уже становится более актуально.

Пруфы? Компилятор, который не оптимизирует операции с пустой строкой, должен быть стерт из реальности вместе с создателем, ибо оба идиоты.
Можешь смело самозабаниться на этой ветке. К сожалению я не могу опубликовать внутреннюю переписку, но смысл в общих чертах близок к тому, что лучше всегда явно указывать const в параметрах метода, если внутри он не меняется и к тому, что лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов.
Если взять себе за правило, то будет некоторое улучшение производительности. Во всяком случае в коде Fire Monkey это было строгое требование. Хотя не могу исключить и того, что единственным побудительным мотивом было ЧСВ насяльника Allen`а Bauer`а
9 янв 19, 18:31    [21780953]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
roschinspb
что лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов.

asm код же идентичен, или это чисто стандарт оформления кода?
9 янв 19, 19:28    [21780994]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Василий 2
Member

Откуда:
Сообщений: 349
roschinspb
К сожалению я не могу опубликовать внутреннюю переписку, но смысл в общих чертах близок к тому, что лучше всегда явно указывать const в параметрах метода, если внутри он не меняется и к тому, что лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов.
Если взять себе за правило, то будет некоторое улучшение производительности. Во всяком случае в коде Fire Monkey это было строгое требование. Хотя не могу исключить и того, что единственным побудительным мотивом было ЧСВ насяльника Allen`а Bauer`а


Капитан Очевидность рекомендации писал?
"лучше всегда явно указывать const в параметрах метода, если внутри он не меняется"
Для управляемых типов и записей - без комментариев, для простых - ну, чуть больше визуального порядка, хоть и вкусовщина.

"лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов"
Assigned и так редко кто ставит без нужды

И я так и не увидел контраргументов, в какой там Вселенной if s <> '' выполняется через создание новой строки длиной 0 и CompareStr s с нею. Так что самозабан пока что присуждается как раз тебе
9 янв 19, 19:45    [21781004]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
X-Cite
roschinspb
что лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов.

asm код же идентичен, или это чисто стандарт оформления кода?
Ну, тут возможны все варианты.
Может не на всех платформах идентичен или по крайней мере в первых версиях мобильных компиляторов так было, может и чисто личные предпочтения архитектора, но прикол в том, что сначала начали всё переделывать на Assign, а потом концепция изменилась.
9 янв 19, 19:47    [21781007]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
Василий 2
...я так и не увидел контраргументов, в какой там Вселенной if s <> ''...
Да не собираюсь я тут с тобой холивары, разводить пиши хоть идентификаторы на глаголице. Приведенные примеры из внутренних требований к оформлению кода.
9 янв 19, 19:59    [21781011]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
roschinspb
Ну, кроме улучшения кармы, есть тут и практическая целесообразность. Строка по сути динамическая переменная, пусть даже она нулевой длины (т. е. ''), но какие-то ресурсы и время на её создание тратятся. EmptyStr создается однократно и её использование может немного улучшить производительность. Возможно для Windows компилятор сам оптимизирует работу с '', или на потери можно тупо забить, но вот для мобильных платформ это уже становится более актуально.

Так понимаю, что в цитируемом имелась ввиду экономия на спичках в т.н. сегменте данных (или кода, смотря куда пустые строкм помещает используемый нами компилятор). Но, глядя на дальнейшее развитие дискуссии, я в ужасе, - парни, да я просто пошутил.
9 янв 19, 22:18    [21781072]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
http://docwiki.embarcadero.com/Libraries/Rio/en/System.SysUtils.EmptyStr
System.SysUtils.EmptyStr

Up to Parent: System.SysUtils

Delphi

EmptyStr: string = '';

C++

extern DELPHI_PACKAGE System::UnicodeString EmptyStr;

Properties
Type Visibility Source Unit Parent
variable public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils
Description

An empty string constant.

Included for backward compatibility only.
9 янв 19, 22:36    [21781082]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
Да прикол-то ещё в том, что это совсем даже не константа.
9 янв 19, 22:40    [21781086]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Kazantsev Alexey,

И, и?
9 янв 19, 22:42    [21781087]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
Vlad F
И, и?


If s = '' then halt;
005F826D 837DFC00 cmp dword ptr [ebp-$04],$00
005F8271 7505 jnz $005f8278
005F8273 E884F9E0FF call @Halt0
If s = EmptyStr then halt;
005F8278 8B45FC mov eax,[ebp-$04]
005F827B 8B15C0E86000 mov edx,[$0060e8c0]
005F8281 8B12 mov edx,[edx]
005F8283 E8700CE1FF call @UStrEqual
005F8288 7505 jnz $005f828f
005F828A E86DF9E0FF call @Halt0
9 янв 19, 22:52    [21781091]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Kazantsev Alexey,

Я таки никуя ничего не понял, что мы экономим, - сегмент данных, или кода? Или изливаем свою желчь?
9 янв 19, 23:24    [21781115]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
Vlad F,

В случае сравнения с конкретным/константным значением у компилятора нет необходимости ползать в память и вызывать метод сравнения. В случае с EmptyStr, как и с любой переменной, имеем всю эту прелесть.
9 янв 19, 23:33    [21781119]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Впрочем, про код я уже присмотрелся. Но это же не противоречит моему певоначальному обоснованию использования этой псевдоконстанты?))
И уж в любом случае не стоит, чтобы из нее ругаться.
9 янв 19, 23:39    [21781129]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
Vlad F
Но это же не противоречит моему певоначальному обоснованию использования этой псевдоконстанты?))

В доке, и по месту декларации, сказано: только для обратной совместимости.
9 янв 19, 23:57    [21781140]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Vlad F
Member

Откуда:
Сообщений: 480
Kazantsev Alexey,

И у меня сказано, ты что, до сих пор не понял о чем я?))
10 янв 19, 00:31    [21781148]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Док
Member

Откуда: Казань
Сообщений: 5906
Быстро же вы 3 страницы нафлудили :)

Глядя на тутошние мучения, лишний раз наслаждаюсь лазаревской справкой, для людей сделано.
10 янв 19, 00:33    [21781149]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
Дабы расставить все точки над Ё выкладываю тестовую программку
+
unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls;

const
  TestCount = 100000000;
type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FEmptyCount: Integer;
    FStrCount: Integer;
  public
    { Public declarations }
    procedure Test(const S: string);
    procedure TestAsEmptyStr;
    procedure TestLiteral;
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
var
  T2, T1: TDateTime;
begin
  T2 := Now;
  repeat
    T1 := Now;
  until T1 <> T2;
  TestAsEmptyStr;
  T2 := Now;
  Label1.Text := FormatFloat('0.000', (T2 - T1) * SecsPerDay);

  T2 := Now;
  repeat
    T1 := Now;
  until T1 <> T2;
  TestLiteral;
  T2 := Now;
  Label2.Text := FormatFloat('0.000', (T2 - T1) * SecsPerDay);
end;

procedure TForm2.Test(const S: string);
begin
  if S = EmptyStr then
    Inc(FEmptyCount)
  else
    Inc(FStrCount);
end;

procedure TForm2.TestAsEmptyStr;
var
  S: string;
  I: Integer;
begin
  for I := 0 to TestCount - 1 do
  begin
    S := EmptyStr;
    Test(S);
  end;
end;

procedure TForm2.TestLiteral;
var
  S: string;
  I: Integer;
begin
  for I := 0 to TestCount - 1 do
  begin
    S := '';
    Test(S);
  end;
end;

end.

Вопреки моим ожиданиям EmptyStr проигрывает по скорости в Win32, Win64, Android (Redmi 4x).
Таким образом, версии исходники выглядят куда как боле солидно и единственным побудительным мотивом было ЧСВ насяльника Allen`а Bauer`а внезапно находят своё подтверждение.
На этом отправляюсь в Картинка с другого сайта.
10 янв 19, 01:11    [21781153]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
GunSmoker
Member

Откуда:
Сообщений: 3091
roschinspb
Строка по сути динамическая переменная, пусть даже она нулевой длины (т. е. ''), но какие-то ресурсы и время на её создание тратятся.


Я извиняюсь, но строка нулевой длины - это nil, её вообще не нужно выделять. Но даже если строка не пуста, то ничего выделять опять не нужно, потому что строка будет хранится в уже готовом виде (вместе со служебным заголовком) в блоке констант. Счётчик при этом будет равен -1.

P.S. С мобилками, правда, не знаком, может там какие ужасы и понаворотили.
10 янв 19, 11:00    [21781348]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5142
Василий 2
"лучше использовать проверку <> nil вместо Assigned всегда кроме как для методов"
Assigned и так редко кто ставит без нужды
Я всегда использую Assigned. Что я делаю не так?
10 янв 19, 11:52    [21781393]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5142
Kazantsev Alexey
http://docwiki.embarcadero.com/Libraries/Rio/en/System.SysUtils.EmptyStr
System.SysUtils.EmptyStr

Up to Parent: System.SysUtils

Delphi

EmptyStr: string = '';

C++

extern DELPHI_PACKAGE System::UnicodeString EmptyStr;

Properties
Type Visibility Source Unit Parent
variable public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils
Description

An empty string constant.

Included for backward compatibility only.



Если поискать строку "EmptyStr" в cорцах RAD Studio, то во-первых у меня на XE4 туева хуча вхождений, а во вторых EmptyStr сплошь и рядом используется в firemonkey-модулях. На этом фоне странно смотрится "backward compatibility".
10 янв 19, 11:56    [21781398]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3167
Квейд
На этом фоне странно смотрится "backward compatibility"

Нет, на фоне "backward compatibility" странно смотрится вот это всё.
10 янв 19, 12:13    [21781418]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
Это же firemonkey. Чего вас удивляет?
10 янв 19, 13:40    [21781583]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
А есть константа для пробела?
17 янв 19, 15:20    [21787992]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X11
А есть константа для пробела?
Уж символ есть точно, и клавиша может быть (с кодом). А вот как этот код воспримут разные системы/устройства зависит от неба imho. Если это код(символ), значит у него есть длина.
_________
Вот пауза, например, в музыке. Она может быть разной длины. Ещё и фермата есть
17 янв 19, 15:39    [21788029]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
так речь именно о константе
17 янв 19, 15:49    [21788044]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
X11
так речь именно о константе

Зачем константа для пробела? Контекст задачи какой?
17 янв 19, 15:50    [21788048]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X-Cite,

Т.е. сишники, явисты, дельфисты и остальные - дураки У них ведь есть хотя бы VK_SPACE
17 янв 19, 16:00    [21788070]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
Gator
X-Cite,

Т.е. сишники, явисты, дельфисты и остальные - дураки У них ведь есть хотя бы VK_SPACE

Так контекст VK_SPACE какой? Нажатие клавиши пробел.
К символу пробел никакого отношения не имеет.
17 янв 19, 16:04    [21788078]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Василий 2
Member

Откуда:
Сообщений: 349
X11
А есть константа для пробела?

А какой именно пробел из десятков возможных тебя интересует?
17 янв 19, 16:07    [21788082]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
X-Cite
X11
так речь именно о константе

Зачем константа для пробела? Контекст задачи какой?


Использовать имя константы, а не ' '
17 янв 19, 16:24    [21788101]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X-Cite
Так контекст VK_SPACE какой? Нажатие клавиши пробел.
К символу пробел никакого отношения не имеет.
Нуу... Это меморандум,наверное.
Представь: на форме кнопка и едит.
Кнопка отправляет №, едит его принимает и заменяет на пробел (x20) или рисует прямоугольник. Клавы нет.
_____________________
Да даже все мы заявы писали и книжки читали! Ручка есть, бумага есть, пробелы есть...
17 янв 19, 16:25    [21788103]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
X-Cite
X11
так речь именно о константе

Зачем константа для пробела? Контекст задачи какой?


вместо
s1 + ' ' + s2


чтобы было так:
s1 + sBlackSpace + s2
17 янв 19, 16:26    [21788105]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
X11
X-Cite
пропущено...

Зачем константа для пробела? Контекст задачи какой?


Использовать имя константы, а не ' '
Да-да.
Меня всегда убивали секретарши, тупо "наступавшие" на пробел. Типа такое форматирование таблиц
17 янв 19, 16:29    [21788108]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1242
X11
вместо
s1 + ' ' + s2


чтобы было так:
s1 + sBlackSpace + s2

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

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

Контекстов задач много, под все константы не придумаешь.
17 янв 19, 16:45    [21788131]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
X-Cite
создайте свою константу


Само собой, что я это могу сделать.
Но прочитайте название темы.
17 янв 19, 16:51    [21788142]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Василий 2
Member

Откуда:
Сообщений: 349
Повторюсь
Василий 2
X11
А есть константа для пробела?

А какой именно пробел из десятков возможных тебя интересует?
17 янв 19, 18:21    [21788211]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
X11
X-Cite
создайте свою константу


Само собой, что я это могу сделать.
Но прочитайте название темы.

Всё, что не буква или цифра считается пробелом
EmptyStr
System.UITypes
TFormatSettings
TAlphaColorRec
System.UIConsts
Colors
System.Constants
17 янв 19, 19:00    [21788254]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
GunSmoker
Member

Откуда:
Сообщений: 3091
Константа нужна если использование литерала вместо неё может быть не понятно. Таким образом, имя константы служит комментарием. Также нужна, если значение может поменяться в будущем. Наконец, просто, чтобы не ошибиться при наборе. Сюда же входит сокращение длины.

Какую из этих целей решает гипотетический sWhiteSpace? Никакую.
17 янв 19, 19:33    [21788281]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
GunSmoker,

И вам Привет.
Фигня все это. На "суахили" ни белый, ни "черный" космос роли не играет.
Тем более их не интересует cRedShift
17 янв 19, 22:15    [21788340]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
Gator, т.е. ТС фигню спросил о predefined.
сегодня она pre, а завтра depricated



Gator,
17 янв 19, 22:19    [21788343]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
ain-2
Member

Откуда:
Сообщений: 654
Таки, не понял. Ужель в Дельфи нет такого, как в простом Лазарусе?

Картинка с другого сайта.
вчера, 05:43    [21788411]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Exteris
Member

Откуда: Новосибирск
Сообщений: 964
ain-2
Таки, не понял. Ужель в Дельфи нет такого, как в простом Лазарусе?

Есть конечно.
вчера, 07:33    [21788424]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
roschinspb
X11
пропущено...


Само собой, что я это могу сделать.
Но прочитайте название темы.

Всё, что не буква или цифра считается пробелом Картинка с другого сайта.
EmptyStr
System.UITypes
TFormatSettings
TAlphaColorRec
System.UIConsts
Colors
System.Constants


о!
и справка поприятней стала выглядеть
вчера, 12:15    [21788631]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12671
GunSmoker
Константа нужна если использование литерала вместо неё может быть не понятно. Таким образом, имя константы служит комментарием. Также нужна, если значение может поменяться в будущем. Наконец, просто, чтобы не ошибиться при наборе. Сюда же входит сокращение длины.

Какую из этих целей решает гипотетический sWhiteSpace? Никакую.


>>>Также нужна, если значение может поменяться в будущем
вчера, 12:15    [21788634]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3773
GunSmoker
Константа нужна если использование литерала вместо неё может быть не понятно. Таким образом, имя константы служит комментарием. Также нужна, если значение может поменяться в будущем. Наконец, просто, чтобы не ошибиться при наборе. Сюда же входит сокращение длины.
+ бывает нужна для уменьшения выделений памяти
вчера, 12:28    [21788650]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1974
GunSmoker
Какую из этих целей решает гипотетический sWhiteSpace? Никакую.
Не скажу за "гипотетический sWhiteSpace", а допустим гипотетический sSpaceCharacter - очень даже решает. Ибо это не non-breakable space (NBSP), не двойной пробел, и т.д. а именно пробел. И не надо ломать глаза и мосК вглядываясь в код и пытаясь понять что означает пустота между апострофами...
вчера, 14:45    [21788790]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
white_nigger,

Тебе тогда не константа нужна а функция.
function IsWhiteSpace(c: char): boolean;
вчера, 14:51    [21788794]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3707
white_nigger
sSpaceCharacter - очень даже решает. Ибо это не non-breakable space (NBSP)

Такую константу и называть надо правильно - sNonBreakableSpaceCharacter
вчера, 15:11    [21788816]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1974
rgreat
Тебе тогда не константа нужна а функция.
function IsWhiteSpace(c: char): boolean;
Ты о чём? При чём тут IsWhiteSpace (который возвращает true для нескольких символов) если мне нужен тупо пробел. Сравни код:
  //1.
  if Ch = sSpaceCharacter then...
  //2.
  if Ch = ' ' then...
Ты можешь быть уверен на что именно сравнивается во втором случае?

YuRock
Такую константу и называть надо правильно - sNonBreakableSpaceCharacter
Вообще не в кассу
вчера, 15:44    [21788861]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
GunSmoker
Member

Откуда:
Сообщений: 3091
white_nigger
Ты можешь быть уверен на что именно сравнивается во втором случае?


Да я только рад, что с таким кодом не работаю :D
вчера, 15:47    [21788868]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
white_nigger
Ты можешь быть уверен на что именно сравнивается во втором случае?

Если тебе важно убедиться что это пробел (или его варианты) то нужна функция: if IsWhiteSpace (Ch) then
Если уж тебе не важен юникод, но важно четкое понимание "на глаз" - тогда пиши: if Ch = #32 then
вчера, 16:54    [21788934]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1974
rgreat
Если уж тебе не важен юникод, но важно четкое понимание "на глаз" - тогда пиши: if Ch = #32 then
Ну с "#32" для большинства прокатит. А ты на память тот же "неразрывный" пробел записать так сможешь? Или может лучше использовать константы для единообразия? :)
вчера, 17:51    [21788985]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3707
white_nigger
YuRock
Такую константу и называть надо правильно - sNonBreakableSpaceCharacter
Вообще не в кассу

Да, "не" не заметил.
вчера, 17:52    [21788987]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
white_nigger
А ты на память тот же "неразрывный" пробел записать так сможешь?
Даже пытаться не буду.
Достаточно доки по юникоду.
Или может лучше использовать константы для единообразия? :)

sWhiteSpace1,sWhiteSpace2,sWhiteSpace3 и т.д? ;)
вчера, 18:00    [21788995]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1974
rgreat
sWhiteSpace1,sWhiteSpace2,sWhiteSpace3 и т.д? ;)
Наименование констант/переменных/методов - отдельная религия :)
вчера, 18:02    [21788997]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
Сразу еще приходет на ум константы типа: sa, sA, sb, sB, sc, sC.... ;)
вчера, 18:02    [21788998]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
sZero = 0
sOne = 1
sTwo = 2

вчера, 18:02    [21789000]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
white_nigger
Наименование констант/переменных/методов - отдельная религия :)
Это ДА.
Чуть ли не самое сложное в программировании имячко придумать! (вспоминая времена FORTRAn IV)
вчера, 19:53    [21789069]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
rgreat
sZero = 0
sOne = 1
sTwo = 2

Картинка с другого сайта.
Это фигня! Вот обзови 13
это sThirteen или sTwelve+1 ?
а чертову дюжину обозвать - вообще мозги сломаешь!

Картинка с другого сайта.
вчера, 20:02    [21789073]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 4625
Gator
sTwelve+1
Святотатство!
Для лошков это sTwelve+sOne а для гуру - sTwelvePlusOne.
вчера, 20:33    [21789090]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
Еще надо сделать константы для букв C c С с, они мало того, что похожи, но цуки еще и на одной клавише расположены!
вчера, 23:10    [21789133]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Gator
Member

Откуда: Москва
Сообщений: 13964
rgreat,

Ужас! Не обижайте Холмса! https://en.wikipedia.org/wiki/221B_Baker_Street
вчера, 23:14    [21789136]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1564
ain-2
Таки, не понял. Ужель в Дельфи нет такого, как в простом Лазарусе?

Картинка с другого сайта.

В Delphi даже есть
  vkHardwareBack     = $89;  { 137 }

... и даже класс TKeyMapping
вчера, 23:44    [21789151]     Ответить | Цитировать Сообщить модератору
 Re: Стандартные константы Delphi  [new]
Гирлионайльдо
Member

Откуда:
Сообщений: 374
roschinspb,

Интересно, а кто им сайт писал? Мне бы такого же нанять Картинка с другого сайта.

К сообщению приложен файл. Размер - 26Kb
сегодня, 00:14    [21789167]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
Все форумы / Delphi Ответить