vielleicht gibt dir ja https://autoit.de/index.php?page=Thread&threadID=11870 Inspiration wie du soetwas in einer eigenen Gui lösen kannst,
mfg autoBert
vielleicht gibt dir ja https://autoit.de/index.php?page=Thread&threadID=11870 Inspiration wie du soetwas in einer eigenen Gui lösen kannst,
mfg autoBert
Du scheinst der einzigste zu sein zumindest spukt die SuFu nichts dafür aus. Wie wäre es also mit etwas Dokumentation zu der Karte, auch das VB-Programm wäre hilfreich,
mfg autoBert
Erzeuge dein ComboBox so:
[autoit]$idcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25,BitOr($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_DISABLENOSCROLL, $WS_VSCROLL,$WS_TABSTOP))
[/autoit]dann hast du eine Leiste. Diese ist solange inaktiv wie die Box ausreicht ohne scrollen zu müssen. Verantwortlich ist $CBS_DISABLENOSCROLL,
mfg autoBert
mfg autoBert
Wozu denn über FTP? HTTP ist dafür viel besser geeignet, weil du keine Login-Daten rausgeben musst, mit denen jemand Unsinn auf deinen Webspace laden (und den nächsten Updatesuchenden verseuchen) kann.
Oder habe ich etwas übersehen?
Johannes
Ich kenn mich mit HTTP-Funktionen (noch) nicht aus, aber auch dort müssen ja irenddwie die Anmeldedaten übergeben werden. Klick auch mal auf den 1.Link in meinem vorherigen Beitrag. Wenn ich das ftp durch http ersetze bekomme ich 404 Seite nicht gefunden.
mfg autoBert
Hallo volle,
wühl dich mal durch die Skripte von UEZ, er hat soetwas gemacht,
mfg autoBert
Hallo Xentus,
Hast du schon einmal veruscht ftp://www.xentusxentis.xe.funpic.de in einem Browser aufzurufen. Ich denke nein, denn sonst wüstest du warum es nicht funktioniert. Je nach Art der Anmeldung kann es so klappen:
User und Passwort müssen natürlich stimmen. Wenn nicht musst du auf die FTP-Funktion
[autoit]_FTP_FileGet
[/autoit]ausweichen. Sieh dir dazu das Beispiel in der Hilfe an,
mfg autoBert
Ich denke er meint | aber das wird doch allgemein als Trennzeichen bei erstellen eines ListView benutzt, also entstehen einzelne Spalten. (Essen | Preis z.B.)
Jenau
na dann habe ich wohl mein Beispiel mit der ComboBox (geht auch mit ListBox) wohl umsonst gemacht,
mfg autoBert
Angeregt durch https://autoit.de/index.php?page…8348#post238348 habe ich einmal ein kleines Beispielskript eines einfachen Downloaders erstellt:
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.6.1
Author: AutoBert: http://www.autoit.de/index.php?page…4341#post164341
Skriptbeispiel für den Umgang mit INI-Files und ComboBox
#ce ----------------------------------------------------------------------------
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiComboBox.au3>
#include <StaticConstants.au3>
;#include <Array.au3>
Const $sElect = "bitte einen Download auswählen"
Global $sUrl ;ausgewählte DownloadUrl
Global $sIni = @ScriptDir & "\Download.INI" ;Pfad zur Inidatei
Global $sLocalFolder ;letztes Verzeichnis in das gespeichert wurde
Global $aData[3] ;Download-Infos
Global $iFileSize ;Grösse des DL-Files
Global $tStart ;Download gestartet
Global $nKBPerSec ;KB pro Sekunde
Global $iPercent ;aktuell heruntergeladenen Prozentanteil der Datei
If Not FileExists($sIni) Then
$sData = "AutoIt 3.3.6.1=http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" & @LF
$sData &= "AutoIt Beta=http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.3.7.20-beta-setup.exe" & @LF
$sData &= "Scite=http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe" & @LF
$sData &= "dt. Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-27_05_11.zip" & @LF
$sData &= "Organize Includes=http://www.autoitscript.com/forum/index.php?app=core&module=attach§ion=attach&attach_app=core&module=attach§ion=attach&attach_id=29947" & @LF
IniWriteSection($sIni, "URLs", $sData)
EndIf
$hGui = GUICreate("mini-Downloader", 300, 105, 302, 218)
$idcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
$idbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8, 80)
$idbtnDel = GUICtrlCreateButton("&Löschen", 213, 35, 80)
$idprgInfo = GUICtrlCreateProgress(8, 70, 285, 30)
GUICtrlSetState(-1, $GUI_HIDE)
$idlblInfo = GUICtrlCreateLabel("", 2, 72, 282, 25, $ES_CENTER)
GUICtrlSetFont(-1, 14, 2000)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetState(-1, $GUI_HIDE)
$idbtnDL = GUICtrlCreateButton("&Downloaden", 8, 35, 200)
GUICtrlSetState($idbtnDL, $GUI_DISABLE)
read_INI()
GUISetState(@SW_SHOW)
HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16") ;sonst streiken manche Freehoster wenn der AutoItUseragent gesetzt ist
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
IniWrite($sIni, "Path", "Local", $sLocalFolder)
Exit
Case $idbtnAdd
$write1 = InputBox("Downloadadresse", "Bitte eine gültige Download-Adresse eingeben")
If $write1 <> "" Then
$write2 = InputBox("Download verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then IniWrite($sIni, "URLs", $write2, $write1)
GUICtrlSetData($idcboProg, $write2, $write2)
EndIf
get_Selection()
Case $idbtnDel
$sDel = GUICtrlRead($idcboProg)
IniDelete($sIni, "URLs", $sDel)
GUICtrlSetData($idcboProg, "")
read_INI()
Case $idcboProg
get_Selection()
Case $idbtnDL
;get_Selection()
$bCanceld = False
GUICtrlSetData($idbtnDL, "Download &abbrechen")
$aDatei = StringSplit($sUrl, "/")
$sDatei = $aDatei[$aDatei[0]]
$sLocal = FileSaveDialog($sDatei & "Speichern unter", $sLocalFolder, "Alle (*.*)", 18, $sDatei, $hGui)
If Not @error Then
GUICtrlSetState($idprgInfo, $GUI_SHOW)
GUICtrlSetState($idlblInfo, $GUI_SHOW)
GUICtrlSetData($idlblInfo, "Download startet")
$aTmp = StringSplit($sLocal, "\")
$sLocalFolder = $aTmp[$aTmp[1]]
$iFileSize = InetGetSize($sUrl)
$hDL = InetGet($sUrl, $sLocal, 1, 1)
$tStart = TimerInit()
$aData[0] = 0
Do
$bCanceld = _MySleep(250)
If $bCanceld Then ExitLoop
$aData = InetGetInfo($hDL, -1)
If $aData[0] > 0 Then
$tDiff = TimerDiff($tStart)
$nKBPerSec = Round($aData[0] / $tDiff * 1000 / 1024, 2)
$iPercent = Round($aData[0] / $iFileSize * 100, 2)
If GUICtrlRead($idlblInfo) <> $iPercent Then
GUICtrlSetData($idprgInfo, $iPercent)
GUICtrlSetData($idlblInfo, $iPercent & " % " & $nKBPerSec & " KB/sec")
WinSetTitle($hGui, "", "DL: " & $sDatei & " " & $iPercent & "%")
EndIf
EndIf
Until $aData[2]
InetClose($hDL)
;_ArrayDisplay($aData)
If $aData[0] < $aData[1] Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war
If $aData[0] < $iFileSize Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war
If Not $aData[3] Then
If $bCanceld Then
$sMsg = "Download wurde durch Benutzer abgebrochen"
Else
$sMsg = "Download hat abgebrochen," & @CRLF & "überprüfen sie Ihre Internetverbindung." & @CRLF & @CRLF & "Probieren Sie danach noch einmal!"
EndIf
MsgBox(48, "Fehler:", $sMsg)
FileDelete($sLocal)
Else
GUICtrlSetState($idbtnDL, $GUI_DISABLE)
GUICtrlSetData($idcboProg,$sElect,$sElect)
MsgBox(64, $sLocal, "erfolgreich heruntergeladen")
EndIf
Else
MsgBox(48, "Fehler:", "keinen Namen zum Speichern ausgeählt")
EndIf
GUICtrlSetData($idprgInfo, 0)
GUICtrlSetData($idlblInfo, 0)
GUICtrlSetState($idlblInfo, $GUI_HIDE)
GUICtrlSetState($idprgInfo, $GUI_HIDE)
GUICtrlSetData($idbtnDL, "&Downloaden")
WinSetTitle($hGui, "", "mini-Downloader")
EndSwitch
WEnd
Func _MySleep($iMSec)
Local $nMsg, $dt = TimerInit()
Do
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idbtnDL
Return 1; DL Abbrechen wurde gedrückt
EndSwitch
Sleep(10)
Until TimerDiff($dt) > $iMSec
EndFunc ;==>_MySleep
Func read_INI()
$list1 = IniReadSection($sIni, "URLs")
;ConsoleWrite($list1 & @CRLF)
If IsArray($list1) Then
For $i = 1 To $list1[0][0]
GUICtrlSetData($idcboProg, $list1[$i][0])
Next
EndIf
_GUICtrlComboBox_InsertString($idcboProg, $sElect, 0)
_GUICtrlComboBox_SetCurSel($idcboProg, 0)
$sLocalFolder = IniRead($sIni, "Path", "Local", @ScriptDir)
EndFunc ;==>read_INI
Func get_Selection()
If GUICtrlRead($idcboProg) = $sElect Then
GUICtrlSetState($idbtnDL, $GUI_DISABLE)
GUICtrlSetData($idlblInfo, "")
Else
GUICtrlSetState($idbtnDL, $GUI_ENABLE)
$Prog = GUICtrlRead($idcboProg)
;ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
$sUrl = IniRead($sIni, "URLs", $Prog, "")
EndIf
EndFunc ;==>get_Selection
Die vorbelegten Dateien in der INI sollten sich alle Anfänger herunterladen. Ich weis dass man dies mit einer Listview viel schöner lösen kann aber wie gesagt aufgrund des o.g. Themas habe ich diese Beispiel auf Basis einer Combobox geschrieben. Wenn man anstatt einer Combo ein List erstellt funktioniert das Skript genauso. Profis wundern sich vielleicht über die Zeilen 105 u. 106, dies ist ein Workaround da InetGetInfo nicht immer den korrekten Status ob der DL erfolgreich war zurückgibt.
Hier noch ein ScreenShot:
Falls jemanden der Skriptaufbau bekannt vorkommt, richtig es ist aus meinem Mini-Urlmanager abgeleitet.
Edits: Link dieses Themas in Skript eingefügt. AutoIt-Tag korrigiert, Dem Kind einen anderen Namen gegeben, kleine Schönheitskorrekturen im Skript (Variablennamen, eine überflüssige Zeile entfernt, nach erfolgreichem DL wird DL-Button gesperrt und die "bitte wählen"-Aufforderung erscheint in der ComboBox)
mfg autoBert
Doppel Post hier erlaubt ?
Doppelposts sind unerwünscht.
ändere
[autoit]If $List1 = ("Download") then
[/autoit]in
[autoit]If GuiCtrlRead($List1) = ("Download") then
[/autoit]ich würde an deiner Stelle die Listbox gegen eine Listview tauschen ein kleines Beispiel siehst du hier: https://autoit.de/index.php?page…98920#post98920 . Die Informationen für die Items solltest du natürlich aus ein CSV- oder INI-Datei auslesen.
Edit: bin gerade am schreiben eines Beispiel-Downloaders, werde ihn später in Skripte veröffentlichen.
mfg autoBert
Warum schreibst du jedsmal einen neuen Log? Hänge deine Log-Einträge doch einfach hinten an!
Ach ja geht ja angeblich nicht weil der alte Log auf dem FTP-Server liegt, siehe:
Zitat
Warum löscht du dann deinen alten LOG lokal, anstatt in weiter zu führen und den aktuellen Stand hochzuladen?
Edit: Im bösen Forum (in dem du mehr Beiträge hast als hier) vermuten sie schon dass dies eine Art Keylogger sein soll. Ich meine eher das einfahren der Beute, sprich ein Steal-Script hat die ausspionierten Log-Files auf deinen FTP übertragen.
Deshalb und auch wegen mangelnder Mitarbeit (im anderen Thema wurden dir genügend brauchbare Hinweise gegeben) Vote for CLOSE von beiden Themen
mfg autoBert
Danke
Eine kleine Frage habe ich noch.
Wie kann man, wenn man jetzt mehrere Dateien in der Liste hat, mehrere markieren und herauslöschen.
Zurzeit kann man nur eines markieren und löschen
Da bei derErstellung des LV-Controls ohne Style-Angaben
ZitatStandard (-1) : $LVS_SHOWSELALWAYS, $LVS_SINGLESEL
Erzwungener Stil : $LVS_REPORT
enthalten ist kannst du nur eines auswählen. Wenn du deine LV so:
[autoit]$listview = GUICtrlCreateListView("Name |Dateityp |Dateipfad ", 0, 0, 530, @DesktopHeight-200,BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT))
[/autoit]erstellst kannst du mehrere auswählen. Zum löschen kannst du dann
[autoit]_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($listview))
[/autoit]verwenden, dazu benötigst du noch
[autoit]#Include <GuiListView.au3>
[/autoit]am Skriptanfang. Das auslösen der Löschfunktion kann über einen Button geschehen oder eleganter durch ein Contextmenü:
[autoit]$idContextmenu = GUICtrlCreateContextMenu($listview )
$idDeletemenu = GUICtrlCreateMenu("Löschen...", $idContextmenu)
$idDeleteAll = GUICtrlCreateMenuItem("Alle Einträge", $idDeletemenu)
$idDeleteitem = GUICtrlCreateMenuItem("ausgewählte Einträge", $idDeletemenu)
das du nach dem Erstellen der LV einbinden kannst. In [Beispiel] NeMP3-P (MP3-Player) Version 0.8.4.7 habe ich dies gemacht, ist zwar im OnEventMode geschrieben lässt sich aber leicht in den GuiGetMsg-Mode umsetzen,
mfg autoBert
Hallo Lupar,
dein Beispiel verlinkt auf dieses Thema. In diesem Thema gibt es aber keinen Link der mit "Ordner" beschriftet ist. Also kann auch keiner dein Beispiel zum Laufen bringen.
Edit: ich denke du versucht dir Unterstützung zu erschleichen für das Umgehen der Forenregeln, die du ja schon mit https://autoit.de/index.php?page=Thread&threadID=29576 gebrochen hast, deshalb:
Vote for Close
mfg autoBert
Warum schreibst du jedsmal einen neuen Log? Hänge deine Log-Einträge doch einfach hinten an!
Edit: warum dieses Doppelthema, das hast doch in https://autoit.de/index.php?page=Thread&threadID=29556 schon einmal gefragt?
mfg autoBert
Hallo Ilse,
einfach _MySleep($iWunschZeit) die Zeit wie lange insgesamt (Falls kein Abbruch) gewartet werden soll übergeben. Ich hatte da ja einen Zufallswert eingetragen.
meistertogo: auch HotKeys werden erst abgearbeitet wenn die MsgBox bestätigt ist, wäre in Ilses Skript ja kein Problem da ein TimeOut von 1 Sekunde gesetzt ist.
mfg autoBert
Um eine Datei zu erzeugen benötigt es keinen RegEx, funktioniert auch so:
[autoit]$sDir = @ScriptDir
$sFile = "Test"
$sExt =".txt"
$i = 1
Do
$sTmp = $sDir & "\" & $sFile & $i & $sExt
$i += 1
Until Not FileExists($sTmp)
ConsoleWrite($sTmp & @TAB & "wird angelegt!" & @crlf)
FileWrite($sTmp, "Test")
Ich hab noch ne Frage, wie kann ich das hier einbauen?
[autoit][/autoit]
$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpp = _FtpPutFile($Conn, $file, "/Privat/" & "test.zip")
$Ftpc = _FTPClose($Open)
Du solltest
[autoit]_FTP_FilePut
[/autoit]aus der <FTPEx.au3> verwenden. Schau dir das Beispiel dazu aus der Hilfe an.
mfg autoBert
Ich frage mich nur, warum du überaupt die Return Werte genutzt hast?
Beim Switch brauch man keinen Return Wert.
Um vll. mein Problehm zu lösen....
Dann stell das komplette Skript ein in dem Auszug ergibt es jedenfalls keinen Sinn und mit dem Schnipsel brauchst du dich auch nicht wundern wenn du keine Hilfe bekommst.
mfg autoBert
Zitat von »Raupi«Es ist vollkommen normal, das der Abbrechen Button währen einer laufenden Unterfunktion nicht reagiertWas ist, wenn diese Unterfunktion nur ein Sleep über 50 Sekunden ist? Gibt es dann keine Möglichkeit?
Gibt es: du must den Sleep in einer eigen Funktion in kleine Teile stückeln und innerhalb dieser Funktion mit
[autoit]GuiGetMsg
[/autoit]reagieren. Damit GuiGetMsg funktionieren kann muss am Anfang deiner func der OnEventMode ausgeschaltet und am Ende wieder eingeschaltet werden:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 438, 89, 192, 132)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
GUICtrlSetOnEvent(-1, "Page")
$Loopinfo = GUICtrlCreateButton("Loop-Stop", 240, 24, 179, 49)
GUICtrlSetOnEvent(-1, "Stop")
GUISetState(@SW_SHOW)
$bStop = True
While 1
Sleep(10)
WEnd
Func Page()
$bStop = False
_MySleep(Random(100000, 999000,1))
EndFunc ;==>Page
Func Stop()
$bStop = True
ConsoleWrite("STOP" & @CRLF)
EndFunc ;==>info
Func _MySleep($iMSec)
Opt("GUIOnEventMode", 0)
Local $i, $nMsg, $dt = TimerInit()
Do
$i += 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Loopinfo
Stop()
EndSwitch
Sleep(10)
if TimerDiff($dt) > $iMSec Then $bStop = True
ConsoleWrite($i & @CRLF)
Until $bStop
Opt("GUIOnEventMode", 1)
EndFunc ;==>_MySleep
Func _Exit()
Exit
EndFunc ;==>_Exit
mfg autoBert
Hallo Ilse,
[autoit]
alternativ zu Raupis Lösung könntest Du auch den GUIOnEventMode verwenden, da dann das Abfragen von GUIGetMsg unnötig wird.Opt("GUIOnEventMode", 1)
[/autoit]
Definitiv falsch, auch beim GuiOnEventMode werden Events (Tastendruck) erst nach dem Beenden einer laufenden Func abgearbeutet, alos genau das gleiche Problem.
hier eine Lösung im GuiGetMsg-Modus:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 438, 89, 192, 132)
$Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
$Loopinfo = GUICtrlCreateButton("Info", 240, 24, 179, 49)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Loop
Page()
Case $Loopinfo
info()
EndSwitch
WEnd
Func Page()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To 10
ConsoleWrite($i & @CRLF)
_MySleep($i * Random(100, 999))
Next
EndFunc ;==>Page
[/autoit] [autoit][/autoit] [autoit]Func info()
[/autoit] [autoit][/autoit] [autoit]MsgBox(0, "", "test", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc ;==>info
[/autoit] [autoit][/autoit] [autoit]Func _MySleep($iMSec)
Local $nMsg, $dt = TimerInit()
Do
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Loopinfo
info()
EndSwitch
Sleep(10)
Until TimerDiff($dt) > $iMSec
EndFunc ;==>_MySleep
Und hier das ganze im OnEventMode:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 438, 89, 192, 132)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Loop = GUICtrlCreateButton("Loop-Start", 32, 24, 179, 49)
GUICtrlSetOnEvent(-1, "Page")
$Loopinfo = GUICtrlCreateButton("Info", 240, 24, 179, 49)
GUICtrlSetOnEvent(-1, "Info")
GUISetState(@SW_SHOW)
While 1
Sleep(10)
WEnd
Func Page()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To 10
ConsoleWrite($i & @CRLF)
_MySleep($i * Random(100, 999))
Next
EndFunc ;==>Page
[/autoit] [autoit][/autoit] [autoit]Func info()
[/autoit] [autoit][/autoit] [autoit]MsgBox(0, "", "test", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc ;==>info
[/autoit] [autoit][/autoit] [autoit]Func _MySleep($iMSec)
Opt("GUIOnEventMode", 0)
Local $nMsg, $dt = TimerInit()
Do
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Loopinfo
info()
EndSwitch
Sleep(10)
Until TimerDiff($dt) > $iMSec
Opt("GUIOnEventMode", 1)
EndFunc ;==>_MySleep
Func _Exit()
Exit
EndFunc ;==>_Exit
Mit WM_Command könnte es evtl auch während der Anzeige einer MsgBox funktionieren, ich denke aber diese Lösung reicht aus,
mfg autoBert
Hallo iFreak95,
da du schon auf gelöst gesetzt hast gehe ich davon aus du hast
[autoit]_FTP_FilePut
[/autoit]in der Hilfe gefunden. Falls du das Skript in fremde Hände gibst solltest du daran denken das ein im Quelltext hinterlegtes Passwort nicht vor Zugriff geschützt ist.
mfg autoBert
Das kann so kein Schwein entziffern.
Naja Schweine können afaik nicht lesen. Ich hab mir mal die Mühe gemacht, hier das Ergebnis:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <file.au3>
#include <array.au3>
#include <string.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 334, 317, 414, 145)
$kartenblatt = GUICtrlCreateInput("5409", 16, 40, 137, 21)
$Label1 = GUICtrlCreateLabel("Kartenblatt Nummer", 8, 16, 97, 17)
$falsch = GUICtrlCreateInput("Hohenleimbach", 16, 112, 257, 21)
$richtig = GUICtrlCreateInput("bratwurst", 16, 192, 257, 21)
$Label2 = GUICtrlCreateLabel("ändere in", 16, 168, 48, 17)
$Label3 = GUICtrlCreateLabel("Suche Name", 16, 88, 66, 17)
$suche = GUICtrlCreateButton("SUCHEN", 24, 264, 75, 25, 0)
$Exit = GUICtrlCreateButton("Abrechen", 136, 264, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $suche
suche()
Case $GUI_EVENT_CLOSE, $Exit
Exit
EndSwitch
WEnd
Func suche()
$kb = GUICtrlRead($kartenblatt)
$wrong = GUICtrlRead($falsch)
$right = GUICtrlRead($richtig)
;### felder voll `?
If $kb = "Nummer" Or $kb = "" Then
MsgBox(0, "!!!", "kartenblatt fehlt")
Return
EndIf
If $wrong = "Ort" Or $wrong = "" Then
MsgBox(0, "!!!", "falscher ort fehlt")
Return
EndIf
If $right = "Ort" Or $right = "" Then
MsgBox(0, "!!!", "richtiger ort fehlt")
Return
EndIf
$list = _FileListToArray(@WorkingDir, "*.txt")
[/autoit] [autoit][/autoit] [autoit]For $a = 1 To $list[0] ;durch alle Textdateien gehen
Dim $read
_FileReadToArray(@WorkingDir & "\" & $list[$a], $read)
Dim $aNew[$read[0]][15]
For $iRow =1 To $read[0] ;Spaltenüberschriften müssen in dieser Version mit eingelesen werden
$aSplit = StringSplit($read[$iRow], @TAB)
If $aSplit[7] = $kb And $aSplit[8] = $wrong Then $aSplit[8]= $right ;wenn falscher Ort für diese Kartennr. dann mit richtigem ersetzen
for $iCol = 1 to $aSplit[0] ;alle Spalten in das neue Array übertragen
$aNew[$iRow-1][$iCol-1] = $aSplit[$iCol]
Next
Next
_WriteNewArrayToFile(@WorkingDir & "\" & $list[$a] & ".New",$aNew) ;Neue Datei abspeichern
Next
MsgBox(0, "bing", "Fertig... ")
Exit
EndFunc ;==>suche
Func _WriteNewArrayToFile($sFile, ByRef $a2D,$sRowDelimiter=@CRLF,$sColDelimiter=@TAB)
;author autoBert
;Parameter: $sFile Name der neuen Datei
; $$a2d 2D-Array das zurückgespeichert werden soll
; $sRowDelimiter Zeilentrennzeichen
; $sColDelimiter Spaltentrennzeichen
Local $hFile = FileOpen($sFile,2)
for $iRow = 0 to UBound($a2D) -1
for $iCol = 0 to UBound($a2D,2)-1
FileWrite($sFile,$a2D[$iRow][$iCol])
if $iCol = UBound($a2D,2)-1 Then
FileWrite($sFile,$sRowDelimiter)
Else
FileWrite($sFile,$sColDelimiter)
EndIf
Next
Next
FileClose($sFile)
EndFunc
getestet habe ich mit diesen Daten:
FILENAME YEAR FILM SERIE PICT_NR DATE TXT1 TXT2 TXT3 TXT4 KAT1 KAT2 KAT3 KAT4
G180400101.JPG G 1804 01 001 03.05.2011 11:24:50 5409 Steinbergerhof D-HSEP M g F F
G180400201.JPG G 1804 01 002 03.05.2011 11:25:02 5409 Steinbergerhof D-HSEP M g F F
G180400301.JPG G 1804 01 003 03.05.2011 11:25:18 5409 Steinbergerhof D-HSEP M g F F
G180400401.JPG G 1804 01 004 03.05.2011 11:25:40 5409 Steinbergerhof D-HSEP M g F F
G180400501.JPG G 1804 01 005 03.05.2011 11:26:14 5409 Steinbergerhof D-HSEP M g F F
G180400601.JPG G 1804 01 006 03.05.2011 11:26:22 5409 Steinbergerhof D-HSEP M g F F
G180400701.JPG G 1804 01 007 03.05.2011 11:26:48 5409 Steinbergerhof D-HSEP M g F F
G180400801.JPG G 1804 01 008 03.05.2011 11:26:52 5409 Steinbergerhof D-HSEP M g F F
G180400901.JPG G 1804 01 009 03.05.2011 11:26:56 5409 Steinbergerhof D-HSEP M g F F
G180401002.JPG G 1804 02 010 03.05.2011 11:33:34 5409 Hohenleimbach D-HSEP M g F F
G180401102.JPG G 1804 02 011 03.05.2011 11:33:54 5409 Hohenleimbach D-HSEP M g F F
G180401202.JPG G 1804 02 012 03.05.2011 11:34:42 5409 Hohenleimbach D-HSEP M g F F
G180401302.JPG G 1804 02 013 03.05.2011 11:35:02 5409 Hohenleimbach D-HSEP M g F F
G180401402.JPG G 1804 02 014 03.05.2011 11:35:22 5409 Hohenleimbach D-HSEP M g F F
Alles anzeigen
dragula: diesen Service bekommst du aber nicht jeden Tag, also in Zukunft an die Ratschläge von name22 halten und für jeden lesbare Skripte und Daten bereitstellen. Und nun viel Spass damit,
mfg autoBert