Hallo Bernd,
vielen Dank für die Hilfe.
Gruß Ralf
Hallo Bernd,
vielen Dank für die Hilfe.
Gruß Ralf
Guten Morgen,
ich habe das Ganze jetzt mal ein wenig in mein Skript eingebaut. Klappt wunderbar. In der GUI sind aber auch zur Zeit 4 Checkboxen, von denen eine zwingend auszuwählen ist. Den Wert aus der Auswahl (Kalenderjahr) brauche ich für den weiteren Programmablauf.
; Script Start - Add your code below here
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
Global $datum, $name, $Dateiname
;Send("!v")
;sleep(500)
Grundangaben ()
Func Grundangaben()
; Erzeugt ein GUI in der Namen und Kalenderjahr abgefragt werden.
$hGUI = GUICreate("Mehrere Buchführungen", 520, 350, -1, -1)
GUISetState(@SW_SHOW, $hGUI)
guisetfont(10, 600)
Local $idCheckbox1 = GUICtrlCreateCheckbox("2012", 20, 180, -1, -1)
Local $idCheckbox2 = GUICtrlCreateCheckbox("2014", 200, 180, -1, -1)
Local $idCheckbox3 = GUICtrlCreateCheckbox("2013", 110, 180, -1, -1)
Local $idCheckbox4 = GUICtrlCreateCheckbox("2015", 290, 180, -1, -1)
;Local $idCheckbox5 = GUICtrlCreateCheckbox("2016", 20, 220, -1, -1)
;Local $idCheckbox6 = GUICtrlCreateCheckbox("2017", 110, 220, -1, -1)
;Local $idCheckbox7 = GUICtrlCreateCheckbox("2018", 200, 220, -1, -1)
;Local $idCheckbox8 = GUICtrlCreateCheckbox("2019", 290, 220, -1, -1)
Local $idLabel = GUICtrlCreategroup("Markieren Sie das zutreffende Kalenderjahr", 5, 150, 510, 60)
;Local $idLabel = GUICtrlCreategroup("Markieren Sie das zutreffende Kalenderjahr", 5, 150, 510, 120) ;mehrzeilig ab 2016 !!
Local $idLabel1 = GUICtrlCreateGroup("Geben Sie den Namen ein ", 5, 30, 510, 100)
guisetfont(7, 400)
Local $idLabel2 = GUICtrlCreateLabel("(" & "Die Konventionen von Windows für die Speicherung von Dateien" & " und Ordnern werden automatisch überwacht" & ")", 20, 60, -1, -1)
guisetfont(10, 600)
Local $idInput = GUICtrlCreateInput("", 20, 90, 300, 20)
local $idFocus = ControlFocus("Mehrere", "Name", $idInput)
local $idColour = GUISetBkColor(0xc4c4c4)
Local $idBtn = GUICtrlCreateButton("Ok", 20, 300, 60, 20)
GUISetState(@SW_SHOW)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idBtn
If $Dateiname = "" Then
MsgBox(262144,"Fehler", "Bitte Dateiname eingeben")
ControlFocus($hGUI, "", $idInput)
ContinueLoop
EndIf
ExitLoop
Case $idInput
$Dateiname = GUICtrlRead($idInput)
If FileExists("I:\AIS_" & $datum & $Dateiname) Or FileExists("I:\AIS_" & $Dateiname) Then
MsgBox(262144, "Namenskonflikt!", "Dieser Dateiname existiert bereits!")
GUICtrlSetData($idInput, "")
$Dateiname = ""
ControlFocus($hGUI, "", $idInput)
EndIf
EndSwitch
WEnd
EndFunc ;==> Grundangaben
Alles anzeigen
Im Voraus schon mal vielen Dank.
Gruß Ralf
Edit:
Hallo,
hat sich erledigt, habe es mit einer ComboBox realisiert.
Gruß Ralf
Edit:
Hallo,
ich muss mich doch nochmals melden.
ich wollte die Prüfung, ob Sonderzeichen im Dateinamen enthalten sind nun doch im Rahmen der Prüfung des Namenskonfliktes, direkt nach dem Verlassen des Inputfeldes abhandeln.
Bei meinen bescheidenen Versuchen wird der Wert immer weider als falsch, da mit Sonderzeichen ausgesteuert. ? und & wurden als Beispiel verwendet.
Wäre dankbar für eure Hilfe
While 1
Switch GUIGetMsg()
Case $gui_Event_Close
msgbox(262208,"Abbruch durch Benutzer", "Dann eben nicht!")
Exit
Case $idBtn
If $Dateiname = "" Then
MsgBox(262144,"Fehler", "Bitte Dateinamen eingeben")
ControlFocus($hGUI, "", $idInput)
$dateiname = ""
continueloop
EndIf
If $scomboread = "" Then
msgbox(262144, "Fehler", "Bitte Kalenderjahr auswählen")
ControlFocus($hgui, "", $idComboBox)
ContinueLoop
EndIf
ExitLoop
Case $idInput
$Dateiname = GUICtrlRead($idInput)
If FileExists("I:\AIS_" & $datum & $Dateiname) Or FileExists("I:\AIS_" & $Dateiname) Then
MsgBox(262144, "Namenskonflikt!", "Dieser Dateiname existiert bereits!")
GUICtrlSetData($idInput, "")
$Dateiname = ""
ControlFocus($hGUI, "", $idInput)
ContinueLoop
EndIf
if StringReplace($Dateiname, "?,&", "") Then
$Zeichen = msgbox(262144,"Fehler","Der Dateiname darf keines der folgenden Zeichen enthalten:" & @crlf & @crlf & "\ / : * ? " & " "" < > |" )
if $Zeichen = 1 Then
GUICtrlSetData($idinput, "")
endif
msgbox(0,"",$Idinput & @crlf & @crlf & $Dateiname)
GUICtrlSetData($idInput, "")
ControlFocus($hGUI, "", $idInput)
ContinueLoop
EndIf
Case $idComboBox
$sComboRead = GUICtrlRead($idComboBox)
EndSwitch
WEnd
Alles anzeigen
Gruß Ralf
Hallo Bernd,
uups.
Zitat@Spike_2015, prüfen ob eine Datei vorhanden ist geht mit FileExists
Hab den Code so schnell runter geschrieben. Das Original ist mit FileExists Peinlich.
Der Dateiname steht in einem Inputfeld der GUI.
Gruß Ralf
Hallo zusammen,
Danke für die vielen Antworten. Werde das morgen testen.
Ich habe da auch schon rumprobiert, kam aber meistens auf eine Endlosschleife.
Noch eine ganz andere Frage. Könnte ich stattdessen die GUI mit den bisher getätigten Eingaben nochmals einblenden zur Namenskorrektur. Dafür habe ich aber jetzt keine Code vorliegen.
Gruß Ralf
Hallo allerseits,
ich habe für ein Programm eine Vorlage mittels AutoIT erstellt. In diesem Skript werden zur Zeit vier Kalenderjahre in einer GUI zur Auswahl angeboten. In der gleichen GUI wird auch ein Dateiname abgefragt.
Das ganze wird in der Folge zur Erstellung einer gewissen Ordnerstruktur mit diversen xml Dateien und speziellen Programmdateien mit der Endung *.rec verwendet. Das eigentliche Programm nutzt diese Vorlage für den Aufbau eines Falls in einer Datenbank.
Maximal Sorgfalt muss auf den Dateinamen verwendet werden. Dieser muss einmalig sein. Das Skript war bisher so aufgebaut, dass der Dateinamen verglichen wurde und bei einer Namensgleichheit das Skript abgebrochen oder neu gestartet werden konnte.
Nachdem alle kleinen Macken beseitigt sind, wollte ich die Namensüberprüfung korrigieren. Das mit dem Neustart des Skriptes hat mir so nicht gefallen. Mein Plan war daher, die Namensüberprüfung wie gewohnt durchlaufen zu lassen, aber mittels einer Inputbox einen neuen Namen vergeben zu können.
Das funktioniert auch so weit. Wenn ich den Namen der als Duplikat gefunden wurde erneut eingebe, läuft das Skript durch und überschreibt den Fall der in dem entsprechenden Laufwerk abgelegt wurde und was noch schlimmer ist, dass bei versehentlicher Übernahme der Vorlage in das Programm Probleme in der Datenbank auftreten.
Ich müsste das so regeln, dass bei einer Namenseingabe in der Inputbox der dort vergebene Name auch wieder überprüft wird. Und das solange bis ein eindeutiger Name vergeben worden ist.
Global $datum, $name, $Neuername, $Dateiname
if $Dateiname = ("I:\AIS_" & $Datum & $Dateiname) or ("I:\AIS_" & $Dateiname) then
$name = MsgBox(262144,"Namenskonflikt!", "Dieser Dateiname existiert bereits!")
EndIf
if $name = 1 Then
$NeuerName = InputBox("Name", "Bitte korrigieren Sie den Namen:", $Dateiname)
$Dateiname = $Neuername
EndIf
Das ist bestimmt eine Kleinigkeit, aber ich sehe zur Zeit den Wald vor läuter Bäumen nicht
Gruß Ralf