Optimierung Umbenennungstool

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Meister Lampe
Posts: 173
Joined: 06 Apr 2014, 13:28

Re: Optimierung Umbenennungstool

28 May 2020, 16:48

Hallo just me!

Also ich hatte das schon einmal getestet und die Variablen auch jetzt nochmal mithilfe des Codes, den Du mir gegeben hast, verglichen. Die eine bleibt zuerst leer, da es sich bei "ZaehlArt" und "ZahlArtAuswahl" um zwei unterschiedliche Variablen für dieselbe Sache handelt. Die erste wird intern benutzt und zum Abspeichern in der Tabelle. Die zweite ist die Auswahl in der DropDownList. In der Subroutine VorlagenDefinieren werden die beiden dann synchronisiert und auf die interne Variable gleichgesetzt. Ich habe in den Vergleich bei der Eingabe jetzt also ZahlArtAuswahl hineingesetzt:

Code: Select all

; Neue Vorlage abspeichern
Neuerstellen:
Gui, Submit, NoHide  ; Speichert die Benutzereingaben für eine neue Vorlage
; AktSignEingabe darf nicht leer sein
AktSignEingabe := Trim(AktSignEingabe)
If (StrLen(AktSignEingabe) = 0)
{
   MsgBox, 16, Fehler!, Der Bestandsname darf nicht leer sein!
   GuiControl, Focus, AktSignEingabe
   Return
}
; AktSignEingabe darf nicht bereits vergeben sein
Loop, % LV_GetCount()
{
   LV_GetText(AktSignLV, A_Index, 1)
   LV_GetText(ZaehlArtLV, A_Index, 4)
   ;~ MsgBox, "%AktSignEingabe%" <-> "%AktSignLV%"`n"%ZaehlArtAuswahl%" <-> "%ZaehlArtLV%" " / " "Neu Erstellen"
   If (AktSignEingabe = AktSignLV and ZaehlArtAuswahl = ZaehlArtLV)
   {
      MsgBox, 16, Fehler!, Die Vorlage ist bereits vergeben!
      GuiControl, Focus, AktSignEingabe
      Return
   }
}
; SignEingabe darf nicht leer sein
SignEingabe := Trim(SignEingabe)
If (StrLen(SignEingabe) = 0)
{
   MsgBox, 16, Fehler!, Die Signaturvorgabe darf nicht leer sein!
   GuiControl, Focus, SignEingabe
   Return
}
; IndexEingabe darf nicht leer sein
IndexEingabe := Trim(IndexEingabe)
If (StrLen(IndexEingabe) = 0 and ZaehlArtAuswahl <> "ohne Indizes")
{
   MsgBox, 16, Fehler!, Die Indexvorgabe darf nur bei der Auswahl "ohne Indizes" leer sein!`nWählen Sie eine andere Auswahl oder füllen Sie das Indexfeld!
   GuiControl, Focus, IndexEingabe
   Return
}

; Alles OK, verarbeiten
AktSignNeu := AktSignEingabe
StellenSignNeu := StrLen(SignEingabe)
StellenIndexNeu := StrLen(IndexEingabe)

Gosub, VorlagenDefinieren
   
FileAppend , `n%AktSignNeu%`t%SignVorlage%`t%IndexVorlage%`t%ZaehlArt%, %VorgabenDatei%

; Auswahldatei updaten
;~ AuswahlNeu = %AktSignNeu%`t%ZaehlArtauswahl%
;~ If !(AuswahlNeu = Auswahl)
;~ {
   ;~ Auswahl := AuswahlNeu
   ;~ File := FileOpen(AuswahlDatei, "w")
   ;~ File.Write(AuswahlNeu)
   ;~ File.Close()
;~ }

If (AktSignNeu <> AuswahlSP1 or ZaehlArt <> AuswahlSP4)
{
   AuswahlSP1 := AktSignNeu
   AuswahlSP4 := ZaehlArt
   File := FileOpen(AuswahlDateiSP1, "w")
   File.Write(AuswahlSP1)
   File.Close()
   File := FileOpen(AuswahlDateiSP4, "w")
   File.Write(AuswahlSP4)
   File.Close()   
}
; Abschluß-Message
Gui, Destroy
VorschauMsgNeu = %AktSignNeu%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
MsgAnzeige = 
(
Ihre neu erstellte Vorlage %VorschauMsgNeu% wurde abgespeichert.
Möchten Sie zurück zur Vorlagenauswahl?
)
MsgBox, 68, , %MsgAnzeige%
   IfMsgBox Yes
      gosub, Auswahlfenster
   else
      gosub, Anzeige
Return

;------------------------------------------------------------------------
; Auswahl abbrechen -> Programm beenden
Abbrechen:
GuiClose:
Gui, Destroy
return

;------------------------------------------------------------------------
; Vorschau mit Progresselement statt MsgBox, damit Schrift formatierbar ist
^F7::
Anzeige:

If (AktSign = "")
{
   LeerAnzeige = Es ist keine Bestandsvorlage ausgewählt! 
   Progress, m2 fs12 zh0 ct0000ff CWffffff B, %LeerAnzeige%, , Vorschau, Verdana
}
else
{
   Gosub, VorlagenDefinieren

   VorschauMsg = %AktSign%_%SignVorlage%%ZaehlArtZeichen%%IndexVorlage%
   Progress, m2 fs12 zh0 ct0000ff CWffffff B, %VorschauMsg%, , Vorschau, Verdana
}
SetTimer, ProgressOff, 1500
Return

ProgressOff:
Progress, Off
Return
Gebracht hat das aber nichts. Das Script läßt immernoch alle neuen Vorlagen durchgehen - auch wenn sie genauso bereits in der Tabelle stehen.
Irgendwie muß das wohl doch an der logischen Formulierung des If-Ausdrucks liegen. Doch ich habe keine Ahnung, wie ich das richtig machen soll.

Viele Grüße von Meister Lampe
User avatar
haichen
Posts: 472
Joined: 09 Feb 2014, 08:24

Re: Optimierung Umbenennungstool

29 May 2020, 00:52

Mit MsgBox, % "|" AktSignEingabe "|" könntest du vor dem If mal schauen was in der Variablen steht. Ein bei mir üblicher Verdächtiger wäre ein Absatzzeichen `n.
Das müsstest du mal mit allen Ifs machen.
Du kannst das auch als Else hinter dem If-Zweig machen.

Code: Select all

if()
{
	...
}
else
  	MsgBox, % A_LineNumber " Varname|" Varname"|"
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Optimierung Umbenennungstool

29 May 2020, 04:55

... Die zweite ist die Auswahl in der DropDownList. In der Subroutine VorlagenDefinieren werden die beiden dann synchronisiert und auf die interne Variable gleichgesetzt. Ich habe in den Vergleich bei der Eingabe jetzt also ZahlArtAuswahl hineingesetzt: ...
Interessant, beim Neuerstellen einer Vorlage werden Felder über die Auswahl aus der DDL gefüllt? Was sagt denn die MsgBox für die LV-Zeile, die einen Treffer liefern soll?

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 1 guest