Beiträge von Mikki
-
-
Aber ich habe immer noch nicht ganz verstanden wie ich das nun machen soll.
Sorry wenn ich ich dir blöd vorkomme, aber das dauert ein bisschen bei mir
. -
Hallo,
ja korrekt. also für $aFileList_Source_erstellen_plaene_bmf -> $aFileList[0] , für $aFileList_Source_erstellen_plaene_dwg -> $aFileList[1]
Also im Endeffekt so, dass ich nicht mehr für einen Dateitypen eine Variable habe, sonder dass ich ein Array habe, wo das alles drin ist.
Würde natürlich dann genau kommentieren was was ist.
-
Hallo alpines,
Ja ich weiß. Im Index 0 steht die Anzahl der Elemente. Im Index 1 die erste Datei.
Aber worauf willst du hinaus?
Es macht keinen Unterschied bei der Prüfung und bei der Ausgabe der Fehlermeldung. Habe es gerade ausprobiert. Die Anzahl der Fehlermeldungen und auch der Inhalt, also welche Datei doppelt vorkommt, ist gleich.
-
Hallo zusammen,
ich habe folgendes Problem, und benötige mal eure Hilfe:
Spoiler anzeigen
Global $aFileList_Source_erstellen_plaene_bmf, $aFileList_Dest_erstellen_plaene_bmf, $Plannummern_Dest_erstellen_plaene_bmf, $Plannummern_Source_erstellen_plaene_bmf
Global $aFileList_Source_erstellen_plaene_dwg, $aFileList_Dest_erstellen_plaene_dwg, $Plannummern_Dest_erstellen_plaene_dwg, $Plannummern_Source_erstellen_plaene_dwg
Global $aFileList_Source_erstellen_plaene_pdf, $aFileList_Dest_erstellen_plaene_pdf, $Plannummern_Dest_erstellen_plaene_pdf, $Plannummern_Source_erstellen_plaene_pdf
Global $aFileList_Source_erstellen_persp_bmf, $aFileList_Dest_erstellen_persp_bmf, $Plannummern_Dest_erstellen_persp_bmf, $Plannummern_Source_erstellen_persp_bmf
Global $aFileList_Source_erstellen_persp_dwg, $aFileList_Dest_erstellen_persp_dwg, $Plannummern_Dest_erstellen_persp_dwg, $Plannummern_Source_erstellen_persp_dwg
Global $aFileList_Source_erstellen_persp_pdf, $aFileList_Dest_erstellen_persp_pdf, $Plannummern_Dest_erstellen_persp_pdf, $Plannummern_Source_erstellen_persp_pdf
Code
Alles anzeigen$aFileList_Source_erstellen_plaene_pdf = _FileListToArray($INI_READ_SECTION_1_KEY[0], "*.pdf*", $FLTA_FILES) $aFileList_Dest_erstellen_plaene_pdf = _FileListToArray($INI_READ_SECTION_1_KEY[7], "*.pdf*", $FLTA_FILES) For $i = 1 To UBound($aFileList_Source_erstellen_plaene_pdf) - 1 $Plannummern_Source_erstellen_plaene_pdf = StringLeft($aFileList_Source_erstellen_plaene_pdf[$i], 6) For $ii = 1 To UBound($aFileList_Dest_erstellen_plaene_pdf) - 1 $Plannummern_Dest_erstellen_plaene_pdf = StringLeft($aFileList_Dest_erstellen_plaene_pdf[$ii], 6) If $Plannummern_Source_erstellen_plaene_pdf == $Plannummern_Dest_erstellen_plaene_pdf Then $aMsgBox[59][0] = MsgBox(49, "Info: Doppelte Plannummern vorhanden", "Im Ordner " & $INI_READ_SECTION_1_KEY[7] & " sind diese Plannummern schon vorhanden! --> " & $aFileList_Dest_erstellen_plaene_pdf[$ii] & @CRLF & "Der Vorgang wird abgebrochen, bis der Fehler behoben ist!") Switch $aMsgBox[59][0] Case 1 Case 2 Call("_Button_freigeben_erstellen") Return EndSwitch EndIf Next NextWie Ihr seht, sind das viele Deklarationen für eigentlich ein und den selben Zweck. Problem hier ist allerdings, dass die Pfade immer unterschiedlich sind.
Also ich möchte prüfen, ob Plannummern oder Dateibenennungen in Source und Dest doppelt vorhanden sind. Das Thema hatten wir ja schon. Funzt auch soweit ganz gut.
Meine Frage ist, wie kann ich das ganze eleganter gestalten. Und zwar von der Benennung der Variablen. Ist es nicht möglich $aFileList_Source_erstellen[0] oder $aFileList_Source_erstellen[0][0]
zu machen? Also ein 1D oder 2D Array?
Ich habe es ausprobiert. Nur ist das Problem, dass ich dann keine Fehlermeldung bekomme, die eigentlich kommen sollte.
Habt ihr vielleicht noch eine Idee?
Danke im Voraus.
Mfg Mikki
-
-
Hallo Bitnugger
jawoll genau so soll´s sein. Vielen Dank!

Aber kannst du mir denn sagen, wo der Fehler bei meiner Methode liegt?
LG Mikki
-
Hallo autoiter
das habe ich auch schon versucht. Das Ergebnis ist das selbe.
Ich muss aber mit $i prüfen, da nur 15 Inputboxen vorhanden sind. Deshalb ja die zweite Schleife, da sich der erste Zähler $i von 0 bis 14 bezieht und der zweite Zähler $j von 15 bis 29. $i für den Fall, dass die Boxen leer sind und $j für den Fall, dass die Pfade ungültig sind.
Oder habe ich deine Antwort jetzt falsch gedeutet?
LG Mikki
-
Hallo zusammen,
ich habe ein kleines Problem.
Hier ein Ausschnitt aus meinem Code:
Code
Alles anzeigenGlobal $aMsgBox[32][2] $aMsgBox[0][1] = "1.Kein Umwandlungsordner angegeben!" $aMsgBox[1][1] = "2.Kein Verzeichnis für die Stuecklisten angegeben!" $aMsgBox[2][1] = "3.Kein Verzeichnis für die NC-Daten (nc-blech) angegeben!" $aMsgBox[3][1] = "4.Kein Verzeichnis für die NC-Daten (nc-profil) angegeben!" $aMsgBox[4][1] = "5.Kein Pfad im Zielverzeichnis für das Fertigungspaket angegeben!" $aMsgBox[5][1] = "6.Kein Pfad im Auftragsordner für die bmf´s angegeben!" $aMsgBox[6][1] = "7.Kein Server-Verzeichnis für die Stuecklisten angegeben!" $aMsgBox[7][1] = "8.Kein Server-Verzeichnis für die pdf-Dateien angegeben!" $aMsgBox[8][1] = "9.Kein Server-Verzeichnis für die dwg-Dateien angegeben!" $aMsgBox[9][1] = "10.Kein Server-Verzeichnis für die bmf-Dateien angegeben!" $aMsgBox[10][1] = "11.Kein Server-Verzeichnis für die Teilsystemperspektive als pdf angegeben!" $aMsgBox[11][1] = "12.Kein Server-Verzeichnis für die Teilsystemperspektive als dwg angegeben!" $aMsgBox[12][1] = "13.Kein Server-Verzeichnis für die Teilsystemperspektive als bmf_ angegeben!" $aMsgBox[13][1] = "14.Kein Server-Verzeichnis für die NC-Daten angegeben!" $aMsgBox[14][1] = "15.Kein Server-Verzeichnis für die Abwicklungen-Kantteile angegeben!" $aMsgBox[15][1] = "1.Pfad für den Umwandlungsordner (lokal) ungültig!" $aMsgBox[16][1] = "2.Pfad für die Stücklisten (lokal) ungültig!" $aMsgBox[17][1] = "3.Pfad für die NC-Daten (nc-blech, lokal) ungültig!" $aMsgBox[18][1] = "4.Pfad für die NC-Daten (nc-profil, lokal) ungültig!" $aMsgBox[19][1] = "5.Pfad für das Fertigungspaket (lieferungen, lokal) ungültig!" $aMsgBox[20][1] = "6.Pfad für die bmf´s (plaene, lokal) ungültig!" $aMsgBox[21][1] = "7.Pfad für die Stücklisten (Server) ungültig!" $aMsgBox[22][1] = "8.Pfad für die Werkstattpläne (pdf´s, Server) ungültig!" $aMsgBox[23][1] = "9.Pfad für die Werkstattpläne (dwg´s, Server) ungültig!" $aMsgBox[24][1] = "10.Pfad für die Werkstattpläne (bmf´s, Server) ungültig!" $aMsgBox[25][1] = "11.Pfad für die Teilsystemperspektive (pdf´s, Server) ungültig!" $aMsgBox[26][1] = "12.Pfad für die Teilsystemperspektive (dwg´s, Server) ungültig!" $aMsgBox[27][1] = "13.Pfad für die Teilsystemperspektive (bmf´s, Server) ungültig!" $aMsgBox[28][1] = "14.Pfad für die NC-Daten (Server) ungültig!" $aMsgBox[29][1] = "15.Pfad für die Abwicklungen Kantteile (dxf, Server) ungültig!" $aMsgBox[30][1] = "16.Umwandlungsordner kann nicht gleich dem Ordner 'plaene' sein!" $aMsgBox[31][1] = "Sie haben einen Sicherungsauftrag gewählt! Die Aktion wird abgebrochen! Bitte wählen Sie einen Sortierauftrag." ;weiterer Code..... Func Sortierauftrag_anlegen() GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE) $READ_Checkbox_Fremdauftrag = GUICtrlRead($Checkbox_Fremdauftrag) If $READ_Checkbox_Fremdauftrag = $GUI_UNCHECKED Then ;~ Input auslesen und auf Vollständigkeit und Gültigkeit prüfen. For $i = 0 To 14 $aRead_Inputbox[$i] = GUICtrlRead($aInputbox[$i]) If Not $aRead_Inputbox[$i] Then $aMsgBox[$i][0] = MsgBox(16, "Error", "" & $aMsgBox[$i][1]) GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE) If $aMsgBox[$i][0] = 1 Then GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_ENABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_ENABLE) EndIf Return EndIf For $j = 15 To 29 If Not FileExists($aRead_Inputbox[$i]) Then $aMsgBox[$j][0] = MsgBox(16, "Error", "" & $aMsgBox[$j][1]) GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE) If $aMsgBox[$j][0] = 1 Then GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_ENABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_ENABLE) EndIf Return EndIf Next Next For $k = 0 To 5 $aRead_Inputbox[$k] = GUICtrlRead($aInputbox[$k]) If $aRead_Inputbox[0] = $aRead_Inputbox[5] Then $aMsgBox[30][0] = MsgBox(16, "Error", "" & $aMsgBox[30][1]) GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE) If $aMsgBox[30][0] = 1 Then GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_ENABLE) GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_ENABLE) Return EndIf EndIf NextMein Problem ist jetzt, dass wenn ich bei einem Pfad ein paar Zeichen lösche / Pfad ungültig mache, dass er mir dann immer den String von $MsgBox[15][1] anzeigt. Es ist auch egal in welcher Inputbox ich den Pfad ungültig mache.
Allerdings: Wenn eine von den 15 Inputboxen leer ist, dann sagt er mir auch welche leer ist. So wie es sein soll.
Könnt Ihr mir da helfen?
Danke im Voraus.
LG Mikki
-
Hallo ihr Zwei,
vielen Dank. Das war der richtige Denkanstoß. Es sieht jetzt so aus:
Code
Alles anzeigenWhile 1 Switch GUIGetMsg() Case $aCheckbox[0] To $aCheckbox[11] For $c = 0 To 11 $aREAD_Checkbox[$c] = GUICtrlRead($aCheckbox[$c]) $aREAD_Combobox[$c] = GUICtrlRead($aCombobox[$c]) If $aREAD_Checkbox[$c] = $GUI_CHECKED Then GUICtrlSetState($aCombobox[$c], $GUI_ENABLE) GUICtrlSetState($aInput_Stk[$c], $GUI_ENABLE) Else GUICtrlSetState($aCombobox[$c], $GUI_DISABLE) GUICtrlSetState($aInput_Stk[$c], $GUI_DISABLE) EndIf Next Case $Button For $d = 0 To 3 $aREAD_Input_Sattel[$d] = GuiCtrlRead($aInput_Sattel[$d]) Next For $e = 0 To UBound($aCheckbox) -1 $aGetState_Checkbox[$e] = GUICtrlRead($aCheckbox[$e]) If $aGetState_Checkbox[$e] = 1 Then $aREAD_Combobox[$e] = GUICtrlRead($aCombobox[$e]) $aREAD_Input_Stk[$e] = GUICtrlRead($aInput_Stk[$e]) MsgBox(0, "", "" & $aREAD_Combobox[$e] & " / " & $aREAD_Input_Stk[$e]) EndIf Next Case $GUI_EVENT_CLOSE Exit EndSwitch WEndDie Abfrage der Werte in der Combobox und in der Inputbox funktionieren auch.
Vielen Dank und ein sonniges Wochenende!

LG Mikki
-
Hallo zusammen,
hier ein Beispiel und unten stehend meine Frage.
Code
Alles anzeigenWhile 1 For $c = 0 To 11 $aREAD_Checkbox[$c] = GUICtrlRead($aCheckbox[$c]) $aREAD_Combobox[$c] = GUICtrlRead($aCombobox[$c]) Next Switch GUIGetMsg() Case $aCheckbox[0] If $aREAD_Checkbox[0] = $GUI_CHECKED Then GUICtrlSetState($aCombobox[0], $GUI_ENABLE) GUICtrlSetState($aInput_Stk[0], $GUI_ENABLE) Else GUICtrlSetState($aCombobox[0], $GUI_DISABLE) GUICtrlSetState($aInput_Stk[0], $GUI_DISABLE) EndIf Case $aCheckbox[1] If $aREAD_Checkbox[1] = $GUI_CHECKED Then GUICtrlSetState($aCombobox[1], $GUI_ENABLE) GUICtrlSetState($aInput_Stk[1], $GUI_ENABLE) Else GUICtrlSetState($aCombobox[1], $GUI_DISABLE) GUICtrlSetState($aInput_Stk[1], $GUI_DISABLE) EndIf Case $aCheckbox[2] If $aREAD_Checkbox[2] = $GUI_CHECKED Then GUICtrlSetState($aCombobox[2], $GUI_ENABLE) GUICtrlSetState($aInput_Stk[2], $GUI_ENABLE) Else GUICtrlSetState($aCombobox[2], $GUI_DISABLE) GUICtrlSetState($aInput_Stk[2], $GUI_DISABLE) EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch WEndHier meine Frage:
Ist es möglich, per For-Schleife sämtliche Comboboxen mit der Checkbox zu aktivieren. Also so, dass ich nicht 12 mal Case..... schreiben muss, sondern nur ein mal mit Schleife? Ich habe schon vieles versucht aber mehr will mir im Moment nicht einfallen.
LG Mikki
-
Hallo,
okay habe es mit einer For-Schleife geschafft.
Danke schön

Mfg
Mikki
-
Hallo Alpines,
ich meinte das eigentlich so: Ich öffne per FileOpenDialog die Liste und er liest mir alles von Spalte A15 bis zur letzten beschrifteten Zeile in Spalte A alles ein.
Das soll er dann in ListView eintragen. Meine Frage war, wie er feststellen kann, welche Zeile leer ist, bzw. die Letzte?
-
Hallo zusammen,
ist es möglich, Daten aus einer Exceltabelle einzulesen, und dann festzustellen, welche Zeile die letzte beschriftete ist?
Wenn ja, wie? Ich stehe nämlich gerade echt auf dem Schlauch.
Danke im Voraus.

MfG
Mikki
-
-
Hallo zusammen,
ich habe da mal eine Frage.
Wenn ich mir ein Fenster erzeugt habe ohne die Titelleiste, wie kann ich dann das Fenster wieder verschieben? Also packen und an eine andere Position auf dem Monitor verschieben.
Anbei der Code. Der dient nur als Beispiel.
C
Alles anzeigen#include <StaticConstants.au3> #include <WindowsConstants.au3> #Region Deklaration Global $Window_Main Global $Button[3] #EndRegion Deklaration Opt("GUIOnEventMode", 1) Opt("MustDeclareVars", 1) $Window_Main = GUICreate("lmc", 510, 500, Default, Default, BitOr($WS_BORDER, $WS_POPUP)) GUISetBkColor(0x7f8c8d, $Window_Main) $Button[0] = GUICtrlCreateLabel("Test", 10, 460, 160, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetFont($Button[0], 11, 900) GUICtrlSetColor($Button[0], 0xFFFFFF) GUICtrlSetBkColor($Button[0], 0xFF690F) $Button[1] = GUICtrlCreateLabel("_", 400, 0, 50, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetOnEvent($Button[1], "MINIMIZE_clicked_Window_Main") GUICtrlSetFont($Button[1], 11, 900) GUICtrlSetColor($Button[1], 0xFFFFFF) GUICtrlSetBkColor($Button[1], 0x3498db) $Button[2] = GUICtrlCreateLabel("X", 460, 0, 50, 30, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetOnEvent($Button[2], "CLOSE_clicked_Window_Main") GUICtrlSetFont($Button[2], 11, 900) GUICtrlSetColor($Button[2], 0xFFFFFF) GUICtrlSetBkColor($Button[2], 0xe74c3c) GUISetState(@SW_SHOW) While 1 Sleep(50) WEnd Func CLOSE_clicked_Window_Main() Exit EndFunc Func MINIMIZE_clicked_Window_Main() GUISetState(@SW_MINIMIZE, $Window_Main) EndFuncMit freundlichen Grüßen
Mikki
-
Guten Morgen zusammen,
Vielleicht ist eine Vorgehensweise nicht perfekt aber komme im Moment sehr gut damit zurecht.
Also:
ich habe im Moment ein Script mit knapp 6000 Zeilen, welches aber zu 100% fertig ist. Es dient zur Organisation / Ablage von speziellen Plan-Dateien und dazu, dass Fertigungspakete die wir in die Werkstatt geben, immer gleich aussehen. Dort ist auch für jeden Vorgang das Errorhandling. Das macht viel vom Code aus.
Ich habe mir das Programm "Modular" aufgebaut. Also ich meine Abschnitte und Teilabschnitte, die ich in einem Kommentarblock am Anfang der Datei deklariert und genau beschrieben habe. Also z.B. Abschnitt A3: .....
Außerdem sind dort die wichtigen Zeilen eingetragen. Das ist natürlich ein Aufwand, der sich aber lohnt wenn man mal ein paar Wochen lang nichts getan hat. Aber es gibt ja mehrere Möglichkeiten. Man kann ja auch statt einem Kommentarblock auch eine Exceltabelle oder ein Worddokument nehmen, und dort alles vernünftig reinschreiben.
Zum include:
Aktuell habe ich ein Skript welches ich am aufbauen bin. Es dient für statische Berechnungen. Ich habe sämtliche Statischen Profilwerte in eine seperate Datei geschrieben. Diese habe ich einfach mal data.au3 genannt. Die data liegt bei mir im selben Verzeichnis wie die main-Datei. Es gibt desweiteren Bilder / Skizzen die ich einbinden muss, damit man weiß welche Maße man wo eingeben muss. Also so eine Art Hilfe-Skizze. Diese Skizzen die in das Skript eingebunden werden,
lege ich in einem Unterverzeichnis pic ab. --> \Entwicklung\Testprojekt\2018-03-05\pic\.
Ich bin am überlegen, ob ich die ganzen Berechnungen auch in eine andere Datei schreibe, und später einbinde. Aber das ist noch Zukunftsmusik.
Zur Sicherung:
Mein Verzeichnis ist folgendermaßen aufgebaut (Beispielhaft für das Programm der statischen Berechnung):
\Entwicklung\Testprojekt\2018-03-05\
\Entwicklung\Testprojekt\2018-03-05\pic\
\Entwicklung\Testprojekt\2018-03-05\main.au3
\Entwicklung\Testprojekt\2018-03-05\data.au3
Wenn ich morgen dran weiterarbeite gibt es dann den Ordner: \Entwicklung\Testprojekt\2018-03-06\
Das heißt, ich habe im Laufe der Zeit eine ganze Reihe von Projektordnern, sortiert nach Datum. Sollte irgendwann mal was sein, kann ich immer auf die alten Daten zurückgreifen.
Und diesen Projektordner sichere ich zusätzlich noch mal auf meiner Externen Festplatte und in der Dropbox. Dafür habe ich mir ein kleines Script geschrieben, welches mir immer das aktuelle Verzeichnis zippt, mit aktuellem Datum formatiert (2018-03-05) und auf meine externe Festplatte und in die Dropbox kopiert, und die alte Datei vorher löscht. Macht ja Sinn, da ich in den Ordnern ja immer alle alten Stände habe.
Ich hoffe ich konnte dir ein bisschen helfen / oder für Anregung sorgen

Mit freundlichen Grüßen
Mikki
-
Hallo BugFix,
okay jetzt habe ich es verstanden

Danke sehr.
LG Mikki
-
Guten Morgen zusammen,
wie im Titel schon erwähnt geht es um 3D-Array. Wie kann ich mir ein 3D-Array vorstellen? Im praktischen gesehen.
2D ist klar: $aArray[5][5] -> 5 Zeilen und 5 Spalten. Soweit so gut. Kann man ja mit einer Excel-Tabelle vergleichen.
Wie ist das bei einem 3D-Array? $aArray[5][5][5] -> 5 Schubladen, 5 Zeilen und 5 Spalten? Wobei die 5 Schubladen die dritte Dimension, also den z-Wert entspricht. 5 Zeilen den y-Wert und 5 Spalten den x-Wert.
Könnt Ihr mir da helfen?
Danke.

LG Mikki
-
Hallo zusammen,
also habe das Problem gelöst.
Zuerst hatte ich ja gedacht dass es daran liegt wie Oscar es beschrieben hat. Fehlanzeige.
Ich habe sämtliche Labels als Array erzeugt. Nachdem alle Labels erzeugt worden, wenn ich das Fenster geöffnet habe, habe ich folgende Funktion mit "Call" aufgerufen (selbst geschrieben):
CodeFunc Set_Window_Label_UX_Look() For $j = 0 To UBound($aLabel) - 1 GUICtrlSetFont($aLabel[$j], 10, Default, Default, "Segoe UI Semibold", 5) GUICtrlSetColor($aLabel[$j], 0xFFFFFF) Next EndFunc ;==>Set_Window_Label_UX_LookDiese Funktion habe ich, wie geschrieben, am Ende aufgerufen, sobald alle Label erstellt waren.
Jetzt habe ich einfach mal rumprobiert und folgendes festgestellt:
CodeFor $j = 0 To 14 GUICtrlSetFont($aLabel[$j], 10, Default, Default, "Segoe UI Semibold", 5) GUICtrlSetColor($aLabel[$j], 0xFFFFFF) NextWenn ich die For-Schleife wie oben dargestellt ändere, und statt den Funktionsaufruf mit Call, die Schleife direkt ans Ende packe, funktioniert es.

Also hat sich mein Problem praktisch von selbst gelöst.
Trotzdem Danke an euch zwei

LG Mikki