Форум: "Начинающим";
Текущий архив: 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.004 c