_GUICtrlEdit_GetLineCount Problem

  • Hallo AutoIT'ler,

    ich habe folgendes Problem. Ich hab mir für Arbeit ein kleines Tool geschrieben welches unter anderem ein Edit-Feld beinhaltet. In diesem Editfeld werden eigentlich nur Zahlen eingetragen und das Zeile für Zeile. Dadrunter hab ich ein Label gemacht, welches die Anzahl der Zeilen regelmäßig aktualisiert. Verwendet habe ich dafür _GUICtrlEdit_GetLineCount

    Ansich funktioniert das wunderbar... habe ich 5 Zahlen eingetragen zählt der Counter auch auf 5 hoch. So soll es eigentlich sein.

    Da diese Zahlen aber für Reportingzwecke benötigt werden, müssen sie immer(!!) stimmen. Das "System" kann aber durch leere Zeilen umgehen :(

    Als Beispiel:

    123456
    123456
    123456
    123456

    Counter zeigt 4. So weit, so gut.

    123456
    123456

    123456
    123456

    Counter zeigt 5. Nicht gut - denn er zählt die Leerzeile natürlich als Zeile mit - AutotIt ist mit dieser Funktion ja erstmal vollkommen egal ob in der Zeile auch wirklich was drin steht. Es kann also durchaus auch passieren das die Leerzeile am Ende des Editfelds auftaucht wo man es gar nicht mitbekommen würde, es sei denn der Cursor blinkt dort.

    [autoit]


    $zeilen_addcust = _GUICtrlEdit_GetLineCount($AddCust)
    $zeilen_supplies = _GUICtrlEdit_GetLineCount($Supplies)

    If $read_addcust <> GUICtrlRead($AddCust) Then
    GUICtrlSetData($label1, $zeilen_addcust)
    If $zeilen_addcust < 10 Then
    GUICtrlSetColor($label1, 0xFF0000)
    ElseIf $zeilen_addcust > 10 AND $zeilen_addcust < 20 Then
    GUICtrlSetColor($label1, 0xFFAA00)
    ElseIf $zeilen_addcust > 20 Then
    GUICtrlSetColor($label1, 0x33CC33)
    If _IsPressed("0D") Then
    FileDelete(@TempDir & "\addcusts.txt")
    FileDelete(@TempDir & "\supplies.txt")
    FileWrite(@TempDir & "\addcusts.txt", $read_addcust)
    FileWrite(@TempDir & "\supplies.txt", $read_supplies)
    EndIf
    EndIf
    EndIf

    [/autoit]

    So sieht der Codeschnipsel aus - da muss es doch auch eine Lösung für geben oder?
    Meine Tools die ich für Arbeit schreibe erweitern sich immer erst nach und nach und werden meist aus vielen Codeschnipseln irgendwie zusammengesetzt^^ habt daher etwas nachsehen.

    LG
    Mirko

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

    Einmal editiert, zuletzt von mirko2002 (12. Juli 2012 um 10:57) aus folgendem Grund: Problem solved

  • Probier doch mal diese Funktion aus:

    Spoiler anzeigen
    [autoit]

    Func _StringCountFilledLines ($s_String)
    Local $a_String = StringSplit ($s_String, @CRLF, 1)
    Local $i_Ret = 0
    For $i = 1 To $a_String[0]
    If $a_String[$i] <> '' Then $i_Ret += 1
    Next
    Return $i_Ret
    EndFunc ;==> _StringCountFilledLines

    [/autoit]

    Als $s_String übergibst du den Inhalt deines Edit-Controls.
    Der Rückgabewert ist dann immer die Anzahl der gefüllten Zeilen. ;)

  • Super vielen Dank....

    hat wunderbar funktioniert ;)

    Zwar zählt er erst ab dem 2. Zeichen, aber das ist nicht weiter wild, da pro Zeile eh längere Zahlen zum Reporting eingetragen werden müssen.

    Gruss Mirko

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.