Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.21;
Скачать: CL | DM;

Вниз

Насчет пустой строки   Найти похожие ветки 

 
Пробежал...   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
4-1196809281
GanibalLector
2007-12-05 02:01
2008.09.21
EFOpenError Процесс не может получить доступ к файлу


15-1217595794
savyhinst
2008-08-01 17:03
2008.09.21
paszlib


15-1217578343
Vlad Oshin
2008-08-01 12:12
2008.09.21
интересную задачку нашел


2-1218441081
BioStaR
2008-08-11 11:51
2008.09.21
Запуск exe файла


2-1218125685
Дамир
2008-08-07 20:14
2008.09.21
Окно