Dann mach es so:
[autoit]#include<array.au3>
$string = '<td style="vertical-align: top;"><font size="-1">NAME,VORNAME<br>'
$ret = StringRegExp($string, '(?<="-1"\>).*(?=\<br\>)', 1)
_ArrayDisplay($ret)
Dann mach es so:
[autoit]#include<array.au3>
$string = '<td style="vertical-align: top;"><font size="-1">NAME,VORNAME<br>'
$ret = StringRegExp($string, '(?<="-1"\>).*(?=\<br\>)', 1)
_ArrayDisplay($ret)
_FileSelectFolder()
Das ist kein Problem mit den UDF der GuiComboBoxEx.au3.
Du erstellst eine Imagelist mit den Farben und weist den Einträgen die entsprechenden Images zu.
Schau dir mal die Bsp. dort an.
"Local" in Zeile 19 kannst du löschen, ich hatte es vergessen als ich die Deklarationen an den Anfang verschoben hab ![]()
Um alle Unterordner ab Pfad zu durchsuchen, mußt du dir eine rekursive Filelist erstellen. Nutze mal die SuFu - dazu hab u. a. ich eine UDF erstellt.
Wenn du per Button die GUI_2 aufrufst, kannst du doch als erstes eine Prüffunktion für Inhalte der Inputs durchführen. Nur wenn die OK gibt, zeigst du GUI_2, sonst brichst du ab und bleibst somit auf GUI_1.
Um einen Wert zu switchen, bietet sich BitXOr() an:
[autoit]Local $val = 0
[/autoit][autoit][/autoit][autoit]ConsoleWrite(_switch($val) & @CRLF)
ConsoleWrite(_switch($val) & @CRLF)
ConsoleWrite(_switch($val) & @CRLF)
Func _switch(ByRef $VAR)
$VAR = BitXOR($VAR, 1)
Return $VAR
EndFunc
Stimmt, mit FileSelectFolder() läßt sich nur ein Ordner wählen.
Aber wenn du mehrere möchtest, kannst du den Dialog ja in einer Schleife aufrufen und erst mit Abbruch ohne Auswahl wird diese beendet:
Local $arFolder[100], $i = 0, $path = @MyDocumentsDir
While True
$arFolder[$i] = FileSelectFolder("Ordner auswählen", $path)
If @error Then ExitLoop
$i += 1
WEnd
ReDim $arFolder[$i+1]
Was soll dieses Array NewFile nützen??
#include <file.au3>
#Include <Array.au3>
#include "_Array2DEmptyDel.au3"
Local $folder, $filesinpath, $aFile
While True
$folder = FileSelectFolder("Ordner auswählen","c:\admin_V8\config\project_config\users\")
If @error Then
If MsgBox(262180,"Achtung!","Es wurde kein Ordner gewählt." & @CRLF & "Soll das Programm beendet werden?") = 6 Then Exit
Else
ExitLoop
EndIf
WEnd
$filesinpath = _FileListToArray($folder, "*.ucf", 1)
If @error Then Exit MsgBox(262192,"Achtung!","Der gewählte Ordner enthält keine Dateien!")
;~ _ArrayDisplay($filesinpath)
Local
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To UBound($filesinpath)
If Not _FileReadToArray( $folder & "\" & $filesinpath[$i], $aFile) Then ContinueLoop
For $k = 1 To UBound($aFile) -1
If StringRegExp($aFile[$k], '(MS_)(MDL(APPS)?|DGNAPPS)') Then $aFile[$k] = ''
Next
_Array2DEmptyDel($aFile)
_FileWriteFromArray($folder & "\clean_" & $filesinpath[$i], $aFile, 1)
; hab hier mal einen anderen Dateinamen verwendet um das Original nicht zu überschreiben
Next
User wird angenommen (OK)
Passwort aber nicht (authentification failed)
Also ist das Passwort falsch, oder wird falsch übermittelt.
Ich glaube, du mißverstehst den Sinn des Skript-Forums.
Es geht hier nicht darum kompilierte Dateien zu posten. Hier wird Skriptcode allen zugänglich dargestellt.
Oder gehörst du zu den Menschen, die fremde exe-Files ausführen? :wacko:
Außerdem wäre es ratsam zu erklären, was das Skript den eigentlich vollbringt.
Hi,
es ist schon alles vorbereitet, du mußt die Teile nur zusammenfügen.
Diese Lösung:
[autoit]If StringInStr($aFile[$i],"MS_MDLAPPS") Or StringInStr($aFile[$i],"MS_MDL") Or StringInStr($aFile[$i],"MS_DGNAPPS") Then ContinueLoop
[/autoit]ist nicht zu empfehlen, da sie der gestellten Bedingung nicht entspricht. Es wurde gesagt, dass nur wenn eine Zeile mit den benannten Begriffen beginnt, diese gelöscht werden soll. StringInStr() prüft nur auf Vorkommen irgendwo im String.
Deshalb meine Variante:
If StringRegExp($arFile[$i], '(MS_)(MDL(APPS)?|DGNAPPS)') Then $arFile[$i] = ''
[/autoit]Und?...warum behebst du den Syntaxfehler nicht? Steht doch glasklar lesbar drin, was der Fehler ist:
Unausgeglichene Klammersetzung!
Weil wir noch immer hoffen, dass du mal einen kurzen Blick in die Hilfe wirfst
Dort findest du deine Fragen ausgiebig mit Beispiel erläutert.
Hi,
so gehts in der einzelnen Datei. Du kannst ja alle Dateien vorher in ein Array einlesen und dann hiermit abarbeiten:
#include<array.au3>
#include<file.au3>
;~ Local $arFile, $Path = 'Pfad'
;~ _FileReadToArray($Path, $arFile)
;~ If Not IsArray($arFile) Then Exit MsgBox(0, '', 'Datei konnte nicht gelesen werden.')
; ##### zum Test ######
Local $arFile[9] = [8, _
'MS_MDLAPPS > C:/Programme/MicroStationV8/Workspace/standards/mdlapps/intelnt/', _
'MS_MDL > D:/prj/25808061/prcfg/mdl/', _
'MS_DGNAPPS > sscloud', _
'MS_MDL = C:/Programme/MicroStationV8/Program/MicroStation/FeatureModeling/features/', _
'MS_DGNAPPS > $(SR_ADMIN)user_config/$(_USTN_USERNAME)/sscloud.ma', _
'bjklllm', _
'khglbhötji', _
'MMMGGG']
; ######################
For $i = 1 To UBound($arFile) -1
If StringRegExp($arFile[$i], '(MS_)(MDL(APPS)?|DGNAPPS)') Then
$arFile[$i] = ''
$arFile[0] -= 1
EndIf
Next
_Array2DEmptyDel($arFile)
_ArrayDisplay($arFile)
;~ _FileWriteFromArray('Ausgabedatei', $arFile, 1)
[/autoit] [autoit][/autoit] [autoit];----------------------------------------------------------------------------------------------------------------------
; Function _Array2DEmptyDel(ByRef $avArray [, $Col=0])
;
; Description Delete empty Array elements
; Delete all emty Rows or all empty Columns
; Works also with 1D-Array (only Rows)
;
; Parameter $avArray Given Array
; optional $Col set 1 to delete empty Columns; default is 0 to delete empty Rows
;
; Return Succes 0 ByRef the given Array without empty Elements, resized
; Failure 1 and set @error = 1
;
; Author BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
Func _Array2DEmptyDel(ByRef $avArray, $Col=0)
If ( Not IsArray($avArray) ) Then Return SetError(1,0,1)
Local $i, $k, $notEmpty
Local $UBound2nd = UBound($avArray,2)
If @error = 2 Then
Local $arTMP[1]
For $i = 0 To UBound($avArray)-1
If StringLen($avArray[$i] > 0) Then
If StringLen($arTMP[UBound($arTMP)-1]) = 0 Then
$arTMP[UBound($arTMP)-1] = $avArray[$i]
Else
ReDim $arTMP[UBound($arTMP)+1]
$arTMP[UBound($arTMP)-1] = $avArray[$i]
EndIf
EndIf
Next
Else
If $Col = 0 Then
Local $arTMP[1][$UBound2nd], $val, $len
For $i = 0 To UBound($avArray)-1
$val = ''
For $k = 0 To $UBound2nd-1
$val &= $avArray[$i][$k]
Next
If StringLen($val) > 0 Then
$len = 0
For $k = 0 To UBound($arTMP,2)-1
$len &= StringLen($arTMP[UBound($arTMP)-1][$k])
Next
If $len = 0 Then
For $k = 0 To $UBound2nd-1
$arTMP[UBound($arTMP)-1][$k] = $avArray[$i][$k]
Next
Else
ReDim $arTMP[UBound($arTMP)+1][$UBound2nd]
For $k = 0 To $UBound2nd-1
$arTMP[UBound($arTMP)-1][$k] = $avArray[$i][$k]
Next
EndIf
EndIf
Next
Else
Local $arTMP[UBound($avArray)][1], $val, $len
For $k = 0 To $UBound2nd-1
$val = ''
$notEmpty = 0
For $i = 0 To UBound($avArray)-1
$val &= $avArray[$i][$k]
If StringLen($val) > 0 Then
$notEmpty = 1
ExitLoop
EndIf
Next
If $notEmpty = 1 Then
$len = 0
For $i = 0 To UBound($arTMP)-1
$len &= StringLen($arTMP[$i][UBound($arTMP,2)-1])
Next
If $len = 0 Then
For $i = 0 To UBound($avArray)-1
$arTMP[$i][0] = $avArray[$i][$k]
Next
Else
ReDim $arTMP[UBound($avArray)][UBound($arTMP,2)+1]
For $i = 0 To UBound($avArray)-1
$arTMP[$i][UBound($arTMP,2)-1] = $avArray[$i][$k]
Next
EndIf
EndIf
Next
EndIf
EndIf
$avArray = $arTMP
Return 0
EndFunc ;==>_Array2DEmptyDel
So, nach langer Zeit mal wieder was Neues:
_Array2DMinMax()
- Ermittelt den Min- oder Maxwert in einem Array
- Vergleich in einer oder allen Spalten
- Rückgabe Array mit [Wert,Index]
Werde es bei Gelegenheit in die Sammlung einfügen.
;==================================================================================================
; Function Name: _Array2DMinMax(ByRef $ARRAY [, $MAX=0 [, $iCol=0 [, $sDelim=';']]])
; Description:: gibt den minimalen od. maximalen Wert eines 1D/2D-Array zurück
; Überprüfung einer oder aller Spalten
; Parameter(s): $ARRAY das zu prüfende Array
; $MAX 0 = Minwert (Standard); 1 = Maxwert
; $iCol SpaltenIndex 0 = Standard
; -1 = alle Spalten werden geprüft
; $sDelim Trennzeichen f. Indexwerte, Standard ';'
; mit 'Default' Zeichen von Opt('GUIDataSeparatorChar')
; Return Value(s): Erfolg Array[0] = Max/Min-Wert; Array[1] = Index(Zeile [, Spalte])
; Fehler -1 @error = 1 kein Array übergeben
; @error = 2 $iCol überschreitet UBound,2
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _Array2DMinMax(ByRef $ARRAY, $MAX=0, $iCol=0, $sDelim=';')
If Not IsArray($ARRAY) Then Return SetError(1,0,-1)
Local $Ub2nd = UBound($ARRAY, 2)-1, $arOut[2] = [0]
If $MAX <> 0 Then $MAX = 1
If $sDelim = Default Then $sDelim = Opt('GUIDataSeparatorChar')
If @error Then
For $i = 0 To UBound($ARRAY) -1
If $MAX = 1 Then
If Number($ARRAY[$i]) > $arOut[0] Then
$arOut[0] = Number($ARRAY[$i])
$arOut[1] = $i
EndIf
Else
If $i = 0 Then
$arOut[0] = Number($ARRAY[$i])
$arOut[1] = $i
EndIf
If Number($ARRAY[$i]) < $arOut[0] Then
$arOut[0] = Number($ARRAY[$i])
$arOut[1] = $i
EndIf
EndIf
Next
Else
If $iCol > $Ub2nd Then Return SetError(2,0,-1)
If $iCol < -1 Then $iCol = -1
If $iCol = -1 Then
For $i = 0 To UBound($ARRAY) -1
For $k = 0 To $Ub2nd
If $MAX = 1 Then
If Number($ARRAY[$i][$k]) > $arOut[0] Then
$arOut[0] = Number($ARRAY[$i][$k])
$arOut[1] = $i & $sDelim & $k
EndIf
Else
If $i = 0 Then
$arOut[0] = Number($ARRAY[$i][$k])
$arOut[1] = $i & $sDelim & $k
EndIf
If Number($ARRAY[$i][$k]) < $arOut[0] Then
$arOut[0] = Number($ARRAY[$i][$k])
$arOut[1] = $i & $sDelim & $k
EndIf
EndIf
Next
Next
Else
For $i = 0 To UBound($ARRAY) -1
If $MAX = 1 Then
If Number($ARRAY[$i][$iCol]) > $arOut[0] Then
$arOut[0] = Number($ARRAY[$i][$iCol])
$arOut[1] = $i & $sDelim & $iCol
EndIf
Else
If $i = 0 Then
$arOut[0] = Number($ARRAY[$i][$iCol])
$arOut[1] = $i & $sDelim & $iCol
EndIf
If Number($ARRAY[$i][$iCol]) < $arOut[0] Then
$arOut[0] = Number($ARRAY[$i][$iCol])
$arOut[1] = $i & $sDelim & $iCol
EndIf
EndIf
Next
EndIf
EndIf
Return $arOut
EndFunc ;==>_Array2DMinMax
Ich habe NIE verstanden was UBound macht...
Gar nicht so schwer, sagt eigentlich der Name schon.
UpperBound - Obergrenze
UBound($Array, 0) = Anzahl der Dimensionen
UBound($Array, 2) = Anzahl Elemente in 2.ter Dimension
UBound($Array, n) = Anzahl Elemente in n.ter Dimension
Sag das doch gleich ![]()
$Dimension = UBound($array, 0)
If $Dimension = 1 Then
; 1D- Array
ElseIf $Dimension = 2 Then
; 2D-Array
EndIf
Da ich nicht weiß, woraus du das Array erzeugst, kann ich schlecht sagen warum die Fehlermeldung kommt. Es sieht fast so aus, als ob du auf eine nicht existierende Dimension zugreifen willst.
Freut mich, dass es dir geholfen hat.
Ist aber eher zufällig, dass ich dazu was sagen konnte. Bin auf Dienstreisen häufig in einem Hotel, dass genau diese Probleme hat(te). ![]()
Somit konnte ich mich zwangsfreiwillig damit befassen. ![]()
Möglich ist es - aber welchen Sinn soll das haben? Eine Variable muß einen fixen Namen haben, damit du drauf zugreifen kannst. Nur der Inhalt ist variabel. Wenn du einen dynamischen Variablennamen hast, kannst du nicht mehr draufzugreifen.