Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.041 c
15-1169452147
IGray
2007-01-22 10:49
2007.02.11
Схема на монитор очень нужна! (Samsung 757mb)


15-1169091964
Одя
2007-01-18 06:46
2007.02.11
Существуют ли программы перевода сишных макросов в Паскаль?


1-1166602375
bear99
2006-12-20 11:12
2007.02.11
Удалений информации с дика


6-1157965971
dwar
2006-09-11 13:12
2007.02.11
INDY 9 проблемма стоп сервера


2-1169546929
Sventitskiy
2007-01-23 13:08
2007.02.11
Смена разделителя дробной части





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