Главная страница
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
2-1218434218
Mops
2008-08-11 09:56
2008.09.21
TWebbrowser и IE


2-1218381466
кирилл
2008-08-10 19:17
2008.09.21
подскажите тип


3-1206525519
Mery
2008-03-26 12:58
2008.09.21
Запрос


3-1206401557
Drowsy
2008-03-25 02:32
2008.09.21
MDX в DBF.


2-1218464546
ChaosAD
2008-08-11 18:22
2008.09.21
Update c подзапросом