![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.04.2009
Сообщений: 3
|
![]()
Добрый день, пытаюсь изучать Delphi, но вот стала задачка, которую пока тяжело осилить, если кто может помочь - огромная ему благодарность!!!
var massa1:string[250]; kolvomassa:real; znak1:string[15]; milion1:integer; procedure TTTN1.frxUserDataSet1GetValue(const VarName: String; var Value: Variant); //Главный момент // из чифр в строку(масса прописью) kolvomassa:=qttn.Fields[9].AsFloat*qttn.Fields[6].AsInteger; znak1:=FloatToStrf(kolvomassa,ffNum ber,11,1); if qttn.Fields[6].AsFloat<>0 then //Прерываюсь //В таком состоянии все работает, но выдает ненужное мне значение, необходимо получить значение только из qttn.Fields[6].AsInteger Проблема в том, что если оставляешь только qttn.Fields[6].AsInteger, при формировании отчета в FastReport появляется ошибка raised exception class ECjnvertError with message "is not a valid integer value". Process stopeped. И еще в FrxClass: begin Result:= Null; if Assigned(FOnGetValue) then FOnGetValue(Index, Result); Идет выделение этой строки..... (Ошибка) end; //Дальше begin milion1:=length(znak1); if milion1 > 9 then begin milion1:=2; case strtoint(znak[1]) of 1:massa1:='Один милион ';2:massa1:='Два милиона ';3:massa1:='Три милиона '; 4:massa1:='Четыре милиона ';5:massa1:='Пять милионов ';6:massa1:='Шесть милионов '; 7:massa1:='Семь милионов ';8:massa1:='Восемь милионов ';9:massa1:='Девять милионов '; end; end else begin milion1:=0; massa1:=''; end; case strtoint(znak1[milion1+1]) of 1:massa1:=massa1+'Сто ';2:massa1:=massa1+'Двести ';3:massa1:=massa1+'Триста '; 4:massa1:=massa1+'Четыреста ';5:massa1:=massa1+'Пятьсот ';6:massa1:=massa1+'Шестьсот '; 7:massa1:=massa1+'Семьсот ';8:massa1:=massa1+'Восемьсот ';9:massa1:=massa1+'Девятьсот '; end; case strtoint(znak1[milion1+2]) of 2:massa1:=massa1+'двадцать ';3:massa1:=massa1+'тридцать ';4:massa1:=massa1+'сорок '; 5:massa1:=massa1+'пятьдесят ';6:massa1:=massa1+'шестьдесят ';7:massa1:=massa1+'семьдесят '; 8:massa1:=massa1+'восемьдесят ';9:massa1:=massa1+'девяносто '; 1:begin case strtoint(znak1[2]+znak1[milion1+3]) of 10:massa1:=massa1+'десять тысяч ';11:massa1:=massa1+'одиннадцать тысяч '; 12:massa1:=massa1+'двенадцать тысяч ';13:massa1:=massa1+'тринадцать тысяч '; 14:massa1:=massa1+'четырнадцать тысяч ';15:massa1:=massa1+'пятнадцать тысяч '; 16:massa1:=massa1+'шестнадцать тысяч ';17:massa1:=massa1+'семнадцать тысяч '; 18:massa1:=massa1+'восемнадцать тысяч ';19:massa1:=massa1+'девятнадцать тысяч '; end; end; end; if znak1[milion1+2]<>'1' then case strtoint(znak1[milion1+3]) of 0:massa1:=massa1+'тысяч ';1:massa1:=massa1+'одна тысяча ';2:massa1:=massa1+'две тысячи '; 3:massa1:=massa1+'три тысячи ';4:massa1:=massa1+'четыре тысячи ';5:massa1:=massa1+'пять тысяч '; 6:massa1:=massa1+'шесть тысяч ';7:massa1:=massa1+'семь тысяч '; 8:massa1:=massa1+'восемь тысяч ';9:massa1:=massa1+'девять тысяч '; end; case strtoint(znak1[milion1+5]) of 1:massa1:=massa1+'сто ';2:massa1:=massa1+'двести '; 3:massa1:=massa1+'триста ';4:massa1:=massa1+'четыреста '; 5:massa1:=massa1+'пятьсот ';6:massa1:=massa1+'шестьсот '; 7:massa1:=massa1+'семьсот ';8:massa1:=massa1+'восемьсот ';9:massa1:=massa1+'девятьсот '; end; case strtoint(znak1[milion1+6]) of 2:massa1:=massa1+'двадцать ';3:massa1:=massa1+'тридцать ';4:massa1:=massa1+'сорок '; 5:massa1:=massa1+'пятьдесят ';6:massa1:=massa1+'шестьдесят ';7:massa1:=massa1+'семьдесят '; 8:massa1:=massa1+'восемьдесят ';9:massa1:=massa1+'девяносто '; 1:begin case strtoint(znak1[milion1+6]+znak1[milion1+7]) of 10:massa1:=massa1+'десять тон ';11:massa1:=massa1+'одиннадцать тон '; 12:massa1:=massa1+'двенадцать тон ';13:massa1:=massa1+'тринадцать тон '; 14:massa1:=massa1+'четырнадцать тон ';15:massa1:=massa1+'пятнадцать тон '; 16:massa1:=massa1+'шестнадцать тон ';17:massa1:=massa1+'семнадцать тон '; 18:massa1:=massa1+'восемнадцать тон ';19:massa1:=massa1+'девятнадцать тон '; end; end; end; if znak1[milion1+6]<>'1' then case strtoint(znak1[milion1+7]) of 0:massa1:=massa1+'тон ';1:massa1:=massa1+'одина тонна ';2:massa1:=massa1+'две тонны '; 3:massa1:=massa1+'три тонны ';4:massa1:=massa1+'четыре тонны ';5:massa1:=massa1+'пять тон '; 6:massa1:=massa1+'шесть тон ';7:massa1:=massa1+'семь тон '; 8:massa1:=massa1+'восемь тон ';9:massa1:=massa1+'девять тон '; end; massa1:=massa1+znak1[milion1+9]+'0 кг.'; end else begin massa1:=''; // Масса прописью znak1:=''; // Масса числовая end; // конец (масса прописью) А может быть проблема если в qttn.Fields[6].AsInteger значение менее 5-ти знаков? Последний раз редактировалось Van777; 07.04.2009 в 10:41. |
![]() |
![]() |
![]() |
#2 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
![]()
А в чём проблема?
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 06.04.2009
Сообщений: 3
|
![]()
В таком состоянии все работает, но выдает ненужное мне значение, необходимо получить значение только из qttn.Fields[6].AsInteger
Проблема в том, что если оставляешь только qttn.Fields[6].AsInteger, при формировании отчета в FastReport появляется ошибка raised exception class ECjnvertError with message "is not a valid integer value". Process stopeped. ![]() |
![]() |
![]() |
![]() |
#4 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
![]()
А в какой строке ошибка?
Я бы попытался умножить на 1.0, но всё равно как–то странно. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 06.04.2009
Сообщений: 3
|
![]()
Умножал - ничего хорошего.......
![]() |
![]() |
![]() |
![]() |
#6 |
Регистрация: 15.05.2009
Сообщений: 6
|
![]()
ни тип поля ни содержание не указано, даже в какой строке ошибка вылетает неизвестно... С виду всё нормально. Где-то при конвертации ошибка.
Вместо FloatToStrf юзайте простой Format. Если ничего не поможет, отошлите нам в техподдержку шаблон отчёта + базу, из которой это делается. PS: еще в коде не вижу передачу параметра в Value. Интересно, как репорт его получит?
http://www.fastreport.ru - отчётность для программистов
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевести целое положительное десятичное число в шестнадцатеричное счисление | Alfis | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 28.12.2008 20:40 |
Как в паскале перевести число с 10-ной с/с в 16-ную с/с | Vika | Помощь студентам | 6 | 23.12.2008 20:00 |
Помогите перевести число из десятичной в шестнадцатиричную систему | TAUREN | Помощь студентам | 5 | 06.10.2007 14:06 |
Как перевести строку из чисел в массив? | Andris | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 21.09.2007 17:12 |
перевести число, находящееся в string, в integer? | andrey4623 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 23.06.2007 00:32 |