Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
ВнизНасчет пустой строки Найти похожие ветки
← →
Пробежал... (2008-07-28 11:59) [0]Вот интересно мне насчет значения пустой строки в delphi ;) По идее, если некая константа используется в программе два и более раз - логично ее ввести именно как константу. Зачастую логично это сделать, даже если она используется один раз, но может быть изменена в дальнейшем. Не суть.
И вот насчет пустой строки. Я в одной программе как-то решил и написал в объявлениях:cEmptyString = "" ;
И в дальнейшем в программе везде использовал это значение, например для обнуления строки:s1 := cEmptyString ;
Или, например:SetBlablaText(cEmptyString) ;
конечно, это мелочь непринципиальная, но реально имеет ли это смысл? Память экономится, или для значения пустой строки есть специальная константа и любое присвоение:string = "" ;
- ведет на эту константу (по идее на байт $00).
Вообще кто-нибудь так заморачивается или это глупо?
← →
Медвежонок Пятачок © (2008-07-28 12:03) [1]чем меньше литералов в исходниках тем проще управлять кодом
← →
Правильный$Вася (2008-07-28 12:06) [2]
> Память экономится
неа
константа нужна практически только для того, чтоб ее значение легко можно было изменить при изменении проекта
ну, и для визуального упрощения ориентирования в программе
← →
han_malign © (2008-07-28 12:26) [3]str:= "";
Pointer(str) = nil;
PChar(str)^ = #0;
- магия...
System:function _LStrToPChar(const s: AnsiString): PChar;
{$IFDEF PUREPASCAL}
const
EmptyString = "";
begin
if Pointer(s) = nil then
Result := EmptyString
else
Result := Pointer(s);
end;
{$ELSE}
asm
{ -> EAX pointer to str }
{ <- EAX pointer to PChar }
TEST EAX,EAX
JE @@handle0
RET
{$IFDEF PIC}
@@handle0:
JMP PICEmptyString
{$ELSE}
@@zeroByte:
DB 0
@@handle0:
MOV EAX,offset @@zeroByte
{$ENDIF}
end;
{$ENDIF}
← →
Пробежал... (2008-07-28 12:31) [4]Впрочем, нафига я спрашиваю ;)
Посмотрел в отладчике, оказывается при присвоении строки значения пустрой строки вызывается функция LStrClr, так что тут никакой экономии.
И вообще, дельфи, видимо, на уровне языка знает, что "" это значение $00. Например, если передавать в функцию PChar пустую строку, дельфи просто в стек кладет $00.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c