Jump to content
Son zamanlarda artan kullanıcı hesap hırsızlıkları sebebiyle tüm kullanıcılara şifre sıfırlama maili gönderilmiştir. Lütfen güveli şifreler seçiniz. Mevcut e-mail adresinize erişemiyorsanız, en aşağıdaki destek linkinden bize ulaşınız. ×

_Ayirgetir Ve _Aragetir Fonksiyonları


blackman12
 Share

Recommended Posts

StringBetween fonksiyonundan esinlenerek yazdığım bu fonksiyonlarla bir text içerisinden aradığınız bir kelimeyi alarak döndürebilirsiniz.

[codebox]Func _AyirGetir($text,$basla, $son = "</em></p>", $ayrac = "nbsp;", $flag = 0)
Local $aGetir, $aAyir
$aGetir = _AraGetir($text,$basla,$son,$flag)
if $flag = 1 Then
for $i = 0 to UBound($aGetir) -1
$aAyir = StringSplit($aGetir[$i],$ayrac)
$aGetir[$i] = $aAyir[$aAyir[0]]
Next
Return $aGetir
Else
$aAyir = StringSplit($aGetir,$ayrac)
Return $aAyir[$aAyir[0]]
EndIf
EndFunc

func _AraGetir($text,$basla= "</strong>:",$son="</p>",$flag = 0)
if $text = "" then Return
$basla = StringRegExpReplace($basla, "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)", "\\$1")
$son = StringRegExpReplace($son, "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)", "\\$1")
$getirelecek = StringRegExp($text, "(?s)(?i)" & $basla & "(.*?)" & $son, 3)
if $flag = 1 Then Return $getirelecek
Return _Turkcelestir($getirelecek[0])
EndFunc[/codebox]
Link to comment
Share on other sites

  • 3 hafta sonra ...

Hocam, [color="#0000FF"]StringRegExpReplace(),BitAND(), BitNOT(), BitOR(), BitRotate(), BitShift(), BitXOR(),Sqrt()[/color] bu komutları bir türlü çözemedim. İngilizceden fazla anladığım yok. Siz müsait olduğunuz bir vakitte bunların kısaca bir tanımını yaparak, yine kısaca örneklendirirseniz makbule geçer. Bir çok örnekte görmemize rağmen tam olarak çözemiyoruz görevlerini.

Edited by asmazh
Link to comment
Share on other sites

Sqrt -> karekök alma işlemi.

BitAnd, BitOr pek bizim için geçerli değil.Aslında ben programcılar ne için kullanıyor onu da tam anlayabilmiş değilim fakat özet geçmek gerekirse verdiğin değerleri bitlerini (1 ve 0 larını) karşılaştırarak onun decimal sonucunu veriyor.

StringRegExpReplace()-> Bu fonksiyon ölümdür.Bu fonksiyon ile yapamayacağın string işlemi yoktur.Fakat o kadar derindir ki kendileri biz de tam olarak çözebilmiş değiliz.Ancak autoit forumlarından bulduklarımızı biraz modifiye olarak kullanıyoruz.

Umarım açıklayabilmişimdir.Belki blackman12 daha iyi biliyodur ondan da bekliyoruz :)

Link to comment
Share on other sites

Biraz ekleme yapmak gerekirse:

Sqrt bana göre gereksiz bile denebilir. matematik bilen adam x^(1/2) şeklinde de karekök alabilir hatta bu yöntemle küp kök alabilirim ama autoitte küp kök için bir fonksiyon bulamazsınız mesela.

BitOR ve BitAND; eğer 2 tabanında verileriniz var ise (örneğin $deneme = true veya $degisken = false gibi) ve siz $button değişkenli butona bastığınızda bu iki durumu göz önünde bulundurarak bir işlem yaptıracaksanız kullanabilirsiniz. Örnek vermek gerekirse Fast Airbenderın son sürümünde görüceksiniz.
Program Kış uykusundayken $kisuykusu = 1 değerini alıyor, ve transparan modda olduğu için diğer pencerelerin üstüne çıkıyor.
Programda Her zaman üstte seçeneği seçildiğinde de $ontop = 1 değerini alıyor.
Yani bu iki değerden biri 1 e eşitse ben penceremiz diğer pencerelerin üstüne yerleştirmek istiyorum, bu durumda ben winsetontop komutunu verirken WinSetOnTop ( "title", "text", BitOR($kisuykusu,$ontop)) şeklinde kullanıyorum. Böylece kisuykusu = 1 ken $ontop = 0 olsa dahi pencere üstte oluyor. ya da tam tersinde de durum aynı.
BitAND ise aynı anda ikisi de 1 olmalıki sonuç 1 çıksın. buna uygun örneği sen geliştir ne kadar anladığını görelim ;)

StringRegExpReplace() ı da biraz anladım ama anlatırsam benimde kafam karışır :D bu komut içimde bi yaradır ki sorma :D blue_life a sormak lazım onu da.

Link to comment
Share on other sites

Açıkçası çok fazla kullanmadığımız komutlar. StringRegExp ve StringRegExpReplace için basit bir örnek verelim.
Ama gerçekten bu komutların çok geniş bir kullanım yelpazesi vardır.

[codebox]Local $Value = "Selam Millet 1-2-3"

;String içinde rakam varmı bakalım. Olumlu sonuçlar 1 ile döner
;Ayrıntılı bilgi için yardım dosyasına bakınız.
MsgBox(64,"StringRegExp",StringRegExp($Value,"[0-9]"))

;String içinde rakam harici bir şey varmı bakalım. Olumlu sonuçlar 1 ile döner
MsgBox(64,"StringRegExp",StringRegExp($Value,"[^0-9]"))

;String içinde rakam haricindekinleri silelim
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[0-9]",""))

;String içindeki rakamları silelim
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[^0-9]",""))

;A-Z dahil arasındaki büyük harfleri silelim
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[A-Z]",""))

;Şimdi a-z dahil arasındaki küçük harfleri silelim
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[a-z]",""))

;Şimdi ise sesli harfleri silelim :)
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[aeıioöuüAEIİOÖUÜ]",""))

;Şimdi ise sesli harfler dışındakinleri silelim
MsgBox(64,"StringRegExpReplace",StringRegExpReplace($Value,"[^aeıioöuüAEIİOÖUÜ]",""))

;Umarım bu kısım anlaşılmıştır[/codebox]

Edited by blue_life
Link to comment
Share on other sites

Üstadım buradaki komutların her ikisi de aynı. Galiba bir karışıklık olsa gerek.
[code];String içinde rakam varmı bakalım. Olumlu sonuçlar 1 ile döner;Ayrıntılı bilgi için yardım dosyasına bakınız.
MsgBox(64,"StringRegExp",StringRegExp($Value,"[1-9]"))

;String içinde rakam harici bir şey varmı bakalım. Olumlu sonuçlar 1 ile döner
MsgBox(64,"StringRegExp",StringRegExp($Value,"[1-9]"))[/code]

Edited by blue_life
Link to comment
Share on other sites

@radyofon

Evet haklısın. :) arada ufak bir karakter hayati önem taşıyabiliyor burda olduğu gibi. Neyse ilgili kısmı düzeltelim.
0-9 kısaca 0123456789 anlamını taşımaktadır. A-Z ise kendileriyle birlikte arasındaki ingilizce harlfer. Tabi tek tek karakterleride yazabiliriz. O zaman daha uzun bir kodumuz olacak. Ayrıca bu komutlardaki string büyük ve küçük harlere de farklı olabiliyor.

Link to comment
Share on other sites

Kısaca ne aradığına bağlı. Misal sen bir text verip, içinde neyi arayacağını söyle ve sana örnek verelim. Ben bu komutlar için çok basit bir örnek vermeye çalıştım. Aslında nadir kullandığım bir komut. Diğer string komutlarıyla da bu komtuların yapabildiği yapılabilir ama diğerinde çok uzun bir kod yazarken bunda kısaca bir kod işimizi görebiliyor. Ben genelde replace ve içerikte bir şey araken kullanıyorum.

Msail uzak ipmizi basit bir yol ile alalım

[code]Global $UzakIP
Global $InetRead = InetRead("http://www.cmyip.com",1)
If @error = 0 Then
$UzakIP = StringRegExp(BinaryToString($InetRead), '((?:\d+)(?:\.\d+){3})', 3)
If IsArray($UzakIP) = 1 Then MsgBox(64,"Ip adresim",$UzakIP[0])
EndIf[/code]

Edit:Ben uyku moduna geçiyorum... Kısaca bu komutlar çok işlevzel ama anlamak için çok kurcalamak gerekli. Ben ihtiyacım olduğunda karıştırarak ihtiyacımı giderebiliyorum. Aslında böyle basit örneklerle ilgili bir konu açıp bir toparlama yapsak fena olmaz.
Çalışmalarınızda başarılar dilerim, kolay gelsin arkadaşlar...

Edited by blue_life
Link to comment
Share on other sites

  • Administrator

[quote name='Bultar' date='07 April 2012 - 18:06 ' timestamp='1333811204' post='1182772']
Bunlara harcadığınız zamanı C# a yada ne bileyim C#.NET e ayırsaydınız şimdiye işlevsel programlar yazıyor olurdunuz.
[/quote]

İşlevsellik göreceli bir kavramdır. Toplam 3mb tutmayan bir hızlı yazılım geliştirme ortamının yararlarını anlatmaya gerek yok. Platform seçimi, bir işi en efektif şekilde halletmek üstüne olmalıdır.

Link to comment
Share on other sites

Bana göre programlamada kullandığınız dilden daha önemli şeyler var. Ve bunların en başında programlama mantığını bilmek geliyor. Bende mantığımı geliştiriyorum bu ufak scriptlerle. Ayrıca AutoIT'de PNG ile gui dizayn eden adam ilerde uzaya füze bile fırlatabilirmiş onu keşfettim :D

Link to comment
Share on other sites

  • 4 hafta sonra ...

Sayın Hocalarım, "ByRef"in bir fonksiyondaki görevi tam olarak nedir?[code]
Func _NewState(ByRef $Hwnd, $Misal = ":)")



EndFunc
[/code]
Misal, ByRef, buradaki $Hwnd değişkenine nasıl bir işlev veriyor?

Edited by asmazh
Link to comment
Share on other sites

Yani fonksiyona daha önceden tanımlanmış bir değişken gönderecekseniz byrefi kullanabilirsiniz ama bu zorunlu değildir değişkenlerin hafızada kapladığı alanı optimize etmek için kullanılır. Blue_Life ın verdiği örnekte _test fonksiyonunu _Test("Selam Millet") şeklinde kullanıcaksak byref yazmamak lazım.

Link to comment
Share on other sites

  • 1 yıl yıl...

@asmazh

Byref için basit bir örnek verelim...

Local $Selam = "Selam Millet!"
_Test($Selam)
MsgBox(64,"",$Selam)

Func _Test(ByRef $HIM)
$HIM &= @CRLF & "Bu gün nasılsınız?"
EndFunc

Yani byref func dışındaki değişkeni func ile değiştirmemizi sağlıyor byref yazmayınca sadece selam millet diyor. byref varken dim, local yada global yazınca error veriyor "&=" ifadesini "=" yapsakta gene error veriyor. Byrefin görevi sadece bu mu yoksa başka bir işede yarıyor mu?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...