Autoit Return global local nedir nasıl kullanılır? - Çözüldü

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Autoit Return global local nedir nasıl kullanılır? - Çözüldü

Mesaj gönderen anxious »

Merhaba arkadaşlar öncelikle iyi sahurlar :)
autoit script de bazı terimleri bilmiyorum ve nasıl kullanılıyor şu terimler
basit bir biçimde anlatıp örnek verebilirmisiniz çünki ben başka bir programlama dili bilmiyorum.

Bu komutlar nedir nasıl kullanılıyor?
Global
Local
Return
SetExtended

ayrıca @CR @LF ve @CRLF bu üçü alt satıra geç demek değilmi ve aynı şey değillermi?
şimdiden teşekkür ediyorum iyi forumlar.
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen BlueLife »

@anxious

Merhaba, kısaca global değişkeni tanıtıldıktan sonra script dosyasının her yerine kullanılabilir. Local ise genelde bir fonksiyon içinde kullanılır ve fonksiyondan çıkıldığından kullanılamaz. Kısaca örnek vereyim.

Kod: Tümünü seç

Global $BenMesurum = "Beni tüm ülke tanır" & @CRLF

;Global ile tanıttığımız değişken burda kullanılabilir
ConsoleWrite($BenMesurum)

;Local ile tanıttığımız değişken burda kullanılamaz.

_Fonksion()

Func _Fonksion()
   Local $BenMesurumBolgemde = "Beni sadece kasabamdakinler tanır"& @CRLF

   ;Global ile tanıttığımız değişken burda kullanılabilir
   ConsoleWrite($BenMesurum)

   ;Local ile tanıttığımız değişken burda kullanılabilir
   ConsoleWrite($BenMesurumBolgemde)
EndFunc   ;==>TogglePause

;Global ile tanıttığımız değişken burda kullanılabilir
ConsoleWrite($BenMesurum)

;Local ile tanıttığımız değişken burda kullanılamaz.
Return bir fonksiyondan hangi bilgi ile dönüleceğini belirler. Dönüşlerde SetExtended ve SetError ilede numara cinsinden bilgi ile dönüş yapılabilir.
Kısaca sana bir örnek vereyim.

Kod: Tümünü seç

Global $Test = _Test()
Global $error = @error
Global $extended = @Extended

MsgBox(64,"","Dönen: " & $Test & @Crlf & "Error: " & $error & @Crlf & "Extended: " & $extended)

Func _Test()
   Local $Computer = @ComputerName

   ;Diğer kodlar....

   Return SetError(1,2,$Computer)
EndFunc


$Test = _Test2()
$error = @error ;fonksiyonda atama yapılmadığı için 0 olarak döner
$extended = @Extended

MsgBox(64,"","Dönen: " & $Test & @Crlf & "Error: " & $error & @Crlf & "Extended: " & $extended)

Func _Test2()
   Local $Computer = @ComputerName

   ;Diğer kodlar....

   Return SetExtended(7,$Computer)
EndFunc
@CR , @LF ve @CRLF konusuna gelirsek, kısaca sen notepadi açıp bir şeyler yazıp entara basınca @CRLF yapmış oluyorsun. Bizim entara basıp alt satıra geçtiğimizde iki karakter yazılır @CR ve @LF

Linux gibi bazı sistemler bu iki karakter yerine tek karakter kullanabiliyor. Kısaca windows için bir şeyler ayarlıyorsan çıktı dosyanda @crlf kullanmaya dikkat et.

Kolay gelsin....
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen anxious »

global için verdiğiniz örnek çok güzel Teşekkür ederim cevabınız için tümünü anladım ama local ı hala anlayamadım bu locala atanan değişken normaldede çalışıyor konsolda
yani başına local koymadanda problemsiz çalışıyor global olarak kullanılmayacaksa başına local koymamız gereksiz değilmi mazur görün anlamadığımdan soruyorum teşekkürler tekrardan

misal

Kod: Tümünü seç

_Fonksion()

Func _Fonksion()
  $BenMesurumBolgemde = "Beni sadece kasabamdakinler tanır"& @CRLF

   ;Local ile tanıttığımız değişken burda kullanılabilir
   ConsoleWrite($BenMesurumBolgemde)
EndFunc   ;==>TogglePause
ayrıca
@CRLF,@CR,@LF için benim örneğim doğrumudur?

Kod: Tümünü seç

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 252, 206)
$Edit1 = GUICtrlCreateEdit("", 32, 16, 185, 105)
GUICtrlSetData($Edit1, "Kelime1" & @CRLF & "Kelime2" & @CRLF & "Kelime3")
$Button1 = GUICtrlCreateButton("Button1", 48, 168, 155, 25)
$Label1 = GUICtrlCreateLabel("Label1", 48, 136, 156, 17)
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

        Case $Button1
		$okuma = GUICtrlRead($Edit1)
		$satir = StringSplit(StringReplace($okuma, @CR, ""), @LF)
            For $var = 0 To UBound($satir) - 1
				Sleep(500)
				  GUICtrlSetData($Label1, $satir[$var])
            Next

	EndSwitch
WEnd
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen BlueLife »

@anxious

Script dosyanın başında local ile tanımlama yapsanda bu global olarak tanımlanır. Fonksiyon içlerinde bir çok değişken olabiliyor. Haliyle bunlar local olarak tanıtılır ve fonksiyondaki işlem bitince bir nevi silinir ilgili değişkendeki bilgiler.

Kısaca verdiğin örnekte _Fonksion() satırı altına consleWrite satırın eklersen hata aldığını görürsün. Dediğim gibi local genellikle fonksiyon içinde kullanılıyor. Fonksiyon dan çıkılınca veyahut başka fonksiyonda bu değişkenler tanınmaz.

Diğer örnek koda gelirsek, sorun görünmüyor. Genelde @LF karakteri baz alınıyordu tabi kodlayana göre değişmekle beraber.
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen anxious »

teşekkürler şöyle anlıyorum local fonksiyon içinde değişkenlerin başına eklenince fonksiyon içinde global olarak tanımlanıyor doğrumu anladım acaba :)
yani local de bir global sayılıyor ama fonksiyon içinde geçerli anlamışmıyım.
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen BlueLife »

@anxious
Evet fonksiyonda local ile kullanılan değişken sadece fonksiyon içinde geçerlidir. Değişkenler illa kodlamanın başında olacak diye bir şey yok. İstediğin yerde kurallara uyarak değişken atayabilirsin.

Ben bazı nedenlerden autoitin çok eski bir sürümünü kullanıyorum. Benim kullandığım sürümde global, local tanımlar yapılmadan direk değişken atanabiliyor. Lakin bu şekilde hiç kullanmadım. Bu şekile alışmak büyük kodlama dosyalarında hatalar yapılmasına neden olur.

Tanımlanmamış değikenlerda hata almak için script dosyasının başına aşağıdaki satırı eklerim genelde.

Opt("MustDeclareVars", 1)
....
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen anxious »

BlueLife tekrar merhaba size tekrar bir soru sorabilirmiyim
Yukarıda verdiğiniz return örneğini anladım
Return Bazen fonksiyon dışında kullanıldığını görüyorum misal Return -1 burada eksi 1 nedir tam olarak neye göre belirliyorlar
birde Dim ve Redim var Dim'i biliyorum global ile aynı işi görüyor tabi buda tartışılır global varken Dim neden koyulmuş
ve Redim tam olarak nasıl kullanılıyor

Birde ContinueLoop var ContinueLoop genelde for döngüsünde kullanılıyor bana biraz gereksiz gibi görünüyor eğer döngü devam ediyor ise zaten eder ContinueLoop ile döngüyü tekrar etmenin ne anlamı var çözebilmiş değilim
Cevaplarsanız sevinirim
Teşekkürler
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen BlueLife »

@anxious

Return bir fonksiyon içinde kullanılır. Return ile fonksiyondan istenilen veri alınır. Bu bir yazı veayhut numara, array vs. gibi farklı değişken türleri olabilir. Return ile herangi bir atama yapılmazsa otomatik olarak 0 rakamı alınır.

Kod: Tümünü seç

MsgBox(64,"",_Test())
Func _Test()
   Return -1
EndFunc
Eksi 1 konusuna gelirsek autoitte sık kullanılan bir şey. Bir nevi varsayılan şeklindede algılanabilir. Misal guide oluşturulan son elemanın kimliğini ifade eder.

Ben dim ve redim komutlarını genelde array ile kullanıyorum. Misal bir arraya ekleme yapacağım zaman redim kullanıyorum. Arrayın içindeki tüm verileri silmek için dim (genelde farklı şekilde yapıyorum) kullanıyorum.

Kod: Tümünü seç

#include <Array.au3>

Local $Array[1]
$Array[0] = "Selam"
_ArrayDisplay($Array)

Redim $Array[2]
$Array[1] = "Millet"
_ArrayDisplay($Array)

Dim $Array[2]
_ArrayDisplay($Array)
ContinueLoop; For-Next, While-WEnd,Do-Until ... vs. gibi döngülerde kullanılır. Bunu kullanınca döngü devam etmeden başa döner ve devam eder.

Kod: Tümünü seç

For $i = 1 To 5
    If $i = 2 Then ContinueLoop
    MsgBox(0, "The value of $i is:", $i)
Next
Misal yukarıda 2. döngüde mesaj çıkmıyor. Yani döngü başa dönüyor.
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: Autoit Return global local nedir nasıl kullanılır?

Mesaj gönderen anxious »

Gayet açık ve net cevaplar teşekkür ederim saolun :)
Cevapla