Autoit dosyadan veri çekme - Çözüldü

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Autoit dosyadan veri çekme - Çözüldü

Mesaj gönderen waldezhk »

Merhaba Arkadaşlar kolar gelsin...

#include <Array.au3>
#include <File.au3>

Local $aArray, $Toplam = 0
Local $mesaj ="......"
MsgBox('0', '', $mesaj )
_FileReadToArray(@ScriptDir & '\Deneme.txt', $aArray) ;Toplanacak sayıların bulunduğu text dosyası
_ArrayDisplay($aArray)
For $i = 1 To $aArray[0]
$Toplam += $aArray[$i]
Next
TrayTip("....", "..", 10, 1)
MsgBox('0', 'Ortalaması', $Toplam / $aArray[0])
FileOpen(@ScriptDir & '\Sonuç.txt', 1) ;Ortalamanın yazılacağı text dosyası
If _FileCountLines(@ScriptDir & '\Sonuç.txt') = 0 Then
FileWrite(@ScriptDir & '\Sonuç.txt', $Toplam / $aArray[0])
Else
FileWrite(@ScriptDir & '\Sonuç.txt', @CRLF & $Toplam / $aArray[0])
EndIf
FileClose(@ScriptDir & '\Sonuç.txt')
ShellExecute(@ScriptDir & '\Sonuç.txt')



bu kodları gui içerisine nasıl ekliyebiliriz ayrıca deneme.txt yi hedef bul diyerek kendim seçmek istiyorum ama yapamadım yardımcı olurmusunuz..
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15159
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2509 kez
Teşekkür edildi: 5311 kez

Re: autoit dosyadan veri çekme

Mesaj gönderen TRWE_2012 »

Bunlar Vısual Basıc kodları......

Dosya İndirme işlemine Gelirsek:
Autoit ile dosya indirmenin birçok yolu var.
TCP, InetGet, _InetGetSource, InetRead.

İndirdiğiniz dosyanın türünü biliyorsanız: _InetGetSource gayet esnekdir.
Verdiğiniz hedef dosyanın kaynak kodunu bir değişkene alır ve sizde bunu bildiğiniz uzantıyla bir dosyaya yazdırırsınız.

TCP ile TCPSend ve TCPRecv komutları ile tıpkı lan üzerinden dosya gönderip alır gibi dosya downloadı yapabilirsiniz. Hızlı ve güvenli bir yoldur. Sistem kaynaklarını doldurup pc yi yavaşlatmadan dosyayı indirir. Flashget, FDM, idman çoğu bu şekilde download yapıyor.

InetGet, direkt olarak dosyayı verdiğiniz konuma indirir

InetRead, _inetGetSource ile aynı sayılır, bu fonksiyonda verilen hedefdeki kaynağı okuyup bir değişkene atamakta kullanılabilir.

Değişkene atadığımız fonksiyonlar büyük downloadlar ile hiç sağlıklı değildir. Açıklamak gerekirse, yaptığımız ufak bir download yazılımı, sistemin raminden 3mb kullanan bir download yazılımı, 1gb bir dosyayı inetRead ile veya inetGetSource ile almaya çalışırsak, download bitiminde 1GB ram kullanır pozisyona gelir. Bunun yerine TCP ile okuduğumuz kadarını değişkende tutmadan direk dosyaya yazdırmak en iyi yoldur.

Daha detaylı bilgi için ;

http://www.kodevreni.com/613-autoit-gui ... B1m%C4%B1/ adresini ziyaret ediniz.?

TRWE_2012
SAKARYA 2016
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Re: autoit dosyadan veri çekme

Mesaj gönderen waldezhk »

sanırım beni yanlış anladınız ben dosya indirmek istemiyorum. var olan bir txt dosyasını kodlarda görüleceği gibi deneme.txt olarak belirlenmiş bir şekilde duruyor ben bu deneme.txt yi uygulamanın bana sormasını istiyorum bu dosyayı ben seçtikten sonra işlem adımlarına devam etmeli. yani deneme.txt dosyası sabit olarak bir isimde program kabul görmemeli hedef seç diyerek ben eklemeliyim..
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: autoit dosyadan veri çekme

Mesaj gönderen BlueLife »

@waldezhk

FileOpenDialog ile dosya seçim ekranını çıkartabilirsiniz. Örnek vermem gerekirse;

Kod: Tümünü seç

#include <Array.au3>
#include <File.au3>

Local $aArray, $Toplam = 0
Local $ScriptDir = @ScriptDir
If StringRight($ScriptDir,1) <> "\" Then $ScriptDir &= "\"

;Ortalamanın yazılacağı text dosyası
Local $Sonuc = $ScriptDir & 'Sonuç.txt'

Local $SourceFile = FileOpenDialog("Dosya Seçiniz...", $ScriptDir, "Metin Dosyaları (*.txt)", 3,"Deneme.txt")
If @error Then Exit

_FileReadToArray($SourceFile, $aArray) ;Toplanacak sayıların bulunduğu text dosyası
If IsArray($aArray) = 0 Then
	MsgBox('0', 'Ortalaması', $SourceFile & " dosyasında veri yok!")
	Exit
EndIf

_ArrayDisplay($aArray)
For $i = 1 To $aArray[0]
	$Toplam += $aArray[$i]
Next

TrayTip("....", "..", 10, 1)
MsgBox('0', 'Ortalaması', $Toplam / $aArray[0])


Local $Opwnfile = FileOpen($Sonuc, 1)
If $Opwnfile = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf

If _FileCountLines($Sonuc) = 0 Then
	FileWrite($Opwnfile, $Toplam / $aArray[0])
Else
	FileWrite($Opwnfile, @CRLF & $Toplam / $aArray[0])
EndIf
FileClose($Opwnfile)
ShellExecute($Sonuc)
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Re: autoit dosyadan veri çekme

Mesaj gönderen waldezhk »

@BlueLife yardımların için teşekkürler :) son bir ricam olucak bu programı bir gui içinde ekliyebilirmiyiz mesela program txt deki verileri gösterdiğinde array kodundan dolayı arrayın kendi penceresinde açıyor bunu tek bir gui içinde arrayın penceresi olmadan gösterebilirmiyiz
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: autoit dosyadan veri çekme

Mesaj gönderen BlueLife »

@waldezhk

Rahatsız olduğum için (grip olmuşum) geç yanıt veriyorum, kusura bakma. Tam olarak nasıl bir şey istediğini bilmiyorum lakin bir kaç ek yaptım.
Biraz kurcalar kendine göre ayarlarsın...

Kod: Tümünü seç

#include <Array.au3>
#include <File.au3>

Local $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> "\" Then $ScriptDir &= "\"

;Ortalamanın yazılacağı text dosyası
Local $Sonuc = $ScriptDir & 'Sonuç.txt'

Global $Form1 = GUICreate("Test", 350, 380)
GUICtrlCreateLabel("Kaynek Dosyayı giriniz", 10, 10, 300, 17)
Global $SourceFile = GUICtrlCreateInput($ScriptDir & "Deneme.txt", 10, 27, 300, 20)
Global $FileSelect = GUICtrlCreateButton("...", 315, 27, 25, 20)
Global $FileString = GUICtrlCreateEdit("", 10, 55, 330, 250)
Global $Status = GUICtrlCreateLabel("Ortalama:", 10, 315, 300, 17)

Global $Start = GUICtrlCreateButton("Başlat", 10, 340, 330, 25)
GUISetState(@SW_SHOW, $Form1)

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $FileSelect
			If _SelectFile($SourceFile, $Form1) = 1 Then
				GUICtrlSetData($Status, "Ortalama:")
				GUICtrlSetData($FileString, "")
			EndIf

		Case $Start
			GUICtrlSetState(@SW_DISABLE, $Form1)

			GUICtrlSetData($Status, "Ortalama:")
			GUICtrlSetData($FileString, "")

			_Start(StringStripWS(GUICtrlRead($SourceFile), 3), $FileString, $Status, $Form1)
			GUICtrlSetState(@SW_ENABLE, $Form1)
	EndSwitch
WEnd

Func _SelectFile($CTRLID = 0, $Hwnd = 0)
	Local $FileSelect = FileOpenDialog("Dosya Seçiniz...", $ScriptDir, "Metin Dosyaları (*.txt)", 3, "Deneme.txt", $Hwnd)
	If @error Then Return 0
	GUICtrlSetData($CTRLID, $FileSelect)
	Return 1
EndFunc   ;==>_SelectFile

Func _Start($SFile, $SString, $SStatus, $Hwnd = 0)
	If FileExists($SFile) = 0 Then Return SetError(1, 0, 0)

	Local $aArray, $Toplam = 0

	_FileReadToArray($SFile, $aArray) ;Toplanacak sayıların bulunduğu text dosyası
	If IsArray($aArray) = 0 Then
		MsgBox(16, 'Hata!', $SFile & " dosyasında veri yok!", $Hwnd)
		Return SetError(2, 0, 0)
	EndIf

	;_ArrayDisplay($aArray)
	Local $TmpValue = ""
	For $i = 1 To $aArray[0]
		$Toplam += $aArray[$i]
		$TmpValue &= $aArray[$i] & @CRLF
	Next

	Local $Ortalama = $Toplam / $aArray[0]

	GUICtrlSetData($SStatus, "Ortalama:" & $Ortalama)
	GUICtrlSetData($SString, $TmpValue)


	TrayTip("....", "..", 10, 1)
	;MsgBox(64, 'Ortalaması', $Ortalama,$Hwnd)

	Local $Opwnfile = FileOpen($Sonuc, 1)
	If $Opwnfile = -1 Then
		MsgBox(0, "Error", "Unable to open file.")
		Exit
	EndIf

	If _FileCountLines($Sonuc) = 0 Then
		FileWrite($Opwnfile, $Ortalama)
	Else
		FileWrite($Opwnfile, @CRLF & $Ortalama)
	EndIf
	FileClose($Opwnfile)
	ShellExecute($Sonuc)
EndFunc   ;==>_Start
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Re: autoit dosyadan veri çekme

Mesaj gönderen waldezhk »

@BlueLife ellerine sağlık kardeşim :) çok teşekkür ederim yardımların için teşekkürler :) hayırlı çalışmalar..
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Re: Autoit dosyadan veri çekme - Çözüldü

Mesaj gönderen waldezhk »

@BlueLife ben gui ye @ws_popup ekledim ama şöyle bir sıkıntı yaşadım programı taşıyamıyorum hani popup ile ekran kernarlığını kaldırdığım için taşıyamıyorum bunun için hangi kodu eklemem gerekiyor internetten araştırdım ama bulamadım



Global $Form1 = GUICreate("...", 350, 390, -1, -1, $WS_Popup)
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: Autoit dosyadan veri çekme - Çözüldü

Mesaj gönderen BlueLife »

@waldezhk

Farklı şekillerde yapılabiliyor. Misal bir label ilede bu mümkün. Üstteki verdiğim kodlara eklim sen kendine göre ayarlarsın...

Kod: Tümünü seç

#include <Array.au3>
#include <File.au3>

Global $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> "\" Then $ScriptDir &= "\"

;Ortalamanın yazılacağı text dosyası
Global $Sonuc = $ScriptDir & 'Sonuç.txt'

Global $Form1 = GUICreate("Test", 350, 390,-1,-1,0x80000000)

GUICtrlCreateLabel("Kaynek Dosyayı giriniz", 10, 10, 300, 17)
Global $SourceFile = GUICtrlCreateInput($ScriptDir & "Deneme.txt", 10, 27, 300, 20)
Global $FileSelect = GUICtrlCreateButton("...", 315, 27, 25, 20)
Global $FileString = GUICtrlCreateEdit("", 10, 55, 330, 250)
Global $Status = GUICtrlCreateLabel("Ortalama:", 10, 315, 300, 17)

Global $Start = GUICtrlCreateButton("Başlat", 10, 340, 330, 25)

;MoveGui
GUICtrlCreateLabel("", 0, 0, 350, 380, 1, 0x00100000)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetCursor(-1, 9)
GUISetState(@SW_SHOW, $Form1)

While 1
   Switch GUIGetMsg()
      Case -3
         Exit
      Case $FileSelect
         If _SelectFile($SourceFile, $Form1) = 1 Then
            GUICtrlSetData($Status, "Ortalama:")
            GUICtrlSetData($FileString, "")
         EndIf

      Case $Start
         GUICtrlSetState(@SW_DISABLE, $Form1)

         GUICtrlSetData($Status, "Ortalama:")
         GUICtrlSetData($FileString, "")

         _Start(StringStripWS(GUICtrlRead($SourceFile), 3), $FileString, $Status, $Form1)
         GUICtrlSetState(@SW_ENABLE, $Form1)
   EndSwitch
WEnd

Func _SelectFile($CTRLID = 0, $Hwnd = 0)
   Local $FileSelect = FileOpenDialog("Dosya Seçiniz...", $ScriptDir, "Metin Dosyaları (*.txt)", 3, "Deneme.txt", $Hwnd)
   If @error Then Return 0
   GUICtrlSetData($CTRLID, $FileSelect)
   Return 1
EndFunc   ;==>_SelectFile

Func _Start($SFile, $SString, $SStatus, $Hwnd = 0)
   If FileExists($SFile) = 0 Then Return SetError(1, 0, 0)

   Local $aArray, $Toplam = 0

   _FileReadToArray($SFile, $aArray) ;Toplanacak sayıların bulunduğu text dosyası
   If IsArray($aArray) = 0 Then
      MsgBox(16, 'Hata!', $SFile & " dosyasında veri yok!", $Hwnd)
      Return SetError(2, 0, 0)
   EndIf

   ;_ArrayDisplay($aArray)
   Local $TmpValue = ""
   For $i = 1 To $aArray[0]
      $Toplam += $aArray[$i]
      $TmpValue &= $aArray[$i] & @CRLF
   Next

   Local $Ortalama = $Toplam / $aArray[0]

   GUICtrlSetData($SStatus, "Ortalama:" & $Ortalama)
   GUICtrlSetData($SString, $TmpValue)


   TrayTip("....", "..", 10, 1)
   ;MsgBox(64, 'Ortalaması', $Ortalama,$Hwnd)

   Local $Opwnfile = FileOpen($Sonuc, 1)
   If $Opwnfile = -1 Then
      MsgBox(0, "Error", "Unable to open file.")
      Exit
   EndIf

   If _FileCountLines($Sonuc) = 0 Then
      FileWrite($Opwnfile, $Ortalama)
   Else
      FileWrite($Opwnfile, @CRLF & $Ortalama)
   EndIf
   FileClose($Opwnfile)
   ShellExecute($Sonuc)
EndFunc   ;==>_Start
waldezhk
Bit
Bit
Mesajlar: 6
Kayıt: 03 Mar 2016, 02:34

Re: Autoit dosyadan veri çekme - Çözüldü

Mesaj gönderen waldezhk »

@BlueLife teşekkürler :) istersen özelden prpgramın son halini atabilirim bakmak istersen :) bu arada geçmiş olsun
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: Autoit dosyadan veri çekme - Çözüldü

Mesaj gönderen BlueLife »

@waldezhk

Sağol teşekkürler. Programın kodlarını göndrmene gerek yok. Çalışmanda başarılar dilerim, kolay gelsin...
Cevapla

“Programlama ve Script dilleri” sayfasına dön