1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Spike_2015

Beiträge von Spike_2015

  • Dateinamen auf Duplikate überprüfen

    • Spike_2015
    • 12. Juni 2015 um 07:13

    Hallo Bernd,

    vielen Dank für die Hilfe.

    Gruß Ralf

  • Dateinamen auf Duplikate überprüfen

    • Spike_2015
    • 3. Juni 2015 um 09:55

    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.

    Spoiler anzeigen
    AutoIt
    ; 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

    Spoiler anzeigen
    AutoIt
    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

  • Dateinamen auf Duplikate überprüfen

    • Spike_2015
    • 2. Juni 2015 um 20:05

    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 :love: Peinlich.

    Der Dateiname steht in einem Inputfeld der GUI.

    Gruß Ralf

  • Dateinamen auf Duplikate überprüfen

    • Spike_2015
    • 2. Juni 2015 um 19:49

    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

  • Dateinamen auf Duplikate überprüfen

    • Spike_2015
    • 2. Juni 2015 um 16:44

    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.

    Spoiler anzeigen
    Code
    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™