Clarion, Clarion 7
	Модератор:  Дед Пахом 
	
		
					Правила форума  
			При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете. 
А так же пользуйтесь спец. тегами при вставке исходников!!!
		
		
	 
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  04 Ноябрь 2021, 9:55 
			
			
			
			
			
			Привет всем !
Есть прекрасная функция LongToHEX() для конвертации числа из 10-чной в 16-тиричную систему исчисления.
А есть ли обратная функция ? 
Есть строка 'ABCD' - можно ли как-то просто получить 10-тичное значение ?
Понятно, что можно распарсить в цикле с младшего разряда ... но неужели нет готового метода ? 
Заранее спасибо !
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров 
 
	
		
		
		
			
				
								Дед Пахом 							 
						Старичок 			
		Сообщения:  3346  		Зарегистрирован:  07 Июль 2005, 16:51 		
		
																Откуда:  Москва, Россия 
							    Благодарил (а):  20 раз  
    Поблагодарили:  56 раз  
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Дед Пахом   »  04 Ноябрь 2021, 10:09 
			
			
			
			
			
			Код: Выделить всё 
sHexStr   STRING('ABCD')
x = EVALUATE('0' & sHexStr & 'h') 
			
			
									
						
							С уважением, ДП
			
						 
		 
				
		
		 
	 
	Дед Пахом 
 
	
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  04 Ноябрь 2021, 11:45 
			
			
			
			
			
			Всё работает. Теперь удалось сделать отображение версий DLL в человекочитабельном виде. 
 
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров 
 
	
		
		
		
			
				
								Дед Пахом 							 
						Старичок 			
		Сообщения:  3346  		Зарегистрирован:  07 Июль 2005, 16:51 		
		
																Откуда:  Москва, Россия 
							    Благодарил (а):  20 раз  
    Поблагодарили:  56 раз  
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Дед Пахом   »  04 Ноябрь 2021, 11:49 
			
			
			
			
			
			0x353Eh это сразу во всех форматах, надо либо 0x353E (c/c++), либо 0353Eh (Clarion).
			
			
									
						
							С уважением, ДП
			
						 
		 
				
		
		 
	 
	Дед Пахом 
 
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  04 Ноябрь 2021, 11:51 
			
			
			
			
			
			Спасибо. Сделал вариант 0x353E - думаю сисадминам он более понятен, чем Clarion'новский. 
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров 
 
	
		
		
		
			
				
																			
								kreator 							 
						✯ Ветеран ✯ 			
		Сообщения:  5235  		Зарегистрирован:  28 Май 2009, 15:54 		
		
											Откуда:  Москва 
							    Благодарил (а):  11 раз  
    Поблагодарили:  26 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 kreator   »  04 Ноябрь 2021, 14:04 
			
			
			
			
			
			У меня тоже есть такая же конвертация. Через evaluate. Только забыл зачем этот evaluate там нужен? Старость - не радость.  
 Может здесь это уже обсуждали? Не мог же я сам это придумать?  
   
			
			
									
						
							We are hard at work… for you.   
 			
						 
		 
				
		
		 
	 
	kreator 
 
	
		
		
		
			
				
																			
								gopstop2007 							 
						Полимат 			
		Сообщения:  1841  		Зарегистрирован:  25 Март 2009, 21:55 		
		
						    Благодарил (а):  30 раз  
    Поблагодарили:  10 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 gopstop2007   »  04 Ноябрь 2021, 14:59 
			
			
			
			
			
			Игорь Столяров  писал(а): 04 Ноябрь 2021, 11:45 
Всё работает. Теперь удалось сделать отображение версий DLL в человекочитабельном виде. 
 
Пока не сталкивался, но все равно интересно, как вы проверяете?
В основном app.exe или дополнительного? И если можете, поделитесь кусочком кода сего чуда  
 Спасибо заранее.
 
			
			
									
						
							“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
			
						 
		 
				
		
		 
	 
	gopstop2007 
 
	
	
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  01 Август 2023, 7:07 
			
			
			
			
			
			Нашёл интересный, и наверно оптимальный, вариант сабжа ! 
 
Код: Выделить всё 
HexToLong            PROCEDURE  (String pHex)  !,Long
RetVal               Long,Auto
  Code
  pHex   = Upper(pHex)
  RetVal = InString(Sub(pHex,Len(Clip(pHex)),1),'123456789ABCDEF',1)
  If Len(Clip(pHex)) > 1
     RetVal += 16 * HexToLong(Sub(pHex,1,Len(Clip(pHex)) - 1))
  end
  Return RetVal  
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров 
 
	
		
		
		
			
				
								Дед Пахом 							 
						Старичок 			
		Сообщения:  3346  		Зарегистрирован:  07 Июль 2005, 16:51 		
		
																Откуда:  Москва, Россия 
							    Благодарил (а):  20 раз  
    Поблагодарили:  56 раз  
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Дед Пахом   »  01 Август 2023, 12:00 
			
			
			
			
			
			Ну с рекурсией так себе скорость будет. Да ещё эти Clip, Len, InString явно не убыстряют.
			
			
									
						
							С уважением, ДП
			
						 
		 
				
		
		 
	 
	Дед Пахом 
 
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  01 Август 2023, 12:34 
			
			
			
			
			
			Здесь рекурсия предсказуемая ... В принципе, её мона заменить на цикл Len(pHex) по строке. 
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров 
 
	
		
		
		
			
				
								Дед Пахом 							 
						Старичок 			
		Сообщения:  3346  		Зарегистрирован:  07 Июль 2005, 16:51 		
		
																Откуда:  Москва, Россия 
							    Благодарил (а):  20 раз  
    Поблагодарили:  56 раз  
							
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Дед Пахом   »  01 Август 2023, 12:44 
			
			
			
			
			
			Мне нравится это "В принципе" 
 
			
			
									
						
							С уважением, ДП
			
						 
		 
				
		
		 
	 
	Дед Пахом 
 
	
		
		
		
			
				
								Игорь Столяров 							 
						Ветеран движения 			
		Сообщения:  8270  		Зарегистрирован:  07 Июль 2005, 10:19 		
		
											Откуда:  г. Ростов-на-ДоМу 
							    Благодарил (а):  34 раза  
    Поблагодарили:  106 раз  
						
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Игорь Столяров   »  01 Август 2023, 13:14 
			
			
			
			
			
			Здесь нет халявщиков и мониторщиков ! 
 На вскидку без рекурсии: 
Код: Выделить всё 
ZINT::HexToLong  Procedure(String pHex)  !,Long
RetVal  Long(0)
lCoef   Long(1)
bCount  Byte,Auto
  Code
  Loop bCount = Len(pHex) to 1 by -1
    RetVal += InString(Upper(Sub(pHex,bCount,1)),'123456789ABCDEF',1) * lCoef
    lCoef  *= 16
  end
  Return RetVal
Быстрее кусать строку как массив, но мы за безопасный код ! 
 
			
			
									
						
							За теми, кто отстал, не возвращаться ! 
 Кодекс
 			
						 
		 
				
		
		 
	 
	Игорь Столяров