Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1217595436
stas
2008-08-01 16:57
2008.09.21
Вопрос знатокам C#


2-1218452773
Connect
2008-08-11 15:06
2008.09.21
Файлы


2-1218444544
lod
2008-08-11 12:49
2008.09.21
Компонент DateTimeParker


2-1218439239
начинающий
2008-08-11 11:20
2008.09.21
Журнал документов


2-1218008748
SSSs
2008-08-06 11:45
2008.09.21
RichEdit взять кусок текста.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский