Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Programlama dilleri konusunda bilgi paylaşım alanıdır.
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

Arkadaşlar Edit1 ve Edit2 içerisindeki kelimeler eğer aynı ise tamamen silip geri kalan hiç benzemeyenleri edit3 e aktarmak istiyorum
Bu bahsettiğim işlem excelde yapılıyor fakat ben autoit le yapmak istiyorum
Örnek bir excell vba kodu
http://www.excel.web.tr/showpost.php?s= ... ostcount=9

ve benim kodlarım

Kod: Tümünü seç

#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 360, 405)
$Edit1 = GUICtrlCreateEdit("", 41, 48, 119, 121)
GUICtrlSetData(-1, "")
$Edit2 = GUICtrlCreateEdit("", 200, 48, 121, 121)
GUICtrlSetData(-1, "")
$Sil = GUICtrlCreateButton("Sil", 256, 368, 75, 25)
$Edit3 = GUICtrlCreateEdit("", 48, 184, 281, 176)
GUISetState(@SW_SHOW)
$AddTxtFile1 = FileOpen(@ScriptDir & '\File1.txt', 0)
GUICtrlSetData($Edit1, FileRead($AddTxtFile1))
$AddTxtFile2 = FileOpen(@ScriptDir & '\File2.txt', 0)
GUICtrlSetData($Edit2, FileRead($AddTxtFile2))
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Sil
			$okuedit1 = GUICtrlRead($Edit1)
			$okuedit2 = GUICtrlRead($Edit2)
			$aUniques =_ArrayUnique($okuedit1)
			$aUniques2 =_ArrayUnique($okuedit2)
    For $i = UBound($aUniques) To UBound($aUniques2) -1
		If $aUniques[$i] = $aUniques2[$i] Then
		$ayniolansil1 = _ArrayDelete($aUniques, $i)
		$ayniolansil2 = _ArrayDelete($aUniques2, $i)
		EndIf
		GUICtrlSetData($Edit3, $aUniques[$i] & @CRLF & $aUniques2[$i])
    Next
	EndSwitch
WEnd
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

Re: Autoit Benzer kelimeleri tamamen silmek?

Mesaj gönderen BlueLife »

@anxious

Exell çok nadir kullandığım bir program olduğu için, excell hakkında fazla bilgim yok malesef. İki inputtaki kelimeleri birleştirip benzerlerini silmek için kısaca aşağıdaki basit örneği incelersin. En azından sana bir fikir verecektir...

Kod: Tümünü seç

#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 360, 405)
$Edit1 = GUICtrlCreateEdit("", 41, 48, 119, 121)
$Edit2 = GUICtrlCreateEdit("", 200, 48, 121, 121)
$Sil = GUICtrlCreateButton("Sil", 256, 368, 75, 25)
$Edit3 = GUICtrlCreateEdit("", 48, 184, 281, 176)
GUISetState(@SW_SHOW)

;Sen ayarlarsın bu kısmı
GUICtrlSetData($Edit1, "Merhaba Dünya" &  @crlf & "bu gün")
GUICtrlSetData($Edit2, "Merhaba Bu gün hava günesli")
;~ $AddTxtFile1 = FileOpen(@ScriptDir & '\File1.txt', 0)
;~ GUICtrlSetData($Edit1, FileRead($AddTxtFile1))
;~ $AddTxtFile2 = FileOpen(@ScriptDir & '\File2.txt', 0)
;~ GUICtrlSetData($Edit2, FileRead($AddTxtFile2))

Local $Value1,$Value2,$Value3

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Sil
			$Value1 = _Split_Word(GUICtrlRead($Edit1))
			$Value2 = _Split_Word(GUICtrlRead($Edit2))

;~ 			_ArrayDisplay($Value1)
;~ 			_ArrayDisplay($Value2)

			Redim $Value1[$Value1[0] + $Value2[0] + 1]
			For $I = 1 To $Value2[0]
				$Value1[0] += 1
				$Value1[$Value1[0]] = $Value2[$I]
			Next

			_ArrayDelete($Value1, 0)
			$Value1 = _ArrayUnique($Value1)

			$Value3 = ""
			For $I = 1 To $Value1[0]
				$Value3 &= $Value1[$I] & @CRLF
			Next
			GUICtrlSetData($Edit3,$Value3)
	EndSwitch
WEnd

Func _Split_Word($sText)
	Local $ret = StringRegExp($sText, '^|"([^"]*)"|\S+', 3)
	$ret[0] = UBound($ret)-1
	Return $ret
EndFunc
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek?

Mesaj gönderen anxious »

BlueLife yazdı: 06 Oca 2018, 10:56 @anxious

Exell çok nadir kullandığım bir program olduğu için, excell hakkında fazla bilgim yok malesef. İki Editteki kelimeleri birleştirip benzerlerini silmek için kısaca aşağıdaki basit örneği incelersin. En azından sana bir fikir verecektir...
@BlueLife Teşekkürler cevabınız için fakat istediğim bu değildi :cry:
Demek istediğim benzerlerin tümünü silmek,ama sizin bu örneğiniz örneğin 2 benzer varsa birini siliyor birini bırakıyor.
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

Re: Autoit Benzer kelimeleri tamamen silmek?

Mesaj gönderen BlueLife »

@anxious

Yanlış anlamışım kusura bakma :) Aşağıdakine bkarsın...

Kod: Tümünü seç

#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 360, 405)
$Edit1 = GUICtrlCreateEdit("", 41, 48, 119, 121)
$Edit2 = GUICtrlCreateEdit("", 200, 48, 121, 121)
$Sil = GUICtrlCreateButton("Sil", 256, 368, 75, 25)
$Edit3 = GUICtrlCreateEdit("", 48, 184, 281, 176)
GUISetState(@SW_SHOW)

;Sen ayarlarsın bu kısmı
GUICtrlSetData($Edit1, "Merhaba Dünya" &  @crlf & "bu gün")
GUICtrlSetData($Edit2, "Merhaba Bu gün hava günesli")
;~ $AddTxtFile1 = FileOpen(@ScriptDir & '\File1.txt', 0)
;~ GUICtrlSetData($Edit1, FileRead($AddTxtFile1))
;~ $AddTxtFile2 = FileOpen(@ScriptDir & '\File2.txt', 0)
;~ GUICtrlSetData($Edit2, FileRead($AddTxtFile2))

Local $Value1,$Value2,$Value3
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Sil
			$Value1 = _Split_Word(GUICtrlRead($Edit1))
			$Value2 = _Split_Word(GUICtrlRead($Edit2))

			$Value3 = @CRLF
			For $I = 1 To $Value1[0]
				If StringInStr($Value3,@CRLF & $Value1[$I] & @CRLF) = 0 Then
					$Value3 &= $Value1[$I] & @CRLF
				Else
					;Edit içinde aynı kelimeden birden fazla varsa burayı kullanırsın
				EndIf
			Next

			For $I = 1 To $Value2[0]
				If StringInStr($Value3,@CRLF & $Value2[$I] & @CRLF) = 0 Then
					$Value3 &= $Value2[$I] & @CRLF
				Else
					$Value3 = StringReplace($Value3,$Value2[$I] & @CRLF,"")
				EndIf
			Next

			GUICtrlSetData($Edit3,StringStripWS($Value3,3))
	EndSwitch
WEnd

Func _Split_Word($sText)
	Local $ret = StringRegExp($sText, '^|"([^"]*)"|\S+', 3)
	$ret[0] = UBound($ret)-1
	Return $ret
EndFunc
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek?

Mesaj gönderen anxious »

BlueLife yazdı: 06 Oca 2018, 18:40 @anxious

Yanlış anlamışım kusura bakma :) Aşağıdakine bkarsın...
;Edit içinde aynı kelimeden birden fazla varsa burayı kullanırsın demişsiniz ya eğer birden fazla varsa _ArrayDelete($Value1, 0) mı yapmam gerek yapamadım :oops:
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen BlueLife »

@anxious
Biraz aşağıda örnek vardı. Kısaca aşağıdaki replaceyi eklemen yeterli. Edit içinde aynı kelimeler varsa silecektir...
$Value3 = StringReplace($Value3,$Value1[$I] & @CRLF,"")
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

BlueLife yazdı: 06 Oca 2018, 20:14 @anxious
Biraz aşağıda örnek vardı. Kısaca aşağıdaki replaceyi eklemen yeterli. Edit içinde aynı kelimeler varsa silecektir...
$Value3 = StringReplace($Value3,$Value1[$I] & @CRLF,"")
Onu zaten ekledim hocam ama sayıları algılamıyor :)
örneğin
Edit1 de şunlar olsun
abcd
test
test
asdf
123
123

Edit2 de şunlar olsun
abc
test
test
asdf
123
123

123 kelimelerini silmiyor
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen BlueLife »

@anxious

Aslen fazla dikkat etmedim örnek kodları verirken. Lakin verdiğin örneği denedim ve sorun görünmüyor. Sorun çözüldü mü?
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

BlueLife yazdı: 06 Oca 2018, 21:59 @anxious

Aslen fazla dikkat etmedim örnek kodları verirken. Lakin verdiğin örneği denedim ve sorun görünmüyor. Sorun çözüldü mü?
Malesef çözülmedi :(
https://image.prntscr.com/image/WJT3BDJ ... C4JeIw.png
darendeli
Byte4
Byte4
Mesajlar: 183
Kayıt: 06 Haz 2016, 16:55

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen darendeli »

Evet Bende Denedim Güzel Çalışıyor...
Program Yazmanın En Güzel Yanı Birilerinin Bu Programlardan Faydalandığını Görmektir..
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

Birde şöyle deneyin
Edit1 de şunlar olsun
abcd
test
test
asdf
123
123

Edit2 de şunlar olsun
abc
test
test
asdf
123
https://image.prntscr.com/image/4D7tGRp ... w3IGkQ.png
darendeli
Byte4
Byte4
Mesajlar: 183
Kayıt: 06 Haz 2016, 16:55

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen darendeli »

Sonuç abcd
abc
123 Kaldı Yani 1 kelimeden 2 tane varsa silmiyor Sadece aynılarını cıkartıyor Siz komple o yazıdan varsa silinsin istiyorsunuz galiba
Program Yazmanın En Güzel Yanı Birilerinin Bu Programlardan Faydalandığını Görmektir..
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

Eğer Edit1 ve Edit2 de aynı kelime varsa bunun miktarı hiç önemli değil silinsin istiyorum
Yani bu durumda orda 123 kelimesinin Edit3'e Aktarılmaması gerekir :roll:
darendeli
Byte4
Byte4
Mesajlar: 183
Kayıt: 06 Haz 2016, 16:55

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen darendeli »

Demek istedigini Anladım 2 . yada 1. listeye Kelimeler Gireceksin Bu kelimeler Diger Listede Kac tane olursa olsun Silinecek Kalan Kelimeler 3. listeye Aktarılacak BattleField4 teim Bakacam :D
Program Yazmanın En Güzel Yanı Birilerinin Bu Programlardan Faydalandığını Görmektir..
anxious
Byte3
Byte3
Mesajlar: 106
Kayıt: 11 Mar 2015, 07:56

Re: Autoit Benzer kelimeleri tamamen silmek? - Çözüldü

Mesaj gönderen anxious »

Aynen öyle aslında bluelife arkadaşın yaptığı sorunsuz fakat
Eğer Edit1 de birtane kelime Edit2 de iki tane kelime varsa birini gene bırakıyor
Sadece aynı olanlar kelime sayısı bir birine eşitse siliyor.
Cevapla