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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Autoit dosyadan veri çekme - Çözüldü
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..
#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..
- TRWE_2012
- 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
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
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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Re: autoit dosyadan veri çekme
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..
- BlueLife
- 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
@waldezhk
FileOpenDialog ile dosya seçim ekranını çıkartabilirsiniz. Örnek vermem gerekirse;
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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Re: autoit dosyadan veri çekme
@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
- BlueLife
- 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
@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...
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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Re: autoit dosyadan veri çekme
@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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Re: Autoit dosyadan veri çekme - Çözüldü
@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)
Global $Form1 = GUICreate("...", 350, 390, -1, -1, $WS_Popup)
- BlueLife
- 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ü
@waldezhk
Farklı şekillerde yapılabiliyor. Misal bir label ilede bu mümkün. Üstteki verdiğim kodlara eklim sen kendine göre ayarlarsın...
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

- Mesajlar: 6
- Kayıt: 03 Mar 2016, 02:34
Re: Autoit dosyadan veri çekme - Çözüldü
@BlueLife teşekkürler :) istersen özelden prpgramın son halini atabilirim bakmak istersen :) bu arada geçmiş olsun
- BlueLife
- 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ü
@waldezhk
Sağol teşekkürler. Programın kodlarını göndrmene gerek yok. Çalışmanda başarılar dilerim, kolay gelsin...
Sağol teşekkürler. Programın kodlarını göndrmene gerek yok. Çalışmanda başarılar dilerim, kolay gelsin...
