Главная страница
    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.005 c
2-1255954503
Ivan8511
2009-10-19 16:15
2009.12.06
Разница между ADOTable и ADOQuery


15-1255010538
@!!ex
2009-10-08 18:02
2009.12.06
Чем можно докачать файл?


2-1255696453
FEV
2009-10-16 16:34
2009.12.06
События для динамических кнопок...


15-1254837325
VladOfMonster
2009-10-06 17:55
2009.12.06
Срочно. Установка wine в Linux


15-1254491780
Unknown user
2009-10-02 17:56
2009.12.06
Чтение/запись PSD (Photoshop) формата





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