Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

Пустая ли строка   Найти похожие ветки 

 
Nucer   (2009-10-15 20:23) [0]

Как правильно проверять, пустая ли строка?
if Length(str) = 0 then Exit;
или
if str = "" then Exit;


 
oldman ©   (2009-10-15 20:25) [1]

Если str:="            " не является пустой строкой, тогда 1
Иначе 2


 
{RASkov} ©   (2009-10-15 20:31) [2]

:)


 
Nucer   (2009-10-15 20:34) [3]

Не понял... Условия ведь равнозначны по смыслу.
Пустая строка - это именно строка с нулевой длиной, т.е. "".


 
oldman ©   (2009-10-15 20:38) [4]


> Nucer   (15.10.09 20:34) [3]


Тогда какая тебе разница?
Правильно и так и так, не принимая в учет [1]


 
oldman ©   (2009-10-15 20:42) [5]

в первом случае работает функция и оператор сравнения,
во втором только оператор сравнения
Если тебе критично по времени работы, меряй сам.


 
{RASkov} ©   (2009-10-15 21:05) [6]

> в первом случае работает функция

вся функция:
function Length(const S: String): Integer
begin
 Result:=PInteger(Integer(S)-4)^;
end;

:)


 
oldman ©   (2009-10-15 21:16) [7]


> {RASkov} ©   (15.10.09 21:05) [6]


А текст PInteger(Integer(S)-4) можешь привести до кучи?


 
Nucer   (2009-10-15 21:32) [8]

>Если тебе критично по времени работы, меряй сам.

Как оказалось, вот это работает в 4 раза быстрее:
if str = "" then ...


 
palva ©   (2009-10-15 22:04) [9]


> Result:=PInteger(Integer(S)-4)^;

Да вы шо? А если строка пустая? Integer(S) даст нуль - тут в одной ветке говорили. Может врали...


 
Игорь Шевченко ©   (2009-10-16 00:02) [10]


> А если строка пустая? Integer(S) даст нуль


С какого перепугу ?


 
RWolf ©   (2009-10-16 09:42) [11]


Unit1.pas.29: if s="" then subroutine;
0044E1DF 83BBFC02000000   cmp dword ptr [ebx+$000002fc],$00
0044E1E6 7507             jnz +$07
0044E1E8 8BC3             mov eax,ebx
0044E1EA E819000000       call TForm1.subroutine


Unit1.pas.30: if Length(s)=0 then subroutine;
0044E1EF 8B83FC020000     mov eax,[ebx+$000002fc]
0044E1F5 E8A662FBFF       call @LStrLen
0044E1FA 85C0             test eax,eax
0044E1FC 7507             jnz +$07
0044E1FE 8BC3             mov eax,ebx
0044E200 E803000000       call TForm1.subroutine

@LStrLen:
004044A0 85C0             test eax,eax
004044A2 7403             jz +$03
004044A4 8B40FC           mov eax,[eax-$04]
004044A7 C3               ret


Делайте выводы.


 
palva ©   (2009-10-17 11:40) [12]


>> А если строка пустая? Integer(S) даст нуль
> С какого перепугу ?

Это моя Delphi 7 такая пуганная.
{$APPTYPE CONSOLE}
var
 i: Integer;
 s: String;
begin
 s := "";
 i := Integer(s);
 WriteLn(i); // 0
end.


 
Leonid Troyanovsky ©   (2009-10-18 23:44) [13]


> Игорь Шевченко ©   (16.10.09 00:02) [10]

> > А если строка пустая? Integer(S) даст нуль

> С какого перепугу ?

Пуркуа б не па.

--
Regards, LVT.


 
Sha ©   (2009-10-19 00:31) [14]

if s="" быстрее.
Но надо иметь ввиду, что некоторые сторонние библиотеки могут производить пустые строки, для которых s<>"", но length(s)=0



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-1230550570
Oleg_teacher
2008-12-29 14:36
2009.12.06
Експорт в ртф формат.


11-1208955774
andreil
2008-04-23 17:02
2009.12.06
Как указать цвет пикселя 8-битному изображению?


15-1250841620
Empleado
2009-08-21 12:00
2009.12.06
На чем мультики делать?


2-1255949054
Роман
2009-10-19 14:44
2009.12.06
как вывести отчет


15-1254906022
Dennis I. Komarov
2009-10-07 13:00
2009.12.06
HP Compaq nx7400 или подобные (бук)





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