powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сумма прописью!
43 сообщений из 43, показаны все 2 страниц
Сумма прописью!
    #32702918
Привет всем! Нужена про-га на c# умеюшая данную сумму "написать" прописью !!! Очень нужно

Спасибо, Михаил
...
Рейтинг: 0 / 0
Сумма прописью!
    #32702945
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил БоровиоквПривет всем! Нужена про-га на c# умеюшая данную сумму "написать" прописью !!! Очень нужно

Спасибо, Михаил
Во вложении.
Классы особо не тестированы, но нареканий не было.
Вызывать например так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
 /// <summary> 
		 /// Сумма прописью для валюты  
		 /// </summary> 
		 /// <param name="p_decAmount">Сумма</param> 
		 /// <param name="p_enuCurrency">В какой валюте сумма</param> 
		 /// <param name="p_blnFirstLetterUppercase">С большой буквы ?</param> 
		 /// <returns>Сумма прописью</returns> 
		public static string AmountInWords(	decimal p_decAmount, 
											Money.enuSupportedCurrencies p_enuCurrency,
											bool p_blnFirstLetterUppercase)
		{
			string strAmountInWords=string.Empty;
			Money.Money oMoney=(Money.Money)(double)p_decAmount;
			
				switch (p_enuCurrency)
				{
					case Money.enuSupportedCurrencies.eiDollar:
					{
						strAmountInWords=oMoney.ToString(new Money.DollarToStringProvider(false,false,true));
						break;
					}
					case Money.enuSupportedCurrencies.eiEURO:
					{
						strAmountInWords=oMoney.ToString(new Money.EUROToStringProvider(false,false,true));
						break;
					}
					case Money.enuSupportedCurrencies.eiHryvna:
					{
						strAmountInWords=oMoney.ToString(new Money.HryvnaToStringProvider(false,false,true));
						break;
					}
					case Money.enuSupportedCurrencies.eiRoubles:
					{
						strAmountInWords=oMoney.ToString(new Money.RoubleToStringProvider(false,false,true));
						break;
					}
				}
				if (p_blnFirstLetterUppercase)
				{
					strAmountInWords=strAmountInWords.Substring(0,1).ToUpper() + strAmountInWords.Substring(1);
				}
			return strAmountInWords;
		}
...
Рейтинг: 0 / 0
Сумма прописью!
    #32704070
Нерюх
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложенном к журналу rsdn диске, или n1 или n2 за этот год, был пример такой функции.
...
Рейтинг: 0 / 0
Сумма прописью!
    #32704076
Большое спасибо!
...
Рейтинг: 0 / 0
Сумма прописью!
    #32704981
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
using System;

 /// <summary> 
 /// Класс отображения суммы прописью. 
 /// 3 варианта - рубли, доллары и просто для использования 
 /// других любых единиц (вагоны, мешки и т.п.) 
 /// -------------------------------------- 
 /// Автор - Глеб Уфимцев (dnkvpb@nm.ru) 
 /// </summary> 

public class NumByWords 
{
	public static string RurPhrase (decimal money)
	{ 
		return CurPhrase(money,"рубль","рубля","рублей","копейка","копейки","копеек");
	}

	public static string UsdPhrase (decimal money)
	{
		return CurPhrase(money,"доллар США","доллара США","долларов США","цент","цента","центов");
	}

	public static string NumPhrase (ulong Value, bool IsMale) 
	{
		if (Value==0UL) return "Ноль";
		string[] Dek1={""," од"," дв"," три"," четыре"," пять"," шесть"," семь"," восемь"," девять"," десять"," одиннадцать"," двенадцать"," тринадцать"," четырнадцать"," пятнадцать"," шестнадцать"," семнадцать"," восемнадцать"," девятнадцать"};
		string[] Dek2={"",""," двадцать"," тридцать"," сорок"," пятьдесят"," шестьдесят"," семьдесят"," восемьдесят"," девяносто"};
		string[] Dek3={""," сто"," двести"," триста"," четыреста"," пятьсот"," шестьсот"," семьсот"," восемьсот"," девятьсот"};
		string[] Th={"",""," тысяч"," миллион"," миллиард"," триллион"," квадрилион"," квинтилион"};
		string str="";
		for (byte th=1; Value>0; th++) 
		{
			ushort gr=(ushort)(Value%1000); 
			Value=(Value-gr)/1000;
			if (gr>0) 
			{
				byte d3=(byte)((gr-gr%100)/100);
				byte d1=(byte)(gr%10);
				byte d2=(byte)((gr-d3*100-d1)/10);
				if (d2==1) d1+=(byte)10;
				bool ismale=(th>2)||((th==1)&&IsMale);
				str=Dek3[d3]+Dek2[d2]+Dek1[d1]+EndDek1(d1,ismale)+Th[th]+EndTh(th,d1)+str;
			};
		};
		str=str.Substring(1,1).ToUpper()+str.Substring(2);
		return str;
	}

#region Private members
	private static string CurPhrase (decimal money, 
		string word1,string word234,string wordmore,
		string sword1,string sword234,string swordmore)
	{ 
		money=decimal.Round(money,2);
		decimal decintpart=decimal.Truncate(money);
		ulong intpart=decimal.ToUInt64(decintpart);
		string str=NumPhrase(intpart,true)+" ";
		byte endpart=(byte)(intpart%100UL); 
		if (endpart>19) endpart=(byte)(endpart%10);
		switch (endpart) 
		{
			case 1: str+=word1; break;
			case 2:
			case 3:
			case 4: str+=word234; break;
			default: str+=wordmore; break;
		}
		byte fracpart=decimal.ToByte((money-decintpart)*100M);
		str+=" "+((fracpart<10)?"0":"")+fracpart.ToString()+" ";
		if (fracpart>19) fracpart=(byte)(fracpart%10);
		switch (fracpart) 
		{
			case 1: str+=sword1; break;
			case 2:
			case 3:
			case 4: str+=sword234; break;
			default: str+=swordmore; break;
		};
		return str;
	}
	private static string EndTh(byte ThNum, byte Dek)
	{
		bool In234=((Dek>=2)&&(Dek<=4));
		bool More4=((Dek>4)||(Dek==0));
		if (((ThNum>2)&&In234)||((ThNum==2)&&(Dek==1))) return "а";
		else if ((ThNum>2)&&More4) return "ов";
		else if ((ThNum==2)&&In234) return "и";
		else return "";
	}
	private static string EndDek1(byte Dek, bool IsMale)
	{
		if ((Dek>2)||(Dek==0)) return "";
		else if (Dek==1) 
		{
			if (IsMale) return "ин";
			else return "на";
		}
		else 
		{
			if (IsMale) return "а"; 
			else return "е";
		}
	}
#endregion
}
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма прописью!
    #35145009
Злой Кодер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пасиб, то что надо, автору респект за сэкономленное время
...
Рейтинг: 0 / 0
Сумма прописью!
    #35152688
гость0912121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот еще один вариант с рекурсией, бывает нужно

string IntToSpell(int num)
{
string spell = string.Empty;
string hspell;
string hundred;
string thousand;
string tthousand;
string hthousand;
string million;

if (num < 10)
spell = trans9(num);
if ((num < 20) && (num > 10))
spell = trans19(num);
if (((num < 100) && (num > 19)) || (num == 10))
{
hspell = num.ToString().Substring(0, 1) + "0";
spell = trans99(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(1, 1);
spell = spell + " " + IntToSpell(System.Convert.ToInt32(hspell));
}

if ((num < 1000) && (num > 100))
{
hspell = num.ToString().Substring(0, 1);
hundred = IntToSpell(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(1, 2);
hundred = hundred + " hundred and " + IntToSpell(System.Convert.ToInt32(hspell));
spell = hundred;
}

if ((num < 10000) && (num > 1000))
{
hspell = num.ToString().Substring(0, 1);
thousand = IntToSpell(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(1, 3);
thousand = thousand + " thousand " + IntToSpell(System.Convert.ToInt32(hspell));
spell = thousand;
}

if ((num < 100000) && (num > 10000))
{
hspell = num.ToString().Substring(0, 2);
tthousand = IntToSpell(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(2, 3);
tthousand = tthousand + " thousand " + IntToSpell(System.Convert.ToInt32(hspell));
spell = tthousand;
}

if ((num < 1000000) && (num > 100000))
{
hspell = num.ToString().Substring(0, 3);
hthousand = IntToSpell(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(3, 3);
hthousand = hthousand + " thousand and " + IntToSpell(System.Convert.ToInt32(hspell));
spell = hthousand;
}

if ((num < 10000000) && (num > 1000000))
{
hspell = num.ToString().Substring(0, 1);
million = IntToSpell(System.Convert.ToInt32(hspell));
hspell = num.ToString().Substring(1, 6);
million = million + " million and " + IntToSpell(System.Convert.ToInt32(hspell));
spell = million;
}

return spell;
}

string trans99(int num)
{
string spell = string.Empty;
switch (num)
{
case 10: spell = "ten"; break;
case 20: spell = "twenty"; break;
case 30: spell = "thirty"; break;
case 40: spell = "fourty"; break;
case 50: spell = "fifty"; break;
case 60: spell = "sixty"; break;
case 70: spell = "seventy"; break;
case 80: spell = "eighty"; break;
case 90: spell = "ninty"; break;
}
return spell;
}

string trans19(int num)
{
string spell = string.Empty;

switch (num)
{
case 11: spell = "eleven"; break;
case 12: spell = "twelve"; break;
case 13: spell = "thirteen"; break;
case 14: spell = "fourteen"; break;
case 15: spell = "fifteen"; break;
case 16: spell = "sixteen"; break;
case 17: spell = "seventeen"; break;
case 18: spell = "eighteen"; break;
case 19: spell = "nineteen"; break;
}
return spell;
}

string trans9(int num)
{
string spell = string.Empty;
switch (num)
{
case 1: spell = "one"; break;
case 2: spell = "two"; break;
case 3: spell = "three"; break;
case 4: spell = "four"; break;
case 5: spell = "five"; break;
case 6: spell = "six"; break;
case 7: spell = "seven"; break;
case 8: spell = "eight"; break;
case 9: spell = "nine"; break;
}
return spell;
}
...
Рейтинг: 0 / 0
Сумма прописью!
    #35153406
[quote] using r = ProCreditBank.Common.Classes.Root; [/quote]

ругается в этой строке, тут чего-то не хватает?

спс!
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585367
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akalendКласс отображения суммы прописью.
Все классно. Но почему копейки оставляет цифрами?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585417
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sheich akalendКласс отображения суммы прописью.
Все классно. Но почему копейки оставляет цифрами?
В генераторе отчетов стимула есть очень гибкий класс, который представляет число во множество вариантов текста (с копейками и без в том числе) =)
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585420
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я к тому, что их библиотеку подключить и заюзать можно
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585521
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositumя к тому, что их библиотеку подключить и заюзать можно
а ну все, разобрался вроде.
там просто не обрабатывалась часть fracpart, писалась как есть.
если нужно ее тоже писать словами надо просто заменить строку:
Код: plaintext
1.
str += " " + ((fracpart < 10) ? "0" : "") + fracpart.ToString() + " ";
на
Код: plaintext
1.
str += " " + NumPhrase(fracpart, IsMale) + " ";
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585528
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sheich
Но почему копейки оставляет цифрами?

Необходимости - нЭт. Не знаю как сейчас, но раньше, по крайней мере у нас, согласно, 4 example, Инструкции № 7 копейки писались цифрами:

Зазначаються з великої букви сума розрахункового документа (реєстру, заяви про відкриття акредитива) та слово "гривень" ("гривня", "гривні" або "грн."), копійки - цифрами та слово "копійка" ("копійки", "копійок" або "коп."). Якщо сума складається лише з копійок, то перед її зазначенням обов'язковим є написання слів "Нуль гривень".
Якщо сума платежу виражена в цілих гривнях, то зазначається "00 копійок" або "00 коп.".

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585651
sheich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, я в итоге сделал вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
	using System;

	public class NumByWords
		{

		public string RurPhrase(decimal money)
			{
			return CurPhrase(money, "рубль", "рубля", "рублей", true, "копейка", "копейки", "копеек", false);
			}

		public string UsdPhrase(decimal money)
			{
			return CurPhrase(money, "доллар США", "доллара США", "долларов США", true, "цент", "цента", "центов", true);
			}

		public string NumPhrase(ulong Value, bool IsMale)
			{
			if (Value == 0UL) return "Ноль";
			string[] Dek1 = { "", " од", " дв", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять", " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать", " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать" };
			string[] Dek2 = { "", "", " двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто" };
			string[] Dek3 = { "", " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот" };
			string[] Th = { "", "", " тысяч", " миллион", " миллиард", " триллион", " квадрилион", " квинтилион" };
			string str = "";
			for (byte th = 1; Value > 0; th++)
				{
				ushort gr = (ushort)(Value % 1000);
				Value = (Value - gr) / 1000;
				if (gr > 0)
					{
					byte d3 = (byte)((gr - gr % 100) / 100);
					byte d1 = (byte)(gr % 10);
					byte d2 = (byte)((gr - d3 * 100 - d1) / 10);
					if (d2 == 1) d1 += (byte)10;
					bool ismale = (th > 2) || ((th == 1) && IsMale);
					str = Dek3[d3] + Dek2[d2] + Dek1[d1] + EndDek1(d1, ismale) + Th[th] + EndTh(th, d1) + str;
					};
				};
			str = str.Substring(1, 1).ToUpper() + str.Substring(2);
			return str;
			}

		private string CurPhrase
			(
			decimal money,
			string word1, string word234, string wordmore, bool IsMale,
			string sword1, string sword234, string swordmore, bool sIsMale
			)
			{
			money = decimal.Round(money, 2);
			decimal decintpart = decimal.Truncate(money);
			ulong intpart = decimal.ToUInt64(decintpart);
			string str = NumPhrase(intpart, IsMale) + " ";
			byte endpart = (byte)(intpart % 100UL);
			if (endpart > 19) endpart = (byte)(endpart % 10);
			byte fracpart = decimal.ToByte((money - decintpart) * 100M);
			str += "и " + ((fracpart < 10) ? "0" : "") + fracpart.ToString() + "/100 ";
			switch (endpart)
				{
				case 1: str += word1; break;
				case 2:
				case 3:
				case 4: str += word234; break;
				default: str += wordmore; break;
				}
			return str;
			}

		private static string EndTh(byte ThNum, byte Dek)
			{
			bool In234 = ((Dek >= 2) && (Dek <= 4));
			bool More4 = ((Dek > 4) || (Dek == 0));
			if (((ThNum > 2) && In234) || ((ThNum == 2) && (Dek == 1))) return "а";
			else if ((ThNum > 2) && More4) return "ов";
			else if ((ThNum == 2) && In234) return "и";
			else return "";
			}

		private static string EndDek1(byte Dek, bool IsMale)
			{
			if ((Dek > 2) || (Dek == 0)) return "";
			else if (Dek == 1)
				{
				if (IsMale) return "ин";
				else return "на";
				}
			else
				{
				if (IsMale) return "а";
				else return "е";
				}
			}

		}
пример:
4112111010102,09
Четыре триллиона сто двенадцать миллиардов сто одиннадцать миллионов десять тысяч сто два и 09/100 рубля
сейчас модно копейки писать ввиде дроби :)
...
Рейтинг: 0 / 0
Сумма прописью!
    #35585713
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sheich
не мучайтесь



и это не полный список - весь не вместился на скрин. Юзайте то, что уже имеется, зачем изобретать велосипед?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35586585
Фотография Анатолий Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumи это не полный список - весь не вместился на скрин. Юзайте то, что уже имеется, зачем изобретать велосипед?
Ну прям агент Стимулсофта. :-)))
Может человеку и не нужен Стимул совсем - зачем навязываешь библиотеку, входящую в состав платного отчетника?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35586604
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сумма прописью!
    #35586663
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Иванов
Ну прям агент Стимулсофта. :-)))
Может человеку и не нужен Стимул совсем - зачем навязываешь библиотеку, входящую в состав платного отчетника?
Толя, dll-файл, содержащий данный код можно бесплатно взять из демо-версии стимула и спокойно юзать. И коим же боком сие относится к рекламе стимула? ;) Если бы я знал о возможности заюзывания подобной библиотеки через демо-версию FR.NET - я бы написал и об этом варианте. Но я его не знаю, да и не искал в виду наличия уже имеющейся альтернативы. Если пороешься в недрах FR.NET - наверняка (как мне кажется) найдешь что-то подобное тому, что я показал в стимуле, просто я этого не делал
...
Рейтинг: 0 / 0
Сумма прописью!
    #35586780
Фотография Анатолий Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumТоля, dll-файл, содержащий данный код можно бесплатно взять из демо-версии стимула и спокойно юзать. И коим же боком сие относится к рекламе стимула? ;) Если бы я знал о возможности заюзывания подобной библиотеки через демо-версию FR.NET - я бы написал и об этом варианте. Но я его не знаю, да и не искал в виду наличия уже имеющейся альтернативы. Если пороешься в недрах FR.NET - наверняка (как мне кажется) найдешь что-то подобное тому, что я показал в стимуле, просто я этого не делал
Про рекламу: смайлики замечаем али как? ;-) И кстати, тема про новую версию Стимула со здоровенным скриншотом - это ли не реклама?
Бесплатно взять и юзать - разные вещи. У них где-то написано, что этой библиотекой можно пользоваться отдельно и сколько угодно не платя?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35889741
chaban
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил БоровиоквПривет всем! Нужена про-га на c# умеюшая данную сумму "написать" прописью !!! Очень нужно

Спасибо, Михаил
Доброго времени суток!
Кто нибудь добавлял функцию сумму прописью в FastReport4.7 на Delphi 2009?
плз поправте в коде что не так!

****
pas см. в вложении
...
Рейтинг: 0 / 0
Сумма прописью!
    #35890265
IApple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akalend
Код: plaintext
1.
2.
3.
4.
5.
using System;
/// Класс отображения суммы прописью.
/// 3 варианта - рубли, доллары и просто для использования
/// других любых единиц (вагоны, мешки и т.п.)
/// Автор - Глеб Уфимцев (dnkvpb@nm.ru)


"Любых" - это неправда, к примеру песо или яйцо, которые среднего рода, как прописаать?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35890899
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumЮзайте то, что уже имеется, зачем изобретать велосипед?

Андрюша, у меня к Вам просьба. Было бы здорово для всех, если бы Вы распотрошили сборку стимула и выковырили из нее нужные блоки для генерации суммы прописью. И оформили бы отдельным классом. Если не затруднит - под все имеющиеся культуры.

Заранее, респект за работу. )
...
Рейтинг: 0 / 0
Сумма прописью!
    #35890930
МСУ,

подстрекаете Андрея к нарушению закона о защите авторских прав?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35890992
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCompositumЮзайте то, что уже имеется, зачем изобретать велосипед?

Андрюша, у меня к Вам просьба. Было бы здорово для всех, если бы Вы распотрошили сборку стимула и выковырили из нее нужные блоки для генерации суммы прописью. И оформили бы отдельным классом. Если не затруднит - под все имеющиеся культуры.

Заранее, респект за работу. )
Это было бы очень не красиво с моей стороны, особенно учитывая тот факт, что некоторое время назад разработчики подарили мне пожизненную лицензию (за что я им весьма признателен).
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892043
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, Андрюша, перекрутим наоборот. Вы тинонечко пишите класс, когда всё буит готово, отдаете его мне, я его тестирую и выкладываю на форум.
Минусы - Вы не поднимаете карму на форуме, её поднимаю я :)
Плюсы - Вы чисты перед стимуловцами :)
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892050
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУХорошо, Андрюша, перекрутим наоборот. Вы тинонечко пишите класс, когда всё буит готово, отдаете его мне, я его тестирую и выкладываю на форум.
Минусы - Вы не поднимаете карму на форуме, её поднимаю я :)
Плюсы - Вы чисты перед стимуловцами :)
Вы перестали использовать стимул и перешли на др. ГО? Если да, то чем вызван переход (ежели не секрет)?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892056
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у стимула 14 апреля вроде как новая версия выходит + еще появится это .
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892120
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumЕсли да, то чем вызван переход (ежели не секрет)?
Отсутствие веб-сервера отчетов.
У Reporting Services 2005/2008 сайт отчетов уже написан (не трудно и самому написать, ибо есть уже готовый ASP.NET компонент (вьювер)).
У CrystalReports 11/2008 его не трудно самому написать, ибо есть уже готовый ASP.NET компонент (вьювер).
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892161
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCompositumЕсли да, то чем вызван переход (ежели не секрет)?
Отсутствие веб-сервера отчетов.
У Reporting Services 2005/2008 сайт отчетов уже написан (не трудно и самому написать, ибо есть уже готовый ASP.NET компонент (вьювер)).
У CrystalReports 11/2008 его не трудно самому написать, ибо есть уже готовый ASP.NET компонент (вьювер).
а разве это и это не из той сказки?
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892242
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumа разве это и это не из той сказки?

Flash Player 9 требует у клиента. Наглость да и только :)
...
Рейтинг: 0 / 0
Сумма прописью!
    #35892245
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCompositumа разве это и это не из той сказки?

Flash Player 9 требует у клиента. Наглость да и только :)

А, во-вторых, если покупаете сиквел, то уже в комплекте - отчетник Reporting Services. Вот основной козырь :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма прописью!
    #38441583
SergeVR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akalend
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
using System;


public class NumByWords 
{
	public static string RurPhrase (decimal money)
	{ 
		return CurPhrase(money,"рубль","рубля","рублей","копейка","копейки","копеек");
	}

}



Добрый день.

Подскажите пожалуйста.При вызове вышеуказаной функции сообщает об ошибке

Код:

private void Digit_TextChanged(object sender, TextChangedEventArgs e)
{
NumByWords s = new NumByWords();
uint d = 0;
d = Convert.ToUInt32(Digit.Text);
decimal dd = d;
string ss = s.RurPhrase(dd); // Доступ к члену RurPhrase(decimal) через ссылку на экземпляр невозможен,
// вместо этого уточните его, указав имя типа
Str.Text =ss;
}

Что сделал не так?
...
Рейтинг: 0 / 0
Сумма прописью!
    #38441601
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeVR,

статический метод вызывается через название класса, а не через его объект. В ошибке ж написано е-мое
...
Рейтинг: 0 / 0
Сумма прописью!
    #38441606
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeVRЧто сделал не так?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
using System;

public class NumByWords 
{
    public static string RurPhrase (decimal money)
    { 
        return CurPhrase(money,"рубль","рубля","рублей","копейка","копейки","копеек");
    }
}
...
Рейтинг: 0 / 0
Сумма прописью!
    #38441788
SergeVR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris, спасибо.
...
Рейтинг: 0 / 0
Сумма прописью!
    #38442389
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил БоровиоквПривет всем! Нужена про-га на c# умеюшая данную сумму "написать" прописью !!! Очень нужно

Спасибо, Михаил

автору и другим собравшимся.

могу предложить либу, доступную в Nuget

https://github.com/hVostt/PawnHunter.Numerals

реализация не моя, я лишь почистил, немного отрефакторил и оформил в либу.

NUGETInstall-Package PawnHunter.Numerals
...
Рейтинг: 0 / 0
Сумма прописью!
    #38442471
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, у многих уже есть свой код, что способен сумму "написать" прописью. У меня есть
...
Рейтинг: 0 / 0
Сумма прописью!
    #38442521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, у многих уже есть свой код, что способен сумму "написать" прописью. У меня есть

фишка этого кода не в том, что он может сумму прописью написать. а в том, что он интегрируется как часть расширяемых подстановочных шаблонов для String.Format с поддержкой суффиксов на любом языке ))

т.е. ваш метод примерно такой (псевдо-запись):

Код: c#
1.
var propis = MySuperLibrary.MySuperClass.MySuperMethodToChisloPropisiu(123);



а здесь:

где-та ранее:

Код: c#
1.
NumeralsFormatter formatter = new NumeralsFormatter();



патом:
Код: c#
1.
2.
format = "{0:W;Найден(а,о)} {0} {0:W;запис(ь,и,ей)}, {0:W;удовлетворяющ(ая,их)} запросу.";
Console.WriteLine(String.Format(formatter, format, 13));


большой профит в том, что формат можно затолкать в ресурсы :)
...
Рейтинг: 0 / 0
Сумма прописью!
    #38442534
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, а, вот оно как. Ну прикольно. А где это нужно? Можешь привести пару кейсов из практики?
...
Рейтинг: 0 / 0
Сумма прописью!
    #38442544
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, а, вот оно как. Ну прикольно. А где это нужно? Можешь привести пару кейсов из практики?

в ресурсы ложится всего одна строчка

"{0:W;Обнаружен(а,о)} {0} {0:W;ошибк(а,и,ок)}."

чтобы получить в итоге человеческое сообщение

Обнаружена 1 ошибка.
Обнаружено 2 ошибки.
Обнаружено 5 ошибок.

вместо классического нечеловеческого

Обнаружено 1 ошибок.
Обнаружено 2 ошибок.
Обнаружено 5 ошибок.

(или несокльких вариантов в ресурсах под разные условия или с дополнительным обслуживающим кодом)

ну и плюс сумма/время прописью (мужской/женский род, склонение). и плюс независимость от языка (в блиблиотеке реализовано rus/eng, но допилить под другие языки не сложно).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма прописью!
    #38910815
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

прикольно, выкинул свой велосипед на эту тему. спасибо за нугет!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сумма прописью!
    #39389036
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сумма прописью для русского, украинского и английского языков:

https://github.com/javadev/moneytostr-russian/blob/master/src/main/cs/MoneyToStr.cs

С уважением, Валентин
...
Рейтинг: 0 / 0
Сумма прописью!
    #39389060
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov,

Реализация на C# в стиле JS. Прикольно, но не айс
Отличный пример того, как делать никогда не надо.
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сумма прописью!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]