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. msp-holzwurm

Beiträge von msp-holzwurm

  • array sortieren

    • msp-holzwurm
    • 1. Dezember 2007 um 21:03

    Hallo Bug-Fix!

    erstmal DANKE, eine Sache funktioniert nicht und zwar das

    If IsArray($var) then..

    da steigt der beim einlesen der letzten Zeile irgendwie aus, hab jetzt einfach noch einen Filter rumgelegt, wenn nicht ein 3 Teiliger Wert aus dem 1D-Arry kommt.

    Wollt das jetzt noch besser machen, mit ner eigenen Schleife auf das Array $ar, wenn der Wert nicht 3-teilig, dann _arraydelete($ar,$i) nur das funktioniert gar nicht (die test.txt wird bei mir "manuell" von mehreren Leuten editiert, wenn da ein Schrott drin ist, dann soll er das gleich komplett aus dem Array werfen)
    ==============
    warum geht das nicht
    For $i = 1 To UBound($ar) -1
    $var = StringSplit($ar[$i], ' ')
    if $var[0] <> 3 then ; schrottwert in der zeile
    _arraydelete($ar,$i) ; raus damit
    EndIf
    Next
    ====================


    so gehts jetzt (den Filter, der nicht funktioniert, wollte ich einfach voher laufen lassen.


    For $i = 1 To UBound($ar) -1
    $var = StringSplit($ar[$i], ' ')
    if $var[0]=3 then
    ; msgbox(0,"erster Wert", $var[1])

    If IsArray($var) Then
    $arSortable[$i-1][0] = $var[1] ; Geb.Dat.
    $arSortable[$i-1][1] = $var[2] ; Vorname
    $arSortable[$i-1][2] = $var[3] ; Name
    EndIf
    EndIf
    Next


    Danke & Gruss aus dem Spessart

    German

  • array sortieren

    • msp-holzwurm
    • 30. November 2007 um 21:24

    Hallo AutoIt-Gemeinde

    ich komm mit dem
    _arraysort irgendwie nicht klar, hab mal ein kleines Beispiel gehackt.
    Die Geburtstagsliste ist kommentiert, muß natürlich als Datei da sein,
    bei mir als "f:\eigenes\swe\autoit\tryarea\Geburtstagsliste.txt"

    Wie kann ich das Array $tabelle nach Vornamen bzw. Familiennamen sortieren.

    Arbeite da an einem kompleren Tool und will ein superelegantes Suchmenü programmieren, da muß ich eine Tabelle dynamisch einlesen und nach div. Kriterien sortieren können.

    Es dankt Euch

    German

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; sortieren

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

    #include <array.au3>
    #include <file.au3>

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

    #cs
    ; Geburtstagsliste
    15.11.1958 Renate Schmitt
    10.01.1973 Getraude Schuffelmaus
    27.11.1942 Werner Schnorrkopf
    #ce

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

    $gebliste="f:\eigenes\swe\autoit\tryarea\Geburtstagsliste.txt"

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

    ; einlesen in ein eindim. Array
    Dim $lRead2
    _FileReadtoArray($gebliste, $lRead2)
    _arraydisplay($lRead2,"xx")
    _ArraySort ($lRead2)
    _arraydisplay($lRead2,"lRead2 sortiert")

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

    Dim $lRead
    _FileReadToArray($gebliste, $lRead )

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

    Dim $tabelle[$lRead[0]][3]

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

    For $lNum = 1 to $lRead[0]
    $aWerte = StringSplit($lRead[$lNum]," ")
    if $aWerte[0]=3 then
    For $i=1 To UBound($aWerte)-1
    msgbox(0,"des ist", $aWerte[$i])
    $tabelle[$lNum-1][$i-1]=$aWerte[$i]
    Next
    EndIf
    Next
    _arraydisplay($tabelle,"xx")

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Position beim StringREplace

    • msp-holzwurm
    • 28. November 2007 um 22:16

    Hallo!

    das mit den festen Positionen gibt nur einen Sinn, wenn Du z.B. eine Steuerdatei mit festen Positionen hast
    Bei Deinem Beispiel 64-67 (=4 Zeichen) muß der Replacestring dann 4 Zeichen lang sein, damit erfüllst Du ja genau Deine Vorgabe. (es gibt keine "Endevorgabe", die mußt Du durch die Satzlänge definieren - du kannst nur mit der Stratposition arbeiten).

    Sag mal genau, was Du mit dem Programm machen möchtest, man kann den String auch "auseinandernehmen" oder mit RegExp arbeiten.

    Gruss

    schau mal das an:

    Spoiler anzeigen
    [autoit]


    $old="Autoit ist ein supergoiles Teil"
    $newstring="blubbergeiles"
    $Pos_start=8
    $Pos_ende=10

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

    _stringreppos($old,$Pos_start,$Pos_ende,$newstring)

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

    Func _stringreppos($String,$Pos_start,$Pos_ende,$newstring)
    $leng_replacestring=($pos_ende-$pos_start+1) ; länge des neuen Strings
    msgbox(0,"der Ersatzungsstring ist", $leng_replacestring & " lang")

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

    select
    case Stringlen($newstring)=($pos_ende-$Pos_start) ; Länge passt
    ; einfach weitermachen
    case Stringlen($newstring) < $leng_replacestring ; Länge des Replacestrings zu kurz
    while StringLen($newstring) < $leng_replacestring
    $newstring=$newstring & " "
    Wend
    case StringLen($newstring) > $leng_replacestring
    $newstring=StringLeft($newstring,$leng_replacestring)

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

    EndSelect

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

    $neu=StringReplace($old,$pos_start,$newstring)
    msgbox(0,"jetzt hab ich", $neu)

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

    EndFunc

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

    German

  • GUICtrlCreateEdit automatisch nach unten Scrollen

    • msp-holzwurm
    • 28. November 2007 um 21:21

    das wars!!

    Gruss

    German
    PS: wie bring ich das Thema auf geschlossen??

  • _FileListToArray

    • msp-holzwurm
    • 28. November 2007 um 21:10

    Hallo!

    probiers mal so mit StringRegExp:

    ===============schnipps aus meinem Cod========================


    $FolderList=_FileListToArray($PDFDIR & "\", "*.pdf",1) ; Flag 2 = nur Ordner
    If (Not IsArray($FolderList)) then

    MsgBox (0,"XXXXXXXX" ,"Keine PDF-Dateien gefunden.",5)
    ELSE


    For $i = 1 To $FolderList[0]
    ; Beginn German PDFs
    $pattern="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9]+\.[pP][dD][fF]"
    if StringRegExp($FolderList[$i],$pattern) then
    ...
    ========================================================================

    Gruss

    German
    PS: bin da auch nicht der große Experte, hab mir ne kleine StringRegExp-Anleitung aus dem Internet besorgt
    Pearl_Basics.pdf (ist zwar nur eine Seite drin, ist aber auch für Nichtinformatiker verständlich)

  • GUICtrlCreateEdit automatisch nach unten Scrollen

    • msp-holzwurm
    • 28. November 2007 um 20:58

    Hallo All!

    tu mir ein bischen schwer mit der Formulierung der Frage, deshalb ein Beispielcode dabei.
    Was muß ich tun, daß die letzte Ermittelte OK-Buttonzeit im "erledigt" Fenster unten angezeigt wird und nicht immer das Fenster nach oben scrollt???

    Das Programm tut natürlich was sinnvolleres, an dem Beispiel aber sicher einfacher zu erläutern.

    Danke & Gruss aus dem Spessart

    German


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; menue1.au3

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

    #include <GUIConstants.au3>
    #include <Date.au3>

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

    $Version="1.00"
    $erledigt=""

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

    GUICreate("menue1 " & $Version) ; will create a dialog box that when displayed is centered

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

    GuiCtrlCreateGroup("erledigt", 5,280, 280, 75)
    ;GUICtrlCreateLabel("erledigt", 5, 250, 280)
    ;$ERLEDIGTTEXT = GUICtrlCreateEdit("", 10, 265, 260, 50, $WS_DISABLED+$ES_AUTOVSCROLL)
    ;$ERLEDIGTTEXT = GUICtrlCreateEdit("", 10, 265, 260, 50,$ES_AUTOVSCROLL + $WS_VSCROLL + $ES_MULTILINE + $ES_WANTRETURN + $ES_READONLY)
    $ERLEDIGTTEXT = GUICtrlCreateEdit("", 10, 295, 275, 50, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_READONLY)
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group

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

    $okbutton = GUICtrlCreateButton("OK", 100, 375, 35)
    GUISetState () ; will display an dialog box with 1 checkbox

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg= $okbutton
    $datelong = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC

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

    if StringLen($erledigt)=0 then
    $erledigt = $erledigt & $datelong
    else
    $erledigt= $erledigt & @CRLF & $datelong
    EndIf
    GUICtrlSetData($ERLEDIGTTEXT,$erledigt)

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

    case $msg = $GUI_EVENT_CLOSE

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

    MsgBox(0, "Nix gibts umsonst", "Denk an den Kaffee für German...",5)
    exitloop
    EndSelect
    Wend

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Und noch einer ...

    • msp-holzwurm
    • 28. November 2007 um 20:06

    Hallo!

    diese grässliche Zahl hab ich auch bald stehen, aber zeigen wir es dieser Generation "degenerierter Mäuschenklicker" mal, den vi halten die für ne Pizza, einen Rechner ohne Maus können die sich gar nicht vorstellen und Adobe Page Maker unter Windows 2.3 haben halt nur echte Männer installiert ...

    Grüße aus Mainfranken

    German

  • Progress: STDOUT und ZIP.exe

    • msp-holzwurm
    • 27. November 2007 um 21:40

    Hallo!

    mein Akku ist jetzt ganz leeer:

    kannst Du damit was anfangen??

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; unziptest.au3 für unearth

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

    #include <file.au3>

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

    $Zipfile="F:\unearth.zip"
    $Befehl=" /C" & "C:\win32uti\uti\unzip.exe -l "
    $Protfile="F:\wasistdrin.txt"

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

    _zipanprot($zipfile,$protfile)

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

    Func _zipanprot($zipfile,$PROTFILE)

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

    ; Inhalt der Zip ans Protokoll hängen:

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

    Dim $StrTempFiles = _TempFile() ; Name für Temp-Datei erzeugen

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

    RunWait(@ComSpec & $Befehl & Chr(34) & $ZipFile & Chr(34) & " > " & $StrTempFiles, "", @SW_HIDE)

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

    $fhFiles = FileOpen($StrTempFiles,0)
    While 1
    $Line = FileReadLine($fhFiles)
    If @error Then ExitLoop
    _protoutput($PROTFILE,$line)
    WEnd
    FileClose($fhFiles)

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

    EndFunc

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

    ; ####################################################################################################

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

    Func _protoutput($PROTFILE,$TEXT)

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

    $datelong = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC

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

    $pfile=Fileopen($Protfile,1)
    ; Check if file opened for reading OK
    If $pfile = -1 Then
    MsgBox(64, "PROTOKOLLDATEI" & " " & $PROTFILE, "kann nicht geöffenet werden",10)
    Exit
    EndIf

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

    FileWrite($pfile, $datelong & " " & $TEXT & @CRLF)

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

    FileClose($pfile)

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

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • große TXT (800MB) splitten?

    • msp-holzwurm
    • 25. November 2007 um 10:04

    Hallo!

    solche Probleme kommen mir irgendwie bekannt vor:
    meinereiner hätte tail aus der gnu-Ecke genommen, da kann ich die letzten x Zeilen aus einer Datei sauber rausschneiden und von der Programmierung her braucht das Teil extrem wenig Rechnerleistung.

    Meist sind die Anfangszeilen eines solchen machwerks sowieso "durch zeitablauf wertlos" geworden.

    Protokollierer sollten halt immer prot200711.log oder sowas anlegen.

    Gruß

    German
    -wer mit Fein,Flex und Festool schraubt --> hackt mit AutoIt-

  • Zeitberechnung

    • msp-holzwurm
    • 21. November 2007 um 19:55

    Hallo!

    hab da mal was gekramt, heißt massbandchefin, so ein kleines nettes Programm, zu demotivieren --))))

    Grüße

    German

    Spoiler anzeigen
    [autoit]

    #include <date.au3>

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

    #include <string.au3>
    #include <file.au3>

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

    ; $filelongdate = $t[0] & "/" & $t[1] & "/" & $t[2] & " " & $t[3] & ":" & $t[4] & ":" & $t[5]

    $i=1
    while $i=1
    TrayTip("clears any tray tip","",0)
    $rest=_absitzen()
    TrayTip("German hat noch", $rest & " Tage Urlaub",5,1)
    sleep(5000)
    $rests=_absitzens()

    TrayTip("clears any tray tip","",0)
    TrayTip("Schluchz ", $rests & " Sekunden mach ich meinen Scheiss allein",5,2)
    sleep(5000)
    WEnd


    Func _absitzen()

    $urlaubsbeginn="2007/05/11 13:00:00"
    $searchTimeMode="d"
    $iDateCalc = _DateDiff($searchTimeMode,$urlaubsbeginn,_NowCalc())
    Return $iDateCalc

    EndFunc

    Func _absitzens()

    $urlaubsbeginn="2012/05/11 13:00:00"
    $searchTimeMode="s"
    $iDateCalc = _DateDiff($searchTimeMode,$urlaubsbeginn,_NowCalc())
    Return $iDateCalc

    EndFunc

    [/autoit]

    Edit GtaSpider: [21.11.2007 20:33]
    Gut, dass du Spoiler/AutoIt Code benutzt, aber bitte immer den SPOILER Tag vor den AutoIt Tag machen
    Korrekter Aufruf:

    Code
    [SPOILER][AUTOIT]
    AutoIt Code
    [/AUTOIT][/SPOILER]
  • Script nur auf bestimmten Rechnern erlauben

    • msp-holzwurm
    • 18. November 2007 um 11:25

    die MAC-Adresse ist die feste (=Hardware-Adresse) der netzwerkkarte, warum schlägt da ne Firewall an????

    ein paar Ideen von mir:
    irgendeine Software auf der Kiste hat sicher eine INI mit einem Stationsnamen, KassenrechnerNr oder sonstwas, man kann den angemeldeten Benutzer abfragen (dann geht das auch, wenn der an einem anderen Rechner arbeitet) man kann was in die Registry Patchen...

    Vor und Nachteile sind wohl immer:
    ich muß meinen Code erneut verteilen, wenn da Benutzer hinzukommen oder wegfallen.

    oder

    eine verschlüsselte Steuerdatei (READ-ONLY) auf dem Netzwerkserver, die das Programm beim Start auswerten kann.

    für bessere Ideen, bräuchte ich aber mal etwas "mehr Futter"

    Grüße

    German

  • Unendlichschleife

    • msp-holzwurm
    • 16. November 2007 um 20:12

    Hallo!

    sowas braucht man öfters:
    hier mal ein besseres Beispiel:

    die msg-Box geht nie auf, wenn in Deinem Temp-Dir eine schluss.nie da ist, bzw. Du kannst sie extern beenden, in dem Du ne schluss.txt in Dein Temp-Dir legst (das geht natürlich auch mit nem Autoit-Programm)

    Wenn Deine upload.exe evtl. empfindlich auf ein beenden des Aufrufprogrammes (Autoit) reagiert, dann mach sowas.
    Hab ich im Rechenzentrum im Einsatz, wenn z.B. ein Pack-Programm (externes zip von info-zip im Einsatz) beendet werden soll, wenn ich das Autoit-Icon anklicke, dann ist das immer so ne Sache mit evtl. Daten die zip.exe gerade im Zugriff hat und mit ner if exists Abfrage kann man das aber sauber handeln.

    Grüße

    German

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Befehl ausführen, aber mit externem Abbruch

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

    $i=1

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

    while $i=1

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

    if FileExists(@TempDir & "\schluss.nie") then
    exit
    EndIf

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

    msgbox(0,"huhu", "ich soll was tun",1)
    sleep(5000)

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

    if FileExists(@TempDir & "\schluss.txt") then
    $i=0
    EndIf

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

    Wend

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Zeilenumbruch

    • msp-holzwurm
    • 11. November 2007 um 19:07

    kann ich so nicht stehenlassen:

    ein Text wird z.B. mit Notepad nur korrekt angezeigt, wenn das DOS & Windows übliche
    0D0A (CRLF) am Zeilenende steht.

    Beim Einlesen von Dateien erkennt aber Autoit automatisch den Zeilenumbruch (zumindest hat ich da noch nie ein Problem).

    Solange Du nur unter Windows arbeitest, hast Du damit auch keine Probleme.
    die gehen los: wenn Du mit
    bash (=gnu-Shell) auf Windows arbeitest (die macht Unix-konforme @LF Umbrüche) oder wenn Du per FTP von irgendeinem anderen Betriebssystem (z.B. IBM-Host) Daten bekommst.

    War das mehr ne allgemeine Frage, oder hängst Du da konkret wo fest???

    Grüße

    German

  • Schöne Grüße!

    • msp-holzwurm
    • 1. November 2007 um 19:16

    da schickt ich Dir doch auch ein Willkommen auf Franken zu.

    Arbeite seit ca. genau einem Jahr mit Autoit und nutz das quasi nur professionell für irgendwelche Tools die wir im Rechenzentrumsbetrieb brauchen und die es nicht zu kaufen gibt.
    (tageweise ZIPPEN, Daten packen/entpacken, Protokollieren, Serverübergreifende Kopiertools...)

    Mein größtes Projekt ist ein "Systemtester" der bei 672 Kunden uns jeden Tag genaustens erzählt, wo es und ob es klemmt.


    Mit GUI mach ich sogut wie nichts, aber es hat jeden Tag mit Autoit und DANK der Superunterstüzung hier SPASS gemacht.


    Manch sogenannte "Blöde Frage" hat hier wirklich gigantische Arbeitsleistungen ausgelöst und die eine oder andere Idee hat sicher auch der "stille Mitleser" für sich gewinnen können. (wenn ich nur an den Blödsinn mit dem BMI-Kalkulator denke)


    Grüße

    German

  • Varable an Programm uebergeben

    • msp-holzwurm
    • 24. Oktober 2007 um 21:37

    Hallo!

    kenn zwar das Programm (snapshot.exe) nicht, aber so gehts beispielsweise einwandfrei mit dem zip.exe von infozip:

    $zipit=runwait("zip " & $archivname & " " & $file, $DataPath, @SW_HIDE)


    $DataPath ist das WorkingDir (wo soll das Kommando ausgeführt werden) und
    @SW_HIDE sagt an, daß da keine offene Command-Box angezeigt wird.

    $archivnahme bau ich mir vorher in autoit zusammen, also nicht
    a, Umgebung setzen
    b, Kommando aufrufen (das diese Umgebung wieder liest)
    sondern:
    alles in Autoit und nur ein Aufruf um das externe Programm zu starten.


    Als guter Autoitprogrammierer prüfst Du vorher, daß das externe Programm auch bei Dir (in der richtigen Version) im Suchpfad liegt (bei Interesse post ich Dir mal Beispiele zum zip oder unzip.exe)

    Grüße aus dem Spessart

    German

  • Zahl aus einen String isolieren

    • msp-holzwurm
    • 21. Oktober 2007 um 19:27

    Hallo!

    so gehts:


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; StringCleantonum.au3
    ; wie bring ich saubere numerische Werte zusammen

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

    #include <string.au3>

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

    $StringtoTest="<br>blubber>kkkqqqq13,77"
    $ergebnis=StringCleantoNum($StringtoTest)

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

    if $ergebnis <> "x" then
    msgbox(0,"so seh ich gesäubert aus", $ergebnis)
    else
    msgbox(32,"mit dem Schrott kann ich","nix anfangen")
    EndIf

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

    Func StringCleanToNum($stringtoconv)
    ; Ausgabe der gesäuberten Zahl
    ; Fehlerfalle: Ausgabe von x
    $sepwritten=0 ; noch kein Punkt rausgeschrieben
    Local $Hilf, $i, $convString
    $aryChar = StringSplit($stringtoconv, "")
    ; jetzt hab ich das Teil im array

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

    For $i = 1 To $aryChar[0]

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

    ; nur Ausgabe wenn Integer Wert
    If StringIsInt($aryChar[$i]) then
    $convString = $convString & $aryChar[$i]

    else
    select
    case $aryChar[$i]="," AND $sepwritten=1
    Return "x"
    case $aryChar[$i]="." AND $sepwritten=1
    Return "x"
    case $aryChar[$i]=","
    $convString=$convstring & "."
    $sepwritten=1
    case $aryChar[$i]="."
    $convString=$convstring & "."
    $sepwritten=1
    endselect

    Endif

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

    Next
    if StringLen($convString)=0 then
    Return "x"
    Else
    Return $convString
    EndIf

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

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Plausibilitätsprüfung?

    • msp-holzwurm
    • 14. Oktober 2007 um 10:57

    Sorry All!

    Bug-Fix hat Recht, so sollte das Funktionieren:
    Eingabe von
    otto --> x
    otto67,2 -->67.2
    in55.6 --> 55.6
    inge 66.2,4 --> x

    Also: korrigierbare Zahl: Antwort mit Punkt
    totaler schwachsinn (keine Zahlen oder doppelter Sperator: x)

    war ja auch klar, Kollege für den das Programm war (BMICALC) - hat auf den Schock hin erstmal ne Tafel Schokolade gebraucht --))))
    sprich es wurde nur einmal getestet


    Spoiler anzeigen
    [autoit]

    Func StringToNumgewicht($stringtoconv)
    ; Ausgabe der gesäuberten Zahl
    ; Fehlerfalle: Ausgabe von x
    $sepwritten=0 ; noch kein Punkt rausgeschrieben
    Local $Hilf, $i, $convString
    $aryChar = StringSplit($stringtoconv, "")
    ; jetzt hab ich das Teil im array

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

    For $i = 1 To $aryChar[0]

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

    ; nur Ausgabe wenn Integer Wert
    If StringIsInt($aryChar[$i]) then
    $convString = $convString & $aryChar[$i]

    else
    select
    case $aryChar[$i]="," AND $sepwritten=1
    Return "x"
    case $aryChar[$i]="." AND $sepwritten=1
    Return "x"
    case $aryChar[$i]=","
    $convString=$convstring & "."
    $sepwritten=1
    case $aryChar[$i]="."
    $convString=$convstring & "."
    $sepwritten=1
    endselect

    Endif

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

    Next
    if StringLen($convString)=0 then
    Return "x"
    Else
    Return $convString
    EndIf

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

    EndFunc

    [/autoit]

    Edit BugFix: (Mal wieder!!) Tags gesetzt.
    Mein lieber Holzwurm, wenn du nicht schleunigst den Gebrauch der Tags erlernst, werde ich dir etwas DichlorDimethylTrichlorethylen verpassen. :lol:
    Dann is Schluß mit lustig.. :P

  • Plausibilitätsprüfung?

    • msp-holzwurm
    • 13. Oktober 2007 um 19:50

    Hallo!

    sicher nicht perfekt, aber besser als diese Pseudo-Englischen Programme, die jedesmal mekern, wenn ich Punkt statt Komma eingebe.
    Hier Filter, nur Zahlen und aus , wird . gemacht

    Grüße

    German
    PS: aus meinem BMIcalc deswegen der Name der Funktion--)))


    Spoiler anzeigen
    [autoit]

    Func StringToNumgewicht($stringtoconv)
    Local $Hilf, $i, $convString
    $aryChar = StringSplit($stringtoconv, "")
    ; jetzt hab ich das Teil im array

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

    For $i = 1 To $aryChar[0]
    ; nur Ausgabe wenn Integer Wert
    $checkstring=StringIsInt($aryChar[$i])
    If $checkstring=1 Then
    $convString = $convString & $aryChar[$i]
    Else
    if $checkstring="," Then $convString = $convString & "."
    Endif
    Next
    Return $convString
    EndFunc

    [/autoit]

    Edit BugFix: Ich habe mal Tags gesetzt ;)
    Übrigens:
    Deine Funktion macht doch nichts anderes als jedes Komma in einen Punkt wandeln:

    [autoit]

    $str = StringReplace($str, ',', '.')

    [/autoit]
  • Datei erstellen

    • msp-holzwurm
    • 10. Oktober 2007 um 20:47

    /* sorry evtl. doppelt drin, meine ISDN Leitung ist gerade abgesemmelt */

    Hallo Memorex!

    hier mal meine Version, (bin da quasi der Mega-Ober-Protokollierer bei uns, auf meiner Mühle sind auch schlappe 192 Kunden und nicht nur einer!!)

    damit schreib ich in eine Protokolldatei, immmer anhängend, zusätzlich hab ich ein Tool (prot_to_protmon) das aus der Protokolldatei dann Monatsdateien macht:

    Beispiel:
    tuwasprot.log
    20070930183515 ich war auf dem Klo
    20071002143520 ich war beim Einkaufen
    20071101235510 ich hab zuviel getrunken auf der Party

    also jede Zeile geht mit JAHR MONAT TAG STUNDE MINUTE SEKUNDE los
    damit ist es Klasse was nachzuvollziehen , nur mußt Du aufpassen, daß das eigentliche Programm (das dadrin protokolliert) nicht mehrfach gestartet werden kann!!!!

    das prot_to_protmon müßte ich Dir erst umschreiben, das funktioniert nur in meiner Umgebung so.

    wenn ich prot_to _protmon habe laufen lassen, dann gibts
    tuwasprot200709.log
    tuwasprot2007010.log
    tuwasprot200711.log


    nur mal so als Anregung.

    (ich kann sogar per "Checkprogramm" Remote bei meinem Kunden von nem Protokoll (dieser Bauart) die Meldungen der letzen 48h genau rausziehen, das ist mit Autoit kein Problem)


    Grüße aus dem Spessart

    German


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _protoutput($PROTFILE,$TEXT)

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

    $datelong = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC

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

    $pfile=Fileopen($Protfile,1)
    ; Check if file opened for reading OK
    If $pfile = -1 Then
    MsgBox(64, "PROTOKOLLDATEI" & " " & $PROTFILE, "kann nicht geöffenet werden",10)
    Exit
    EndIf

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

    FileWrite($pfile, $datelong & " " & $TEXT & @CRLF)

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

    FileClose($pfile)

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

    EndFunc

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

    ; #############################################################################

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • sleep

    • msp-holzwurm
    • 5. Oktober 2007 um 19:57

    Hallo!

    habe mir auch ein Tool gebaut (sleeptotime) daß soll einfach warten, bis z.B. am gleichen Tag die Uhrzeit 06:30 Uhr erreicht ist, bin ich schon drüber (weils z.B. schon 08:00 Uhr ist) sofort weitermachen.

    Wenn ich aber dann die aktuelle Uhrzeit auslese und daraus schließe:

    120 Minuten * 60 Sekunden * 1000 ist die Zeit die ich einem sleep unterjubeln muß, dann kommt in der praxis ziemlicher Schrott raus, das Programm läuft dann evtl. schon um 06:17 Uhr an!!!!
    (obwohl die Berechung korrekt war), wenn größere Zeitabstände (Stunden zu überbrücken sind, dann unbedingt ne Schleife bauen, die die Uhrzeit wieder vom System holt um sich wieder neu anzugleichen.

    Gruss

    German

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™