Что нового

механика SetError() или что будет если присвоить его переменной

running-frag

why me?
Сообщения
441
Репутация
60
есть код, недавно нашёл, сижу разбираюсь и не могу понять что присвоится переменной $hThumb\$hThumbEx если будет ошибка

код
Код:
Local $hBitmap
	Local $hImage
	Local $hThumb
	Local $hThumbEx
	
							_ScreenCapture_SetJPGQuality (100)
	$hBitmap =  			_ScreenCapture_CaptureWnd ("", $_winHandle, $_xE, $_yE, $_wE, $_hE, False)
							_GDIPlus_Startup ()
	$hImage = 				_GDIPlus_BitmapCreateFromHBITMAP ($hBitmap)
							_WinAPI_DeleteObject ($hBitmap)
	$hThumb = 				_resizeTempImage ($hImage, _GDIPlus_ImageGetWidth($hImage), _GDIPlus_ImageGetHeight($hImage))
	$hThumbEx = 			_resizeTempImage ($hImage, _GDIPlus_ImageGetWidth($hImage) *$_expand, _GDIPlus_ImageGetHeight($hImage) *$_expand)
	
	
	_GDIPlus_ImageDispose($hImage)
	_GDIPlus_ImageSaveToFile($hThumb, @DesktopDir & '\temp.png')
	_GDIPlus_ImageSaveToFile($hThumbEx, @DesktopDir & '\tempEx.png')
	
	_GDIPlus_ImageDispose($hThumb)
	_GDIPlus_ImageDispose($hThumbEx)
	_GDIPlus_Shutdown()


а вот где может выпрыгнуть SetError ()
Код:
Func _resizeTempImage ($hImage, $iWidth, $iHeight)
  Local $Ret = DllCall($ghGDIPDll, 'int', 'GdipGetImageThumbnail', 'ptr', $hImage, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr', 0, 'ptr', 0)
  If @error Or $Ret[0] Then Return SetError(1,0,0)
	  
  Return $Ret[4]


Отсюда возникли вопросы.
1. Что будет в переменных если функция отдаст ошибку?
2. Как переписать код без функции. Т.е. нужно в первых код вписать второй без каких либо функций. С учётом того что проверка на ошибку сохранится.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Переменные будут равны 0 - за это отвечает 3 параметр SetError.
 
Верх