Ich hatte eigentlich gehofft das da etwas mit StringFormat zu machen ist.
Gruß Ingo
Ich hatte eigentlich gehofft das da etwas mit StringFormat zu machen ist.
Gruß Ingo
Habe es bis jetzt so gelöst:
[autoit]Select
Case ($Text1 = "") And ($Text2 = "")
$TXT = ""
Case ($Text1 <> "") And ($Text2 = "")
$TXT = $Text1
Case ($Text1 = "") And ($Text2 <> "")
$TXT = $Text2
Case Else
$TXT = $Text1 & " -- " & $Text2
EndSelect
Hallo,
ich habe zwei Zeichenketten $Text1 und $Text2 die zusammen getrennt durch " -- " ausgegeben werden sollen. Der Trenner soll aber nur drin sein wenn beide Zeichenketten einen Text enthalten.
Ich vermute das ich dies mit StringFormat machen könnte habe aber leider keine Ahnung wie. ![]()
Gruß Ingo
Hallo,
hier meine Lösung zu dem Problem. ![]()
Gruß Ingo
Func INUDF_ConnectedViaDirectAccess()
#cs ================================================================================
Beschreibung:
Prüft ob ein DirectAccess Verbindung aufgebaut ist.
Übergabewerte:
keine
Rückgabewert:
DirectAccess Verbindung besteht => "yes"
keine DirectAccess Verbindung => "no"
#ce ================================================================================
Local $ProzessesID
Local $line
$ProzessesID = Run(@ComSpec & " /c netsh interface teredo show state", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
$line = $line & StdoutRead($ProzessesID)
If @error Then ExitLoop ; wenn ein Fehler beim Lesen aufgetreten ist verlassen
Sleep (10)
Wend
If StringInStr ($line, "qualified") = 0 Then
Return "no"
Else
Return "yes"
EndIf
EndFunc
Hallo Alina,
ich kann dir nur voll zustimmen. In unserem Bereich lernt man nie aus, das ist ja auch das schöne an unserem Beruf.
Gruß Ingo
Hallo zusammen,
ich wusste schon, dass ich nicht viel Ahnung von Programmierung habe. Aber das es so schlimm ist war mir dann doch nicht bewusst. Ich hoffe nur das alle anderen AutoIT Nutzer besser sind als ich und solche "Selbstverständlichkeiten" immer genau wissen und auch umsetzen können. Eigentlich hatte ich AutoIT als eine Programmiersprache für genau solche Gelegenheitsprogrammierer wie ich das bin verstanden und wollte vermeiden, dass andere genau den gleichen Fehler machen.
Aber auf jeden Fall vielen Dank an alle, ich habe etwas dazu gelernt und weiß jetzt sicher wie die Funktion StringInStr arbeitet. ![]()
Bitte den Beitrag nicht falsch verstehen, ich weiß welche hervorragende Arbeit hier im Forum und bei der Programmierung von AutoIT geleistet wird und bin auch immer sehr dankbar wenn ich hier Anregungen für meine Projekte bekomme! ![]()
Gruß Ingo
Hallo,
das ist aber wirklich sehr kompakt. Es ist schon beeindruckend was alles so möglich ist mit AutoIT.
Gruß Ingo
Hallo Andy,
vielen Dank für deinen Vorschlag. Die Lösung ist ja supi, danke dafür!!
Gruß Ingo
Hallo zusammen,
Ok da habe ich wohl wirklich die Beschreibung nicht richtig verstanden. Vielen Dank an Andy für seine umfangreichen Ausführungen! Habe übrigens den Titel mal gleich geändert, ist ja keine Fehler in der Beschreibung sondern der Fehler sitzt 80cm vor dem Bildschirm. ![]()
Allerdings könnte ich mir vorstellen, dass ich nicht der einzige bin dem es so geht. Um das zu vermeiden könnte eine Anpassung der Hilfe nach meiner Meinung durchaus hilfreich sein. Hier meine Vorschläge:
ZitatRückgabewert
Erfolg: Gibt die Position des Unterstrings unabhängig von der Suchrichtung immer von links zurück.
Zitatoccurrence [optional] Das wievielte Auftreten des Unterstrings soll gefunden werden. Ist der Wert negativ, wird von rechts ausgehend gesucht, das zurückgegebene Ergebnis ist aber trotzdem von links aus gesehen. Der Standardwert ist 1 (erstes Auftreten von links ausgehend).
Soweit meine Vorschläge für eine Optimierung der Hilfe in diesem Bereich. Die AutoIT Version ist übrigens die 3.3.12.0.
Gruß Ingo
Hallo,
in der Beschreibung zur StringInStr steht folgendes:
ZitatStringInStr ( "string", "substring" [, casesense [, occurrence [, start [, count]]]] )
....
occurrence >>> [optional] Das wievielte Auftreten des Unterstrings soll gefunden werden. Ist der Wert negativ, wird von rechts ausgehend gesucht. Der Standardwert ist 1 (erstes Auftreten von links ausgehend).
Die Aussage "Ist der Wert negativ, wird von rechts ausgehend gesucht." stimmt nicht, es wird immer von links gesucht! ![]()
Eine Lösung wenn trotzdem von rechts gesucht werden soll ist folgende:
$iPosTrennzeichen = StringInStr(StringReverse($sText), " ")
Gruß Ingo
Hallo,
ich habe mal etwas zusammen gebaut. Ist zwar noch nicht wirklich optimal aber ein Anfang. Eventuell werde ich noch etwas erweitern, so dass er auch andere Sonderzeichen als Trennstelle akzeptiert. Im Moment trennt er einfach im Word wenn er kein Leerzeichen findet.
Gruß Ingo
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $TEMP
Global $sLangerText
$sLangerText = "Ein sehr langer Text mit vielen Zeichen und vielen Worten der nicht so richtig passen will! Aber der soll hier rein und am besten auf die zweite Zeile!"
[/autoit] [autoit][/autoit] [autoit]$TEMP = LineBreak($sLangerText, 30, 40)
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($TEMP)
[/autoit] [autoit][/autoit] [autoit]Func LineBreak($sText, $iLengthMin, $iLengthMax)
Local $aReturn[1]
Local $sZwischenMinUndMax
Local $sTeilString
Local $iPosTrennzeichen
Local $iDifferenzLengthMinMax = $iLengthMax - $iLengthMin
;wenn der Text kürzer ist als die max. Länge zurück springen
If StringLen ( $sText) <= $iLengthMax Then
$aReturn[0] = 1
_ArrayAdd($aReturn, $sTeilString)
Return $aReturn
EndIf
While 1
$sZwischenMinUndMax = StringMid($sText, $iLengthMin, $iDifferenzLengthMinMax) ;den möglichen Bereich extrahieren
$iPosTrennzeichen = StringInStr(StringReverse($sZwischenMinUndMax), " ") ;in möglichen Bereich nach einem Trennzeichen suchen
$sTeilString = StringLeft($sText, $iLengthMax - $iPosTrennzeichen) ;den ermitteltet Text extrahieren
_ArrayAdd($aReturn, StringStripWS($sTeilString, 3)) ;und in einem Array ablegen
$aReturn[0] = $aReturn[0] + 1
$sText = StringTrimLeft($sText, $iLengthMax - $iPosTrennzeichen) ;jetzt den verarbeiteten Bereich aus dem Ausgangstext löschen
;wenn nur noch der letzten Teil übrig den noch einfügen und zurück
If StringLen($sText) <= $iLengthMax Then
_ArrayAdd($aReturn, StringStripWS($sText, 3))
$aReturn[0] = $aReturn[0] + 1
Return $aReturn
EndIf
WEnd
EndFunc
Hallo Alina,
gute Idee werte ich mal machen.
Gruß Ingo
Hallo Alina,
vielen Dank für deine schnelle Antwort. Ich glaube die Aufteilung am Trennzeichen werde ich wohl aufgreifen und mit StringSplit($text, " ") den Text in eingelne Worte zerlegen und danach neu zusammen setzen.
Gruß Ingo
Hallo,
ich habe ein Problem mit dem Aufbau einer Tabelle und der Aufteilung eines Textest in zwei Zeilen. Ich würde gern den Inhalt von $aResult[0][2] auf zwei Zeilen aufteilen wollen. So das sich das folgende Bild ergeben würde:
| 223-223-9993-9980-229 | Ein sehr langer Text mit vielen Zeichen und vielen Worten der nicht so richtig passen will! .....Hier noch ein weiterer Text der auch etwas länger sein kann Aber soll hier rein am besten auf die zweite Zeile! |
Hat jemand eine Idee wie ich das am einfachsten realisieren könnte.
Gruß Ingo
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
Local $aResult[1][3]
Local $sGUIEditInhalt
Local $iLen
Local $iDescriptionLen
Local $iAbstand = 2
$GUI_Tabelle = GUICreate("Tabelle",1122,655,-1,-1,-1,-1)
$GUICtrlButtonExit = GUICtrlCreateButton("Exit",1001,574,100,30,-1,-1)
$GUIEdit = GUICtrlCreateEdit("",20,10,1081,530,-1,-1)
GUICtrlSetFont(-1,5,400,0,"Courier")
GUISetState(@SW_SHOW,$GUI_Tabelle)
$aResult[0][0] = "Hier noch ein weiterer Text der auch etwas länger sein kann"
$aResult[0][1] = "223-223-9993-9980-229"
$aResult[0][2] = "Ein sehr langer Text mit vielen Zeichen und vielen Worten der nicht so richtig passen will! Aber soll hier rein am besten auf die zweite Zeile!"
For $i = 0 To UBound($aResult) - 1
If StringLen($aResult[$i][1]) > $iLen Then $iLen = StringLen($aResult[$i][1]) ;nax Länge IP ermitteln
If StringLen($aResult[$i][2]) > $iDescriptionLen Then $iDescriptionLen = StringLen($aResult[$i][2]) ;max. Länge Beschreibung ermitteln
Next
For $i = 0 To UBound($aResult) - 1
$sGUIEditInhalt = $sGUIEditInhalt & StringFormat("%-" & $iLen + $iAbstand & "s", $aResult[$i][1]) & _
StringFormat("%-" & $iDescriptionLen + $iAbstand & "s", $aResult[$i][2]) & _
$aResult[$i][0] & @CRLF
Next
GUICtrlSetData($GUIEdit, $sGUIEditInhalt, 1)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUICtrlButtonExit
Exit
EndSwitch
WEnd
Hallo,
Ich habe noch folgendes dazu gefunden, eventuell hilft das ja weiter.
Gruß Ingo
Überprüfen der Bereitstellung
Sobald die HTTPS-Verbindung zum Netzwerkadressenserver (Infrastruktur-Server) erfolgreich her- gestellt wurde, deaktiviert der DirectAccess-Client die DirectAccess-Clientkonfiguration und ver- wendet eine direkte Verbindung zum Unternehmensnetzwerk.
Verbinden Sie einen Clientcomputer mit Ihrem Unternehmensnetzwerk, und melden Sie sich mit ei- nem Domänenbenutzernamen an. Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten. Ge- ben Sie im Eingabeaufforderungsfenster
ipconfig /all
ein. Im Bereich Tunneladapter iphttpsinterface sehen Sie, ob die Verbindung intern oder über Di- rectAccess erfolgt.
Geben Sie in der PowerShell
Get-DAConnectionStatus
ein. Der Status sollte als ConnectedRemotely angegeben werden. In diesem Fall sind Sie mit Direc- tAccess verbunden. Sie sehen das auch, wenn Sie im Desktop auf das Netzwerksymbol klicken. Auch hier sehen Sie den Status der Verbindung. Für Arbeitsbereichverbindung muss der Status Verbunden angegeben sein. Sie können während der Einrichtung aber auch einen eigenen Namen angeben.
Geben Sie in der PowerShell
Get-NetIPAddress
ein, um die IPv6-Konfiguration zu prüfen. Kontrollieren Sie, ob der Tunneladapter iphttpsinterface aktiv ist und eine gültige IP-HTTPS-Adresse hat. Ihr Client verwendet IP-HTTPS für das Tunneling von IPv6-Datenverkehr zum DirectAccess-Server über das Internet.
Hallo,
Ja an WMI hatte ich auch schon gedacht. Ich habe aber nicht wirklich etwas gefunden was ich verwende könnte. Hast du eine Idee wo ich da etwas finden könnte.
Gruß Ingo
Hallo,
kennt jemand eine Möglichkeit wie ich auf einem Windows 7 System über AutoIT feststellen kann ob das System grade eine DirectAccess Verbindung verwendet?
Gruß Ingo
Hallo,
ich habe noch mal weiter getestet und leider noch einen erlaubten Sonderfall gefunden bei denen die Pattern noch nicht funktionieren:
10.11.70.1/255.255.255.255 = nur diese einen IP Adresse
Wie muss ich dazu die Pattern anpassen?
Gruß Ingo
Hallo AspirinJunkie,
klasse erklärt!!! Mit den Informationen kann ich das umsetzen.
Ich kann mich nur nochmals sehr herzlich bei dir für deine Hilfe bedanken!!! ![]()
Gruß Ingo
Hallo,
na das nenne ich mal eine Antwort super vielen Dank dafür. Dazu hätte ich bestimmt Tage gebraucht. ![]()
Nur eine Frage habe ich jetzt noch:
Du verwendest bei StringRegExp das Flag 4. Dadurch wird scheinbar etwas sehr "spezielles" in dem Array zurück gegeben. Denn _ArrayDisplay($a_Result) zeigt mir nur ein leeres Array.
Wie bekomme ich das so umgeformt, dass ich normalen Text dort drin habe, den ich weiter verarbeiten kann?
Nochmals vielen Dank für deine Hilfe!!!!
Gruß Ingo