Главная страница
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
15-1217068149
buzb
2008-07-26 14:29
2008.09.21
Какой программой менять частоту шыны видеокарты?


15-1217657301
ggg
2008-08-02 10:08
2008.09.21
Исходники преферанса


3-1206102916
Still Swamp
2008-03-21 15:35
2008.09.21
TParam и BLOB


15-1217591906
oldman
2008-08-01 15:58
2008.09.21
Завтра выходной, будут не все. Примите поздравления заранее...


3-1206100897
Int23
2008-03-21 15:01
2008.09.21
Как передать русскую строку в ХП на MS SQL 2005 из D7