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. devildevil3

Beiträge von devildevil3

  • Überprüfen ob String gültig ist

    • devildevil3
    • 12. März 2015 um 14:26

    @AsperinJunkie, danke für die freundliche Erklärung :)
    @BugFix, das ist eine schlaue Idee, jetzt wo man es sieht, schaut es sehr "einfach" aus :) Super!

  • Überprüfen ob String gültig ist

    • devildevil3
    • 12. März 2015 um 10:18

    @AsperinJunkie, das wäre eine enorme Verkürzung der Aufgabe. Aber wie vermeidest du das zb diese Zeile

    "113 8IT P HSW LED- Hauptscheinwerfer" falsch ausgewertet wird.

    113 ist die laufende Nummer, 8IT der PR Code, P Herkunft und HSW die Familie.

    Aber HSW wäre doch auch gültig, da Großbuchstaben und 3 von der Zahl?


    Ich werde versuchen das TUT mal zu verstehen, schaut auf ersten Blick wirklich gut erklärt aus.

  • Überprüfen ob String gültig ist

    • devildevil3
    • 12. März 2015 um 09:57

    Vielen lieben Dank erstmal für die Hilfe.

    In der Zeile sehe ich ein Problem
    If StringIsInt($string[$i]) Or StringIsUpper($string[$i]) Then

    Da wird Überprüft ob der String Großbuchstaben, oder Zahlen enthält. Ein PR Code hat immer 3 Werte zb "0A0" . Bei Der Abfrage würden nur Einträge "freigegeben" die AAA oder 111 sind, beider vermischt, wäre ungültig.

    Das ist aber mein Fehler. Ich hole mal etwas weiter aus. Und Zwar hat man die Möglichkeit über Elsa-online für sein PKW die PR Codes zu kopieren.

    Diese PR Codes möchte ich sauber in eine txt Datei schreiben lassen, für jeden Code eine neue Zeile.


    Die Ausgangsdatei habe ich mal angeheftet.

    Die ersten Ziffern ist die laufende Nummer, und der 2te Block der eigentliche PR Code

    Daher mein Script (Ist echt nicht so gut, wahrscheinlich extrem verkompliziert)

    [autoit]

    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <Array.au3>
    ; Create a constant variable in Local scope of the message to display in FileOpenDialog.
    Local Const $sMessage = "Select a single file of any type."

    [/autoit][autoit][/autoit][autoit]

    ; Display an open dialog to select a file.
    Local $sFileOpenDialog = FileOpenDialog($sMessage, @WindowsDir & "\", "TXT (*.txt*)", $FD_FILEMUSTEXIST)

    [/autoit][autoit][/autoit][autoit]

    Functionsaufruf()

    [/autoit][autoit][/autoit][autoit]

    Func Functionsaufruf()
    ; Read the current script file into an array using the filepath.
    Local $aArray = FileReadToArray($sFileOpenDialog)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "", "There was an error reading the file. @error: " & @error) ; An error occurred reading the current script file.

    [/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($aArray) - 1 ; Loop through the array.
    $trim=$aArray[$i]
    $gesamt=StringLen($trim)
    $abfrage=StringTrimRight($trim,$gesamt-3)

    [/autoit][autoit][/autoit][autoit]

    if $abfrage <10 Then $trimleft=StringTrimLeft($trim,2)
    if $abfrage < 100 and $abfrage >10 Then $trimleft=StringTrimLeft($trim,3)
    if $abfrage > 100 then $trimleft=StringTrimLeft($trim,4)
    $gesamt=StringLen($trimleft)
    $trimende=StringTrimRight($trimleft,$gesamt-3)
    if StringRegExp($trimende, '(^[A-Z]*\d*|\d*[A-Z]*)') then FileWriteLine("PR-sauber.txt",$trimende&@CRLF)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Next
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit]

    Mit StringRegExp funktioniert es nur bedingt.

    Code
    pge
    rba
    P F
    ßen
    nen
    -Nu
    D.
    .
    . H
    0A2
    0AE
    0B1
    0BN
    Alles anzeigen

    Es werden dennoch Kleinbuchstaben mit ausgegeben, daher sind die ersten Zeilen kein PR Code.

    Sollte mit den RegExp mal versuchen irgendwie mich da einzuarbeiten, wenn man es kann, ist ist sehr "mächtig"

    Edit:
    Danke @ AspirinJunkie, damit kommt das gewünschte heraus!

  • Überprüfen ob String gültig ist

    • devildevil3
    • 12. März 2015 um 00:18

    Hi, habe seit Jahren nichts mehr gemacht, bin total eingerostet.

    Ich sitze vor einen Problem, ich möchte überprüfen ob ein String für meine Zwecke gültig ist.

    Ein für mich gültiger String schaut zb so aus "AU1" =>Nur großbuchstaben und ggf Ziffern vorhanden.

    Dies wird wohl nur über StringRegExp funktionieren? Wenn ja, da steige ich nicht durch, ist mir seit Jahren ein Buch mit 7 Siegeln :(

    Weil vorhandene Funktionen nicht gehen, zb StringIsUpper (Weil halt ggf eine Ziffer dabei steht)

    Hat da jemand eine Idee?

    Vielen Dank

  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 2. August 2012 um 16:22

    Ich bitte um verzeiung :(

    Im Anhang die Ini

    Hier mal das Script, was ich angepasst habe (Ich verwende weiterhin GetWinText)


    Vielen Dank für eure Hilfe :)

    Funktioniert, habe die Variante ohne GetWinText gewechselt :)

    Dateien

    Datei.ini 1,52 kB – 305 Downloads
  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 2. August 2012 um 15:41

    Vielen Dank, habe das script direkt mal angepasst, da ih die Ini Datei geändert habe, es existirt nur noch [Laserdruck] keine Unterscheidung mehr in der Ini zwischen A4 und A3.

    Funktioniert super.

    Habe dierekt ein Frage. Ich möchte verschiedene Reiter (Tabs) anlegen, der Letzte soll "Berechen" heißen.

    Dort soll aus alles gewählten Punkten in verschiedenen Tabs der Endpreis ermittelt werden

    Also praktisch habe ich ja schon den Tab Laserdruck und Scannen. Ich treffe in beiden Tabs die gewüschte auswahl und möchte in einen anderen Tab den Endpreis haben.

    Dies wird ohne Array nicht gehen. Da ja die Combobox nicht aus anderen Tabs ausgelesen werden kann, oder Irre ich mich da?

  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 1. August 2012 um 22:23

    ok, habe es angepasst, allerdings wird kein wert mehr ermittelt. Aber das schaue ich mir morgen mal an :)
    Also der Wert, den ich über GUICtrlCreateCombo auswähle.

  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 1. August 2012 um 22:11

    das wäre super, nur muss ich da schauen wie ich die Werte aus der ini da rein bekomme. In den jetzigen habe ich den CodeBaustein einfach aus einen alten Script übernommen :whistling:

  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 1. August 2012 um 21:59

    Vielen Dank ersteinmal :)
    Sagen wir es so, ich habe keine Ahnung was der Unterschied ist. Ich weiß das ich den Bfehl den ich verwendet habe, schon mal in einen Programm von mir hatte. Habe mich jetzt nicht näher damit beschäftigt ob es alternativen gibt.

    Aber was ist der Vorteil von GUICtrlCreateCombo? gibt es da Vor/Nachteile gegenüber meinen Weg?

    Edit durch die paar Zeilen

    [autoit]


    Case $tab ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ; Show/Hide the combo as required
    Switch GUICtrlRead($tab)
    Case 0
    WinSetState($A4, "", @SW_SHOW)
    WinSetState($A3, "", @SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    Case Else
    WinSetState($A4, "", @SW_HIDE)
    WinSetState($A3, "", @SW_HIDE)

    [/autoit][autoit][/autoit][autoit]

    EndSwitch

    [/autoit]

    ist das Script sehr, sehr träge geworden, nicht mehr verwendbar. aber warum ?

  • Problem mit GUICtrlCreateTab und _GUICtrlComboBox_Create

    • devildevil3
    • 1. August 2012 um 20:30

    Hallo, da Bilder mehr sagen als tausend Wort habe ich mal 2 gemacht.

    Ich wollte eine Gui mit mehreren Tabs, nur die Combo Box verschwindet nicht, und ist in jeden Tab sichtbar?
    Wahrscheinlich ist es ganz einfach, nur komme ich nicht darauf :(

    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Description=Produkt Rechner für Nicole
    #AutoIt3Wrapper_Res_Fileversion=1
    #AutoIt3Wrapper_Run_Obfuscator=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit][autoit][/autoit][autoit]

    $ini = @ScriptDir&'\Texte\Datei.ini'

    [/autoit][autoit][/autoit][autoit]

    #include<GuiComboBox.au3>
    #include<GUIConstantsEx.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; Puffer für den Text
    Global $sTextA4
    Global $sTextA3

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;Gui
    $Gui=GUICreate ('Produkt-Rechner', 900,530); Wagerechte; Höhe
    GUISetFont(9, 300)
    GUISetBkColor(0x3300B2);663399 )

    [/autoit][autoit][/autoit][autoit]

    $tab=GUICtrlCreateTab (5,10, 880,510)
    $tab0=GUICtrlCreateTabitem ("A3 und A4")
    GUICtrlcreatelabel ('Einstellungen für A4' ,10,40)
    $A4 = _GUICtrlComboBox_Create ($GUI,'', 10, 70, 250, 296)
    $ini_sektions = IniReadSection($ini, "Laserdruck")
    For $i = 1 To $ini_sektions[0][0]
    _GUICtrlComboBox_AddString($A4, $ini_sektions[$i][0])
    Next
    GUICtrlcreatelabel ('Einstellungen für A3',10,140)
    $A3 = _GUICtrlComboBox_Create ($GUI,'', 10, 160, 250, 296)
    $ini_sektions = IniReadSection($ini, "Laserdruck")
    For $i = 1 To UBound($ini_sektions) - 1
    _GUICtrlComboBox_AddString($A3, $ini_sektions[$i][0])

    [/autoit][autoit][/autoit][autoit]

    Next
    GUICtrlcreatelabel ('Hier bitte gewünschte Anzahl für A4 eintragen' ,10,90)
    GUICtrlcreatelabel ('Hier bitte gewünschte Anzahl für A3 eintragen' ,10,180)
    $Anzahl = GUICtrlCreateEdit ("1", 90,110,50,20,0)
    $Anzahl2 = GUICtrlCreateEdit ("1", 90,200,50,20,0)
    $berechnena4 = GUICtrlCreateButton ('Berechnen für A4', 300,70)
    $berechnena3 = GUICtrlCreateButton ('Berechnen für A3', 300,160)
    $berechnenA4undA3zusammen=GUICtrlCreateButton ('Berechne Gesamtsumme von A4 und A3', 450,85)
    $endbutton = GUICtrlCreateButton ('Schließen', 800,470)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $tab2=GUICtrlCreateTabitem ( "Scannen")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $tab99=GUICtrlCreateTabItem("Über")
    GUICtrlCreateLabel("Hier steht mal eine Erklärung",80,130,420,120)
    GUICtrlCreateTabitem (""); end tabitem definition

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    ;Gui ENDE

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $zahl1 = GUICtrlRead($Anzahl)
    $zahl2 = GUICtrlRead($Anzahl2)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Select

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $msg = $endbutton Or $msg = $GUI_EVENT_CLOSE
    exit

    [/autoit][autoit][/autoit][autoit]

    case $msg = $berechnena4
    GetWindowText ($A4, $sTextA4, 260)
    $a4wert=IniRead($ini,'Laserdruck',$sTextA4,"Wählen Sie Bitte eine Position")
    $a4wert=$a4wert*1
    $Ergebnisa4 = $zahl1 * $a4wert * 1.19
    $ErgebnismitMWSTa4=Round($Ergebnisa4,3)

    [/autoit][autoit][/autoit][autoit]

    $AusgabeA4=$zahl1 & "*" & $a4wert & "= " & $ErgebnismitMWSTa4&' €' & 'incl. Mwst'
    if $a4wert='Wählen Sie Bitte eine Position' then $AusgabeA4='Wählen Sie Bitte eine Position'

    [/autoit][autoit][/autoit][autoit]

    MsgBox (64,"Preis des Auftrages A4",$AusgabeA4 ) ;Ausgabe der Rechenaufgabe

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    case $msg = $berechnena3
    GetWindowText ($A3, $sTextA3, 260)
    $a3wert=IniRead($ini,'Laserdruck',$sTextA3,"Wählen Sie Bitte eine Position")
    $a3wert= $a3wert*2
    $Ergebnisa3 = $zahl2 * $a3wert*1.19
    $ErgebnismitMWSTa3=Round($Ergebnisa3,3)

    [/autoit][autoit][/autoit][autoit]

    $AusgabeA3=$zahl2 & "*" & $a3wert & "= " & $ErgebnismitMWSTa3 &' € '& 'incl. Mwst'
    if $a3wert='Wählen Sie Bitte eine Position' then $AusgabeA3='Wählen Sie Bitte eine Position'
    MsgBox (64,"Preis des Auftrages A3",$AusgabeA3 )
    ;Ausgabe der Rechenaufgabe

    [/autoit][autoit][/autoit][autoit]

    case $msg = $berechnenA4undA3zusammen

    [/autoit][autoit][/autoit][autoit]

    GetWindowText ($A4, $sTextA4, 260)
    GetWindowText ($A3, $sTextA3, 260)

    [/autoit][autoit][/autoit][autoit]

    $a4wert=IniRead($ini,'Laserdruck',$sTextA4,"Wählen Sie Bitte eine Position")
    $a3wert=IniRead($ini,'Laserdruck',$sTextA3,"Wählen Sie Bitte eine Position")

    [/autoit][autoit][/autoit][autoit]

    $Ergebnisa4unda3zusammen = (($zahl1 * $a4wert)+($zahl2*$a3wert*2))*1.19
    $AusgabeA4unda3zusammenmitmwst=Round($Ergebnisa4unda3zusammen,3)

    [/autoit][autoit][/autoit][autoit]

    $AusgabeA4unda3zusammenmitmwst=$AusgabeA4unda3zusammenmitmwst&' €' & ' incl. Mwst'
    if $Ergebnisa4unda3zusammen=0 then $AusgabeA4unda3zusammenmitmwst='Bitte Positionen wählen'
    MsgBox (64,"Preis des Auftrages A4 und A3",$AusgabeA4unda3zusammenmitmwst & 'incl. Mwst') ;Ausgabe der Rechenaufgabe

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndSelect

    [/autoit][autoit][/autoit][autoit]

    wend

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func GetWindowText ($hWnd, ByRef $sString, $nMaxCount)

    [/autoit][autoit][/autoit][autoit]

    Local $type = 'wstr'
    If (IsPtr ($sString)) Then _
    $type = 'ptr'

    [/autoit][autoit][/autoit][autoit]

    Local $aRes = DllCall ("user32.dll", 'int', 'GetWindowTextW', _
    'HWND', $hWnd, _
    $type , $sString, _
    'int' , $nMaxCount)

    [/autoit][autoit][/autoit][autoit]

    If @error Then _
    Return @error

    [/autoit][autoit][/autoit][autoit]

    If (not IsPtr ($sString)) Then _
    $sString = $aRes[2]
    Return $aRes[0]

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]

    Ich weiß es ist nicht schön, aber ich komme eigentlich ganz gut mit den Namen der Variablen zurecht

    Dateien

    capture_002_01082012_202437.jpg 51,85 kB – 327 Downloads
  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 31. Juli 2012 um 16:21

    Vielen Dank, aber es mit Greenhorn´s Methode gemacht. Funktioniert so wie es soll.

    Vielen Dank nochmals

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 30. Juli 2012 um 23:04

    Habe sie mal angehangen.

    Erstellt mit Notepad ++

    Dateien

    Datei.ini 277 Byte – 334 Downloads
  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 30. Juli 2012 um 15:57

    keineswegs, das mysteriöse Zeichen bleibt bei mir nachwievor oO

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 29. Juli 2012 um 19:46

    Da hast du recht, ich habe überersehen das Notpad++ prinzipiell mit 1 anfängt.
    Also Cousor steht ganz links, und es zählt schon ein Zeichen.

    Habe es nachgezählt. sind wirklich nur 28 :)

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 22:55

    jep AutoIt und Scite :)

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 22:41

    danke erstmal für deine Hilfe, bei mir endet die Nacht auch gegen 5 :)

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 22:25

    Bei der Zeile wo der Fehler auftritt ist der String 29 Zeichen Lang, im der Ini bis zu den = zeichen auch 29 Zeichen, dennoch wird in der msgbox noch ein 30igtes Zeichen bei mir angezeigt ?

  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 22:02

    ja,vorhin aktualisiert

    Code
    Autoit=Latest version: v3.3.8.1
    
    
    SciTE
    Version 3.2.0
        Jun  9 2012 00:35:28
  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 21:37

    das gepostete ist das komplette Script, keine Zeile Unterscheidet sich, komische Sache ?(

    Habe jetzt alles aktualisiert, fehler tritt wesentlich seltener Auf, aber kommt immer noch mich chinesischen Zeichen ?

    und das ist die ganze ini Datei

    Code
    [Laserdruck A4]
    Schwarz Weiß=0.25
    Schwar Weiß, mehr als 5=0.22
    Farbig=1.10
    Aufkleber weiß s/w=0.85
    Aufkleber weiß Farbig=1.20
    Aufkleber Transparent s/w=1.50
    Aufkleber Transparent Farbig=2.60
    [Laserdruck A3]
    Schwarz Weiß=0.50
    Schwar Weiß, mehr als 5=0.44
    Farbe=2.20
    Alles anzeigen

    Vielen Dank

    Dateien

    autoit.jpg 80,54 kB – 375 Downloads
  • Problem bei Auslesen von _GUICtrlComboBox_GetEditText

    • devildevil3
    • 26. Juli 2012 um 21:27

    an was liegt es dann aber ?

    Hier ist zb. das "w" zu viel, das Zeichen ändert sich bei mir aber immer.

    Ich glaube ich aktualisiere erst mal die Programme. Sind etwas älter glaube ich :)

    Dateien

    autoit.jpg 71,71 kB – 378 Downloads

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™