Вниз
Скачать: CL | DM;

Число?   Найти похожие ветки 

← →
Officeman ©   (2007-01-25 08:00) [0]

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

т.з.

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

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

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

пробовал так

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

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


← →
Elen ©   (2007-01-25 08:48) [1]


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

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


← →
Officeman ©   (2007-01-25 09:17) [2]

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


← →
Alx2 ©   (2007-01-25 09:32) [3]

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

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

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


← →
iXT ©   (2007-01-25 09:35) [4]

Что есть STE?


← →
Officeman ©   (2007-01-25 09:40) [5]

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

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


← →
Elen ©   (2007-01-25 09:41) [6]


> Officeman

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

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

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


← →
Alx2 ©   (2007-01-25 09:43) [7]

>Officeman ©   (25.01.07 09:40)

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


← →
Officeman ©   (2007-01-25 10:21) [8]

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"

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


← →
Elen ©   (2007-01-25 10:34) [9]


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

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


← →
Elen ©   (2007-01-25 10:36) [10]


> Officeman

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


← →
iXT ©   (2007-01-25 10:50) [11]

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


← →
Elen ©   (2007-01-25 10:52) [12]


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

И что в нем?


← →
iXT ©   (2007-01-25 10:55) [13]


> И что в нем?

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


← →
Elen ©   (2007-01-25 11:03) [14]

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


← →
Плохиш ©   (2007-01-25 11:12) [15]


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

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


← →
Officeman ©   (2007-01-25 12:13) [16]

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


← →
Officeman ©   (2007-01-25 12:57) [17]

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


← →
Darvin ©   (2007-01-25 15:01) [18]

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.033 c
2-1169312672
NikNet
2007-01-20 20:04
2007.02.11
Как предварительно назначить именна DBGrid колонкам


11-1147450294
XProger
2006-05-12 20:11
2007.02.11
Delphi 10 проблемы с компиляцией SysInit.pas


15-1169463518
Rentgen
2007-01-22 13:58
2007.02.11
Рейтинг delphimaster.ru - падает


15-1169200526
Prohodil Mimo
2007-01-19 12:55
2007.02.11
почему мигают лампочки на кулере?


15-1169382268
NikNet
2007-01-21 15:24
2007.02.11
Где скачать редактор для SQL (sybase) с наворотами...




   Наверх