Страница 1 из 1

Как сравнить стринговую переменную с пустым значением?

Добавлено: 03 июн 2005, 10:27
edd
ааа:string

Почему-то не прокатывает ни

if aaa<>''

ни

if aaa<>' '

ни

if aaa>' '

С двумя последними может выйти некорректно, что естественно.

Как сравнить со значением пустого поля,типа, если не пусто, то...? Может есть какая-нибудь подходящая для этого функция? Или просто сравнивать с символом, имеющим самое минимальное значение в кодовой таблице?
И, счет-субсчет - это же стринг?

Добавлено: 03 июн 2005, 11:04
Max_Fin
копайте код, не здесь ошибка, сравнение описано верно.

Код: Выделить всё

if sTmp <> ''
{
  ...
}

Добавлено: 03 июн 2005, 11:38
edd
Max_Fin писал(а):копайте код, не здесь ошибка, сравнение описано верно.

Код: Выделить всё

if sTmp <> ''
{
  ...
}
Он не выполняет в этом простом условии ничего, стоящее в {}. условие не равно True (
В коде негде копать, все так же просто, как описано тобой.

А может быть так, что в переменной, когда она пустая, закрался пробел и она уже не считается пустой?

Добавлено: 03 июн 2005, 11:54
Max_Fin
Если бы не существовало проверки на пустую строку добрая половина Галатики не работала бы.

Добавлено: 03 июн 2005, 11:56
Max_Fin
edd писал(а): Он не выполняет в этом простом условии ничего, стоящее в {}. условие не равно True
Если условие не равно True, то туда и не надо заходить ;-)

Добавлено: 03 июн 2005, 12:02
edd
Max_Fin писал(а):
edd писал(а): Он не выполняет в этом простом условии ничего, стоящее в {}. условие не равно True
Если условие не равно True, то туда и не надо заходить ;-)
Я тоже посмеялся ) Но месседж дает пустое значение, а в проверке стоит if aaa=''
{
.....
}
и условие не выполняется

Добавлено: 03 июн 2005, 13:08
Max_Fin
Это случаем не в форме делаешь, если да, то код покажь

Добавлено: 03 июн 2005, 13:20
DarkAngel27
Попробуй сделать следующее:

Код: Выделить всё

var aaa:string; // объяви как глобальную переменную. Если она определяется в table, то и обращайся к ней как к table.aaa (лучше и использовать внутри только этой таблицы)
.begin
    aaa := '';
    if aaa <> '' then
       {
         Message('Не равно');
       } else Message('равно');
end.

Добавлено: 03 июн 2005, 14:20
edd
Max_Fin писал(а):Это случаем не в форме делаешь, если да, то код покажь
пожлате

Код: Выделить всё

.....
.{table 'имя_вью.временная_таблица'
Sal_f:=временная_tmp.edd_c7p4
.....
    if (sal_f='')=true then
                    {
                     Itog_SalD:=0.00;
                     Itog_SalC:=0.00;
                     Itog_SalD2:=0.00;
                     Itog_SalC2:=0.00;
                      .....
                     message(Sal_F)  //дает пусто, даже если в переменной пустота 
                    }
    else
        {
         Itog_SalD:=временная_табл.edd_c7p8
         Itog_SalC:=временная_табл.edd_c7p9
        }
.....

.}

Добавлено: 03 июн 2005, 14:30
Max_Fin
edd писал(а):

Код: Выделить всё

.....
    if (sal_f='')=true then
                    {
                      .....
                     message(Sal_F)  //дает пусто, даже если в переменной пустота 
                    }
.....

.}
ну дык, а что вы хотели в Sal_F пустая строка, что там еще выводить

если бы написано было бы что-то вроде этого, то имеет смысл что-нить выводить на экран.

Код: Выделить всё

.....
    if (sal_f<>'') then
                    {
                      .....
                     message(Sal_F);
                    }
.....

.}
или так

Код: Выделить всё

.....
    if (sal_f='') then
                    {
                      .....
                     //message(Sal_F);//выводить НЕЧЕГО!
                    }
    else
    {
.......
       message(Sal_F);
.......
    }
.....
.}

Добавлено: 03 июн 2005, 14:35
edd
Max_Fin писал(а):
edd писал(а):

Код: Выделить всё

.....
    if (sal_f='')=true then
                    {
                      .....
                     message(Sal_F)  //дает пусто, даже если в переменной пустота 
                    }
.....

.}
ну дык, а что вы хотели в Sal_F пустая строка, что там еще выводить

если бы написано было бы что-то вроде этого, то имеет смысл что-нить выводить на экран.

Код: Выделить всё

.....
    if (sal_f<>'') then
                    {
                      .....
                     message(Sal_F);
                    }
.....

.}
сорри :oops: не sal_f='', а if sal_f<>'', просто код уже поменял и не заметил.

Добавлено: 03 июн 2005, 15:27
DarkAngel27
А если сделать сообщение так:

Код: Выделить всё

message('<'+sald_f+'>'+chr(13)+sald_f);
И сравнить две строки. Может быть в переменной пробелы стоят.

Код: Выделить всё

..... 
    if (sal_f='')=true then 
                    { 
                      ..... 
                     message(Sal_F)  //дает пусто, даже если в переменной пустота 
                    } 
..... 

А (= true) зачем нужно :?: Попробуй его убрать...

Добавлено: 03 июн 2005, 15:53
edd
Может быть в переменной пробелы стоят.
стоят....буду использовать trim()
А (= true) зачем нужно :?: Попробуй его убрать...
Я его как раз поставил. Раньше не было.

Добавлено: 03 июн 2005, 17:08
Max_Fin
До всех условий запишите значение вашей переменной в лог

Код: Выделить всё

LogStrToFile('c:\log.txt', aaa);