[Zahlen] Mit Punkten abgränzen

  • Hi :D
    Ich würde gerne bei großen Zahlen diese mit Punkten abgrenzen
    Bsp.: 12000000 => 12.000.000

    Gibt es da schon eine Vorgefertigte Funktion? =)
    Wenn nicht, ich wollte es mit StringRight machen...
    Jedoch bräuchte ich dann noch einen genialen Einfall von euch, welcher mir sagt, wie viele Stellen diese spezielle Zahl hat UND wie ich bei einer Variable (in dem Fall eine Zahl) die letzten 3. Stellen weglassen kann :D  :)
    Langer Satz - ich hoffe ihr versteht ihn :D
    (Eine einzelne Funktion, die es davon schon gibt wäre natürlich Perfekt)
    ________________________________________________________________

    PS: Dieses Programm gehört zur "IchBinTotalVerblödetUndHabeKeineHobbysCollection" :D
    BIG THX IM VORAUS!!!
    msg MasterRobb

    Lächel, du kannst sie nicht alle töten.

    3 Mal editiert, zuletzt von masterRobb (27. Oktober 2009 um 14:36)

  • Beim ersten sieh dir mal

    [autoit]

    _StringAddThousandsSep

    [/autoit]

    zu 2.
    sieh dir mal

    [autoit]

    StringLeft

    [/autoit]

    an

    mfg. Simon

  • thx^^
    Ahh^^ noch was gefunden was ich brauche:
    Eine Funktion, die mir die Anzahlen der Ziffern einer spezifischen Zahl angibt
    Bsp: 1.488.563 => 7 => 7 Ziffern...
    Sowas wäre noch schön, dann könnte ich es selbst "programmieren" :) :D

    Lächel, du kannst sie nicht alle töten.

  • Nur zur Info: _StringAddThousandsSep wird in der nächsten Stable rausfliegen, in der neuen Beta ist es schon weg. Die Entwickler sind es leid, dass jeder eine andere Funktionsweise will, so dass die Funktion ganz entfernt wird. Am besten kopierst du die Funktion also in dein eigenes Skript und gibst ihr einen neuen Namen, damit bist du auch in Zukunft auf der sicheren Seite ;)

  • cool :D
    Kannst du mir auch sagen wir man das macht ;D => Halt das ich das dann in jedem Script später benutzen kann?
    etc....
    dazu bräuchte ich die genaue Programmierung von _StringAddThousandsSep ... dann könnte ich es mir später wenigstens unten drunter als Funktion definieren... =)

    Lächel, du kannst sie nicht alle töten.

  • [autoit]

    Func _NumberingNumbers($hNumber)
    $split = StringSplit(StringReplace($hNumber,".",""),"")
    return $split[0]
    Endfunc

    [/autoit]

    so?
    einfach funktion mit hintern der zahlen variable
    erklärung
    Stringreplace ist dazu da dass die "." entfernt werden umm nur zahlen zu haben
    stringsplit = splitern also alle zahlen einzeln und $split[0] = array mit der anzahl der splits also alle Zahlen

    udn noch ein beispiel mit stringlen

    [autoit]

    Func _LenNumber($hNumber)
    return StringLen(StringReplace($hNumber,".",""))
    EndFunc

    [/autoit]

    erklärung :

    stringlen = findet die anzahl der zeichen heraus und durch stringreplace sind alle punkte entfernt

    mfg. Simon

  • _StringAddThousandsSep ist noch in C:\Programme\AutoIt3\Include\String.au3 zu finden ;)

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringAddThousandsSep
    ; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
    ; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
    ; Parameters ....: $sString - The string to be converted.
    ; $sThousands - Optional: The Thousands delimiter
    ; $sDecimal - Optional: The decimal delimiter
    ; Return values .: Success - The string with Thousands delimiter added.
    ; Author ........: SmOke_N (orignal _StringAddComma
    ; Modified.......: Valik (complete re-write, new function name)
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ; Example .......; Yes
    ; ===============================================================================================================================
    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    ;~ Local $aNumber = StringRegExp($sString, "(\d+)\D?(\d*)", 1)
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    ;~ $sResult = StringTrimLeft($sResult, 1) ; Strip leading thousands separator
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Alle "hellblauen" AutoIt-Befehle sind in den Funktionsbibliotheken im Include-Verzeichnis enthalten (wie schon von Progandy beschrieben) und können somit nach Belieben abgeändert und/oder an eigene Bedürfnisse angepasst werden!

  • Andy
    aber man sollte an solchen funktionen niemals das ;Author ...: wegmachen denn der author bleibt
    mach es zb. so
    ;Modifided ...:
    oder mach dir eine ganz eigene

    gruss Simon