Na in der Schleife mit Zeile2 anfangen (_Arraydisplay einbauen hilft beim Verständnis).
Beiträge von nuts
-
-
Ok dann mach mal bitte ein lauffähiges Beispiel mit dem Problem.
-
Die innere While ... Wend Schleife muss erst wieder verlassen werden, dann gehts weiter in der ersten Schleife (erste GUI reagiert wieder).
-
Mit Doppelklick: (wie man einzelne strings löscht siehst du in der WM:Command() Funktion - s.Kommentar)
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#NoTrayIconDirCreate("C:\BS\EK-RECHNER\DB")
[/autoit] [autoit][/autoit] [autoit]
DirCreate("C:\BS\EK-RECHNER\NEU")
DirCreate("C:\BS\EK-RECHNER\PIC")
FileInstall("NEU.exe", @ScriptDir & "\NEU.exe")
FileInstall("Spaghetti.txt", "C:\BS\EK-RECHNER\DB\Spaghetti.txt")
FileInstall("HackFleisch.txt", "C:\BS\EK-RECHNER\DB\HackFleisch.txt")
FileInstall("BG.jpg", "C:\BS\EK-RECHNER\PIC\BG.jpg")$search = FileFindFirstFile("C:\BS\EK-RECHNER\DB" & "\*.*")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$file = FileFindNextFile($search)
If @error Then ExitLoop
$F1 = FileOpen("C:\1.txt", 1)
FileWrite($F1, $file)
FileClose($F1)
$file1 = FileRead("C:\1.txt")
$file2 = StringRegExpReplace($file1, '.txt', "|")
WEnd$Form1 = GUICreate("EinkaufsRechner", 400, 345, -1, -1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000)
$List1 = GUICtrlCreateList("", 8, 28, 160, 240)
GUICtrlSetData(-1, $file2)
$List2 = GUICtrlCreateList("", 230, 28, 160, 240)
$hlist2 = GUICtrlGetHandle($List2)
$Button1 = GUICtrlCreateButton(">", 184, 124, 30, 25, 0)
$Button2 = GUICtrlCreateButton("Clear", 179, 164, 40, 25, 0)
$Input1 = GUICtrlCreateInput("Preis Einkauf in €", 230, 270, 160, 25)
$Button3 = GUICtrlCreateButton("Neuer Artikel", 8, 270, 160, 25, 0)
$Button4 = GUICtrlCreateButton("Einkauf Speichern", 148, 309, 100, 25, 0)
$Pic1 = GUICtrlCreatePic("C:\BS\EK-RECHNER\PIC\BG.jpg", 0, 0, 400, 345, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS, $WS_DISABLED))
GUICtrlCreateLabel("Artikel", 12,
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlCreateLabel("Einkaufs Liste", 234,
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete(@ScriptDir & "\NEU.exe")
FileDelete("C:\1.txt")
Exit
Case $Button1
_1()
_5()
Case $Button2
_2()
Case $Button3
_3()
Case $Button4
_4()
EndSwitch
WEndFunc _1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, GUICtrlRead($List1))
EndFunc ;==>_1Func _2()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, "")
GUICtrlSetData($input1, "Preis Einkauf in €")
EndFunc ;==>_2Func _3()
[/autoit] [autoit][/autoit] [autoit]
ShellExecute(@ScriptDir & "\NEU.exe")
FileDelete("C:\1.txt")
Exit
EndFunc ;==>_3Func _4()
[/autoit] [autoit][/autoit] [autoit]
Local $lcount = _GUICtrlListBox_GetCount($hlist2)
Local $open = FileOpen(@DesktopDir & "\EinkaufsZettel " & @MDAY & " . " & @MON & " . " & @YEAR & ".txt", 2) ;den Pfad zum File noch angeben, ggf noch erstellen mit _FileCreate
For $i = 1 To $lcount
FileWriteLine($open, _GUICtrlListBox_GetText($hlist2, $i - 1))
Next
FileWriteLine($open, GUICtrlRead($Input1))
FileClose($open)
EndFunc ;==>_4Func _5()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $price
Local $lcount = _GUICtrlListBox_GetCount($hlist2)
For $i = 1 To $lcount
Local $open = FileOpen("C:\BS\EK-RECHNER\DB\" & _GUICtrlListBox_GetText($hlist2, $i - 1) & ".txt", 0)
Local $read = FileReadLine($open, 2)
FileClose($open)
$price += StringReplace($read, ",", ".")
Next
GUICtrlSetData($Input1, $price & " €")
EndFunc ;==>_5Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($List1) Then $hWndListBox1 = GUICtrlGetHandle($List1)
If Not IsHWnd($List2) Then $hWndListBox2 = GUICtrlGetHandle($List2)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Switch $hWndFrom
Case $List1, $hWndListBox1
Switch $iCode
Case $LBN_DBLCLK
GUICtrlSetData($List2, GUICtrlRead($List1))
_5()
EndSwitch
Case $List2, $hWndListBox2
Switch $iCode
Case $LBN_DBLCLK
_GUICtrlListBox_DeleteString($hlist2, _GUICtrlListBox_GetCurSel($hlist2)) ;so lassen sich einzelne strings löschen
_5()
EndSwitchEndSwitch
[/autoit]
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND (Bugfix - http://www.autoit.de) -
Worum gehts genau?
Vielleicht hilft _ReplaceStringInFile?
Oder _Filelisttoarray & _Filewritefromarray. -
Hey,
kleine konstruktive Kritik zum Aufbau (wenn ich darf):
1. Ein Textfile für alle Artikel würde es auch tun, der Aufbau wäre dann ca. so:
Mit _Filelisttoarray dann einlesen und ab in die Listbox damit.2. Zum Berechnen werden jetzt immer wieder alle Artikel zusammengezählt. Das ist natürlich nicht sehr schnell!
Man könnte auch den Wert des hinzugekommenden Artikels zum Input addieren.3. Es werden immer alle Artikel entfernt? Man könnte noch einen zusätzlichen Button für ausgewählte Artikel hinzufügen.
4. Hinzufügen / Entfernen per Doppelklick ist vielleicht auch nett.
So das wars erstmal, bei Fragen zur Umsetzung kannste dich ja melden.
-
Systemsteuerung / geplante Tasks usw.

-
Öhm über Autoit? Müsste ich mich auch erst mal schlau machen.
Gibts wohl auch unterschiede zwischen Xp und Vista?Du kannst den Task doch selbst anlegen oder eignet sich das so nicht für deine Zwecke?
-
Vielleicht einen Task anlegen der das Skript ausführt?
-
Das Fileopen & Fileclose in der ursprünglichen Funktion sollte auch besser außerhalb der for .. next Schleife stehen.

-
Mhm Funktion 5 ist doch schon ganz nah dran.
[autoit]Func _5()
[/autoit]
Local $lcount = _GUICtrlListBox_GetCount($hlist2)
Local $open = FileOpen("", 2) ;den Pfad zum File noch angeben, ggf noch erstellen mit _FileCreate
For $i = 1 To $lcount
FileWriteLine($open,_GUICtrlListBox_GetText($hlist2, $i - 1))
Next
FileWriteLine($open,GUICtrlRead($input1)
FileClose($open)
EndFunc -
Ok damit lässt sich nicht rechnen. Mit Stringreplace kommen wir zum Ziel:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#NoTrayIcon$search = FileFindFirstFile(@ScriptDir & "\Neuer Ordner" & "\*.*")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$file = FileFindNextFile($search)
If @error Then ExitLoop
$F1 = FileOpen("test.txt", 1)
FileWrite($F1, $file)
FileClose($F1)
$file1 = FileRead("test.txt")
$file2 = StringRegExpReplace($file1, '.txt', "|")
WEnd$Form1 = GUICreate("Form1", 398, 342, 726, 184)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000)
$List1 = GUICtrlCreateList("", 8, 8, 160, 240)
GUICtrlSetData(-1, $file2)
$List2 = GUICtrlCreateList("", 229, 8, 160, 240)
$hlist2 = GUICtrlGetHandle($List2)
$Button1 = GUICtrlCreateButton("+", 184, 104, 30, 25, 0)
$Button2 = GUICtrlCreateButton("-", 184, 144, 30, 25, 0)
$Input1 = GUICtrlCreateInput("Preis Einkauf in €", 229, 250, 160, 25)
$Button3 = GUICtrlCreateButton("Neuer Artikel", 8, 250, 160, 25, 0)
$Button4 = GUICtrlCreateButton("Druck Einkauf", 148, 304, 100, 25, 0)
$Pic1 = GUICtrlCreatePic("BG.jpg", 0, 0, 396, 340, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS, $WS_DISABLED))
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete("test.txt")
Exit
Case $Button1
_1()
Case $Button2
_2()
Case $Button4
_3()
EndSwitch
WEndFunc _1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, GUICtrlRead($List1))
EndFunc ;==>_1Func _2()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, "")
EndFunc ;==>_2Func _3()
[/autoit]
Local $price
Local $lcount = _GUICtrlListBox_GetCount($hlist2)
For $i = 1 To $lcount
Local $open = FileOpen(@ScriptDir & "\Neuer Ordner\" & _GUICtrlListBox_GetText($hlist2, $i - 1) & ".txt", 0)
Local $read = FileReadLine($open, 2)
$price += StringReplace($read, ",", ".")
FileClose($open)
Next
GUICtrlSetData($Input1, $price)
$price = ""
EndFunc ;==>_3 -
Das kommt auf das Ausgangsformat an
Poste doch mal den relevanten Teil der .txt Datei. -
Achwas das wird schon

Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#NoTrayIcon$search = FileFindFirstFile(@ScriptDir & "\Neuer Ordner" & "\*.*")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$file = FileFindNextFile($search)
If @error Then ExitLoop
$F1 = FileOpen("test.txt", 1)
FileWrite($F1, $file)
FileClose($F1)
$file1 = FileRead("test.txt")
$file2 = StringRegExpReplace($file1, '.txt', "|")
WEnd$Form1 = GUICreate("Form1", 398, 342, 726, 184)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x000000)
$List1 = GUICtrlCreateList("", 8, 8, 160, 240)
GUICtrlSetData(-1, $file2)
$List2 = GUICtrlCreateList("", 229, 8, 160, 240)
$hlist2 = GUICtrlGetHandle($List2)
$Button1 = GUICtrlCreateButton("+", 184, 104, 30, 25, 0)
$Button2 = GUICtrlCreateButton("-", 184, 144, 30, 25, 0)
$Input1 = GUICtrlCreateInput("Preis Einkauf in €", 229, 250, 160, 25)
$Button3 = GUICtrlCreateButton("Neuer Artikel", 8, 250, 160, 25, 0)
$Button4 = GUICtrlCreateButton("Druck Einkauf", 148, 304, 100, 25, 0)
$Pic1 = GUICtrlCreatePic("BG.jpg", 0, 0, 396, 340, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS, $WS_DISABLED))
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete("test.txt")
Exit
Case $Button1
_1()
Case $Button2
_2()
Case $Button4
_3()
EndSwitch
WEndFunc _1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, GUICtrlRead($List1))
EndFunc ;==>_1Func _2()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($List2, "")
EndFunc ;==>_2Func _3()
[/autoit]
Local $price
Local $lcount = _GUICtrlListBox_GetCount($hlist2)
For $i = 1 To $lcount
Local $open = FileOpen(@ScriptDir & "\Neuer Ordner\" & _GUICtrlListBox_GetText($hlist2, $i - 1) & ".txt", 0)
Local $read = FileReadLine($open, 2)
$price += $read
FileClose($open)
Next
GUICtrlSetData($Input1, $price)
$preis = ""
EndFunc ;==>_3
So oder?Edit \ Funktioniert jetzt natürlich nur wenn eine Zahl in Zeile2 der .txt Datei steht.
Sollte dort 2,50€ oder sowas stehen muss man eben noch aufs richtige Format umwandlen. -
[autoit]Alles anzeigen
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$Form_Mstsc = GUICreate("Remotedesktop Tool", 364, 36, -1, -1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Button_GO = GUICtrlCreateButton("GO", 304, 8, 49, 22, 0)
$Combo_Auswahl = GUICtrlCreateCombo("Bitte eine Auswahl treffen" , 8, 8, 289, 25)
GUICtrlSetData(-1, "Remote Root|Remote PC", "item3")
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button_GO
If GUICtrlRead($Combo_Auswahl) = "Was du eben abfragen willst" then ;die gewünschte Funktion z.B. Run(...)
EndSwitch
WEnd
GUICtrlRead ist dein Freund.
-
Laut Hilfe nur bitmaps und icons. Ich glaube aber .gif gehen auch, probiers einfach aus

-
[autoit]
GUICtrlSetImage
[/autoit]sollte dir weiterhelfen.
Die Hinweise aus der Hilfe musst du natürlich beachten.
"Opt('MustDeclareVars',1)" muss nicht verwendet werden.
-
Irgendwo wird dann die while wend Schleife nichtmehr verlassen.
Hilft ein Exitloop zwischen Zeile 72 und 73? -
Versuch doch mal die Directshow UDF. Ein Directshow Player in Autoit wäre cool.
Ansonsten funktioniert die Methode von chrisatack ja, glaube dazu habe ich daheim auch ein Beispiel.
-
Sorry aber das ist völlig unverständlich (Skript & Problemstellung).