Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2009, 23:02   #1
Van777
 
Регистрация: 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.
Van777 вне форума Ответить с цитированием
Старый 07.04.2009, 00:51   #2
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

А в чём проблема?
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 07.04.2009, 08:36   #3
Van777
 
Регистрация: 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.
Van777 вне форума Ответить с цитированием
Старый 07.04.2009, 08:41   #4
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

А в какой строке ошибка?

Я бы попытался умножить на 1.0, но всё равно как–то странно.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 07.04.2009, 10:34   #5
Van777
 
Регистрация: 06.04.2009
Сообщений: 3
По умолчанию

Умножал - ничего хорошего.......
Van777 вне форума Ответить с цитированием
Старый 15.05.2009, 17:43   #6
FastReport
 
Регистрация: 15.05.2009
Сообщений: 6
По умолчанию

ни тип поля ни содержание не указано, даже в какой строке ошибка вылетает неизвестно... С виду всё нормально. Где-то при конвертации ошибка.
Вместо FloatToStrf юзайте простой Format.

Если ничего не поможет, отошлите нам в техподдержку шаблон отчёта + базу, из которой это делается.

PS: еще в коде не вижу передачу параметра в Value. Интересно, как репорт его получит?
http://www.fastreport.ru - отчётность для программистов
FastReport вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести целое положительное десятичное число в шестнадцатеричное счисление 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