| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			BinData oбработка исключений / catch exception, AX 4
			 
			
			Добрый день, 
		
		
		
		
		
		
		
	Есть код: X++: BinData tmpBinData = new BinData(); str text; ; tmpBinData.setAsciiData(text); Error:Invalid character in ASCII string. All characters must be >= 0 and <= 255. Ошибку надо поймать, и вместо неё отобразить нужную для пользователя информацию. X++: try { tmpBinData.setAsciiData(text); } catch { throw error(""); } Второй параметр _codePage = 65001 к setAsciiData() не подходит, так как ошибка должна быть. Единственное что пока придумал, сделать так: X++: TextBuffer tb = new TextBuffer(); int i; int charIntValue; char char; ; tb.appendText(text); for(i=0; i< tb.size(); i++) { char = tb.subStr(i, 1); charIntValue = System.Convert::ToInt16(System.Convert::ToChar(char)); if(charIntValue < 0 || charIntValue > 255) throw error(""); } tmpBinData.setAsciiData(text): Вопрос такой, можно ли как то отловить это исключение, в момент его появления используя try/catch. Или может возможно решить эту проблему менее громоздким способом.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Здравствуйте. 
		
		
		
		
		
		
			Скажите, а откуда вы получаете text? Если вы рассчитываете, что в этой переменной все символы из 1252 (8-ми битные), то может стоит лучше контролировать сам ввод информации. Если все таки не выходит, попробуйте использовать классы .NET System.Encoding - вроде там есть средства контроля символов в строке. 
				__________________ 
		
		
		
		
	http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть!  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: rDenis (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Эта проверка стоит в в варианте класса PDFViewer метод appendTextToPage(). То есть приходится работать с тем, что подается при генерации pdf.  
		
		
		
		
		
		
		
	Спасибо за наводку на System.Encoding , я уже бегло просмотрел что там есть, сейчас попробую углубиться.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Через for медленно идет . Сделал так: 
		
		
		
		
		
		
		
	X++: BinData tmpBinData = new BinData(); System.Text.Encoding e = System.Text.Encoding::GetEncoding(1252, new System.Text.EncoderExceptionFallback(), new System.Text.DecoderExceptionFallback()); Binary bi; ; try { bi = e.GetBytes(text); } catch(Exception::CLRError) { throw error(""); } tmpBinData.setAsciiData(text); plumbum спасибо за направление поиска  
		 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ага, не за что  
		
		
		
		
		
		
			![]() я ж даже namespace не тот указал 
				__________________ 
		
		
		
		
	http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть!  | 
| 
	
 | 
| Теги | 
| ax4.0, try/catch, исключения | 
| 
	
	 | 
	
		
  |