Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Число? [D6, D7, 2000, XP]


Officeman ©   (2007-01-25 08:00:00) 

Как програмно сделать простую проверку?

т.з.

Импортирую данные из файла Excel таблиц  'example.xls'
Два поля: Наименование товара, Цена

При чтении значений поля ЦЕНА.
необходимо проверять через тип значения

Если Число(x)=true Тогда
//Делаем его целым (десятичные 0,5 округляем до 1 )
Иначе пропускаем

пробовал так

STE := StrToIntDef(WorkSheet.Cells[x,2],0);
STR := IntToStr(STE);

но если попадается ТЕКСТ с поле ЦЕНА (например: #ЗНАЧ! или другое)
то цикл прерывается с ОШИБКОЙ 'valid type'.


Darvin   (2007-01-25 15:01:00) [1]

try
 Value := StrToFloat(St);
except
end;
И не забудь снять галочку в настройках дебаггера: Stop on Delphi exceptions, иначе все равно будет вылетать при работе в среде.


Officeman   (2007-01-25 12:57:00) [2]

Удалено модератором


Officeman   (2007-01-25 12:13:00) [3]

Удалено модератором
Примечание: Создание пустых сообщений


Плохиш   (2007-01-25 11:12:00) [4]


> Естъ такой Чувство Юмор, Йа?

Это не "Чувство Юмор", это один из драйверов, которые ответственны за то, что некто вместо изучения основ начинает методом тыка подставлять разные функции в код в надежде, что всё заработает. Ещё рекомендую проверить драйвер head.drv...


Elen   (2007-01-25 11:03:00) [5]

Удалено модератором


iXT   (2007-01-25 10:55:00) [6]


> И что в нем?

У каждого свое :)


Elen   (2007-01-25 10:52:00) [7]


>  Смотри драйвер hands.sys

И что в нем?


iXT   (2007-01-25 10:50:00) [8]

Чудес не бывает. Смотри драйвер hands.sys


Elen   (2007-01-25 10:36:00) [9]


> Officeman

Да еще может попробуй :
STE := StrToInt( VarToStrDef(WorkSheet.Cells[x,2],0));
STR := IntToStr(STE);


Elen   (2007-01-25 10:34:00) [10]


> так же вылетает с ошибкой при встрече ТЕКСТ в поле ЦЕНА

Попробуй Try...Except... End. Он не должен дать ошибку при запуске проги не из под Делфи. Запусти Экзешник отдельно (см. [7])


Officeman   (2007-01-25 10:21:00) [11]

2Elen, это всё пробовал. не работает.
пробовал даже так:


STR1:=VarToStr(WorkSheet.Cells[x,2]);
a:=true;
 For i:=1 to Length(STR1) do begin
   If not ((STR1[i]) in (['0'..'9','.'])) then
       begin
          a:=false;
       end
 end;

if a then begin Memo4.Lines.Add(WorkSheet.Cells[x,2]) end;


так же вылетает с ошибкой при встрече ТЕКСТ в поле ЦЕНА
контент ошибки: 'invalid variant type convertion'

какаето мелочь. немогу догнать почему так.


Alx2   (2007-01-25 09:43:00) [12]

>Officeman ©   (25.01.07 09:40)

Может, просто из-под среды выбивает с включенным Stop on Delphi exceptions?


Elen   (2007-01-25 09:41:00) [13]


> Officeman

Могу еще Valпосоветовать или действительно как сказал Alx2 try...Except

Или еще попробуй так :
STE := StrToIntDef( VarToStr(WorkSheet.Cells[x,2]),0);
STR := IntToStr(STE);

Ибо по-моему Cells имеет тип OleVariant.


Officeman   (2007-01-25 09:40:00) [14]

2Alx2, так тоже не работает

2iXT, StrToIntDef неужели ни о чем не говорит?


iXT   (2007-01-25 09:35:00) [15]

Что есть STE?


Alx2   (2007-01-25 09:32:00) [16]

>Если Число(x)=true Тогда

Честно говоря, раздражает подобное. А-ля
- Скажите, утверждение "соль есть в вашем магазине" равно истине?

А по вопросу - что если обернуть конвертирование в try ... except?


Officeman   (2007-01-25 09:17:00) [17]

2Elen,
не работает.
при встрече текста в поле цена. вылетает с ошибкой


Elen   (2007-01-25 08:48:00) [18]


> STE := StrToIntDef(WorkSheet.Cells[x,2],0);

Попробуй
if TryStrToInt(WorkSheet.Cells[x,2],ste) then STR := IntToStr(STE);


Наверх

Титульная страница Поиск, карта сайта Написать письмо