| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| garik 
 
 
 Joined: 25 Jul 2005
 Posts: 40
 Location: Ruslan
 Occupation: it
 Interests: moscow
 
 | 
			
				|  Posted: 07 Nov 2005 17:04    Post subject: Округление после 16-той цифры... |   |  
				| 
 |  
				| Проблема в следующем.По требованию системы Клиент-Банк в файле для экспорта платежей поле КБК должно иметь числовой формат.При эскпорте из Бэста 5 последних цифр 20-ти значного КБК округляется.Как этого можно избежать?Может кто сталкивался? |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 07 Nov 2005 17:35    Post subject: |   |  
				| 
 |  
				| не понял можно чуть подробн |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| garik 
 
 
 Joined: 25 Jul 2005
 Posts: 40
 Location: Ruslan
 Occupation: it
 Interests: moscow
 
 | 
			
				|  Posted: 07 Nov 2005 17:57    Post subject: |   |  
				| 
 |  
				| поподробнее?.... В отладчике попробуйте набрать:
 ? 12345678901234567890
 Получим:
 12345678901234570000
 то есть с округлением до сотен тысяч.Есть ли надежда получить последние 5 цифр?
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 07 Nov 2005 18:39    Post subject: |   |  
				| 
 |  
				| Боюсь что быстро не получится. Вы это в dbf кладете - может частями туда положить ?
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| garik 
 
 
 Joined: 25 Jul 2005
 Posts: 40
 Location: Ruslan
 Occupation: it
 Interests: moscow
 
 | 
			
				|  Posted: 07 Nov 2005 19:02    Post subject: |   |  
				| 
 |  
				| Да в дбф...Штатными средставами экспорта в  Клиент-Банк.Как частями? Через ХФалЕвал ?Штатных способов не нашёл.....Видимо так и придётся сделать.... |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 07 Nov 2005 19:48    Post subject: |   |  
				| 
 |  
				| А если в поле сначало верхнюю часть положить типа (alias)->field:=12345678900000000000
 а потом
 (alias)->field+=1234567890
 Попробуйте проскочим или нет плз
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Олег Смирнов 
 
 
 Joined: 06 Sep 2004
 Posts: 821
 Location: Олег Смирнов
 Occupation: Раут (поганист-сисадмин)
 Interests: Новосибирск
 
 | 
			
				|  Posted: 07 Nov 2005 20:32    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | А если в поле сначало верхнюю часть положить типа (alias)->field:=12345678900000000000
 а потом
 (alias)->field+=1234567890
 Попробуйте проскочим или нет плз
 | 
 Тогда уж надо (alias)->field+=1234567890*10000000000, только вот сомневаюсь, что это что-то кому-то даст...
 _________________
 С уважением, Олег Р. Смирн
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| garik 
 
 
 Joined: 25 Jul 2005
 Posts: 40
 Location: Ruslan
 Occupation: it
 Interests: moscow
 
 | 
			
				|  Posted: 08 Nov 2005 14:16    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | А если в поле сначало верхнюю часть положить типа (alias)->field:=12345678900000000000
 а потом
 (alias)->field+=1234567890
 Попробуйте проскочим или нет плз
 | 
 Нет.Не проскочили...В поле та же 123...570000 .Вообще большие числа возможны?Есть ли какие-то set'ы по ограничению количество цифр в числе?Или это особенности среды Клиппера,дбф?
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Tsarenko P 
 
 
 Joined: 06 Oct 2005
 Posts: 2
 Location: Царенко П.Е.
 Occupation: программист
 Interests: Донецк
 
 | 
			
				|  Posted: 08 Nov 2005 16:26    Post subject: |   |  
				| 
 |  
				| Странное требование клиент-банка. Как они интересно собираются читать такое поле ?
 
 Вот максимальные значения для 8-ми байтого целого (longlong, int64)
 
 #define _I64_MIN      (-9223372036854775807i64-1) /* minimum signed   __int64 value */
 #define _I64_MAX        9223372036854775807i64    /* maximum signed   __int64 value */
 #define _UI64_MAX       18446744073709551615ui64  /* maximum unsigned __int64 value */
 
 Эти ограничения работают и для харбора, если значение числа больше,
 число преобразуется в 8-ми байтовый double с потерей последних значащих
 цифр. 128-битные целые по-моему в моду еще не вошли
   
 Есть ли выход ? Он есть всегда
 Можно например написать процедуру на C и непосредственно копировать
 20-ти байтовую строку в буфер текущей записи
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 09 Nov 2005 12:48    Post subject: |   |  
				| 
 |  
				| Спасибо за участие в теме. Буду надеятся на дальнейшую помощь с харбором в случае подобных вопросов
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| garik 
 
 
 Joined: 25 Jul 2005
 Posts: 40
 Location: Ruslan
 Occupation: it
 Interests: moscow
 
 | 
			
				|  Posted: 09 Nov 2005 14:50    Post subject: |   |  
				| 
 |  
				| Спасибо за содержательный ответ.Вообще беда с этими клиент-банками.То 20-ти значные числа они хотят, то название поля дбф-базы более 10-ти символов...Будем боротся со специалистами банка. |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Олег Смирнов 
 
 
 Joined: 06 Sep 2004
 Posts: 821
 Location: Олег Смирнов
 Occupation: Раут (поганист-сисадмин)
 Interests: Новосибирск
 
 | 
			
				|  Posted: 09 Nov 2005 20:16    Post subject: |   |  
				| 
 |  
				|  	  | garik wrote: |  	  | Будем боротся со специалистами банка. | 
 У меня вообще такое впечатление, что специалисты Вашего банка чего-то там недодумали... Ну нахрена им такое длинное цифровое поле?.. На C его можно создать и заполнить, а читать они его чем собираются?!. Если тоже с помощью C - так не проще ли сделать это поле уже тупо текстовым?
 _________________
 С уважением, Олег Р. Смирн
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |