Главная страница
    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.007 c
2-1218515832
Wood
2008-08-12 08:37
2008.09.21
OnClick для TButton


11-1193561717
files32
2007-10-28 11:55
2008.09.21
Русский язык KOL+Lazarus+WinCE


2-1218183159
9899100
2008-08-08 12:12
2008.09.21
Структура из DLL


15-1217409210
Загрузка
2008-07-30 13:13
2008.09.21
Загрузка компьютера


2-1218541518
Нов_и_чок
2008-08-12 15:45
2008.09.21
Кто может ПАМАГИТЕ!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский