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

Beiträge von Andy

  • StringRegExp und grosse Website Pages

    • Andy
    • 10. Januar 2015 um 21:36

    Hi,
    ohne das Textfile kann hier niemand etwas machen, das ist sonst nur rumgestochere im Nebel!
    Wie sollen wir dein Script testen bzw. das Regex optimieren?

  • Error Managment

    • Andy
    • 10. Januar 2015 um 18:23

    Hi,

    ich fange jede Errormeldung im Fehlerfall in einer Msgbox ab:
    Msgbox(0,"Funktionsname","Fehlercode Nr. " & @error & " in Modul Modulname in Funktion Funktionsname")
    Das Errormanagement bzw. dessen Unterstützung ist anderen Sprachen gegenüber von AutoIt sehr stiefmütterlich umgesetzt.
    Wer gewohnt ist, mit Fehlerbeschreibungen uvm. vollgeschmissen zu werden, steht bei AutoIt im Regen.
    Mal davon abgesehen, bei compilierten Scripten immer noch mit der Fehlermeldung "Error 0 in Zeile 5234" abgespeist zu werden.

    Daher schreibt man sich bzw. in verwendeten UDF´s die Fehlerbehandlung selbst!

    Zitat von nuts

    Vergleichbar mit dem Errorhandler für COM


    Ja, der ist klasse umgesetzt!

    Wenn die Errorcodes wenigstens durchgehend nach einem System durchnummeriert wären, hätte man auch kein Problem, eine simple Funktion
    OnError(@error) anzuspringen, in der dann die gesamte Auswertung ablaufen würde.
    Denn auf das seit 35 Jahren benutzte und bewährte "On Error Gosub" können wir lange warten, das ist nämlich BASIC-like und somit seitens Dev´s lame und hat in einer modernen Sprache nichts zu suchen....
    Dann lieber GARKEIN oder von den Usern selbstgeschnitztes Errormanagement, das ist hip und passt auch zur Zielgruppe!

  • Zeichenkette Formatiert zusammen ausgeben

    • Andy
    • 9. Januar 2015 um 18:00

    //EDIT, erledigt

  • Hilfe mit Aufruf von dll Funktion(en)

    • Andy
    • 9. Januar 2015 um 13:12

    Hi,
    ok, der komplette Quellcode hat geholfen.
    So wie es aussieht, wird der Pointer auf den String verlangt, wie bei den anderen Funktionen auch.
    Das "hex" in ".txt_hex" hat demnach weniger mit der Übergabe an die Funktion, sondern eher mit dem Dateiinhalt zu tun...
    Hast du den mal verifiziert?
    Funktionieren die Funktionen trxPS und trxEON_PS?

  • Hilfe mit Aufruf von dll Funktion(en)

    • Andy
    • 8. Januar 2015 um 18:37

    Hi,

    Zitat von PixelStorm

    // The file must be of type .txt_hex


    was bedeutet das "hex"?

    IdR werden Strings einfach so übergeben:

    [autoit]

    $trxString = DllCallAddress("INT", $trxLoadRDS, "BYTE", $Unit, "STR*", $filename)

    [/autoit]


    Das Sternchen in STR* weist an, dass der Pointer auf den String übergeben wird. Testweise lass das Sternchen weg! Falls Unicodestrings verlangt werden, nimm WSTR.
    Alle anderen Zeilen darüber kannst du dir dann sparen!

    Wenn das HEX in .txt_hex etwas zu bedeuten hat, dann könntest du den Filenamen entweder per $hex=stringtobinary($filename) entsprechend umformen, wenn das 0x am Anfang stört, schneide es per stringtrimleft($hex,2) ab.

    //edit
    Es gibt auch die Möglichkeit, dass der Pointer auf einen Pointer auf den String übergeben werden muss! Dann musst du den String in eine CHAR-Struct packen, deren Pointer in ein DWORD und diesen Pointer dann übergeben.
    Oder mit "PTR*",$dllstructgetptr($CHARstruct)

    Was generell immer sinnvoll ist, ist der komplette Sourcecode der Funktion, nicht nur der Header!

  • GUID eines Energieschemas auslesen

    • Andy
    • 5. Januar 2015 um 18:53

    Hi,
    schau mal in der Hilfe unter StdErrRead(). Dort ist beschrieben, wie es imho RICHTIG gemacht wird!
    Wie du ja selbst festgestellt hast, KANN ein einmaliger Aufruf von StdoutRead() oder StdErrRead() den vollständigen String innerhalb der Console zurückgeben, muss aber nicht!
    Daher bleibt man besser auf der sicheren Seite!

  • GUID eines Energieschemas auslesen

    • Andy
    • 5. Januar 2015 um 17:49

    Hi,
    du musst auch den kompletten Text auslesen!

    [autoit]

    $Test = Run(@ComSpec & " /c " & 'POWERCFG -GETACTIVESCHEME', "", @SW_HIDE, 2) ;Nicht die Leerzeichen vor und nach "/c" vergessen!
    $GUI=""
    While 1
    $GUI &= StdoutRead($Test)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "", $GUI)

    [/autoit]
  • Icon generator

    • Andy
    • 1. Januar 2015 um 22:16

    naja, ich dachte, anhand der AutoIt-Hilfe hättest du die Lösung selbst gefunden....

    [autoit]

    $hIcon = _GDIPlus_HICONCreateFromBitmap($hImage) ;icon aus bitmap
    _WinAPI_SaveHICONToFile("test.ico", $hIcon) ;speichern
    ShellExecute("test.ico")

    [/autoit]


    Wenn du nicht weisst wie man in der Hilfe sucht, wieso fragst du nicht?

  • Icon generator

    • Andy
    • 30. Dezember 2014 um 20:16

    Hi,

    Zitat von manske

    die Lösung ist auch etwas blöd

    ist stark untertrieben^^

    Die Schleife erstellt pausenlos Dateien, wenn sie denn denn durchlaufen würde.
    Im Array sollen Elemente gelöscht werden, welche garnicht existieren, daher die Fehlermeldung.
    Arrays pausenlos zu erstellen und danach zu löschen ist murks! Wenn man vorher weiß, welche Dimension das Array haben soll, dann definiert man das EIN MAL am Anfang des Scripts!

    Das mit den vielen Randoms habe ich auch nicht verstanden.
    $key = 0x219BB182AA73 ist auch etwas seltsam, sollte wohl eine Farbe sein...

    Ich versuche mal, das etwas zusammenzufassen :o)

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>

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

    Opt("GUIOnEventMode", 1) ;OnEventmodus einschalten

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

    Global $gui = GUICreate("gdiplus", 300, 300) ;GUI erstellen
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $gui) ;Grafik speichern und beenden
    GUISetState() ;GUI anzeigen
    _GDIPlus_Startup() ;GDI starten

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

    Global $grafik = _GDIPlus_GraphicsCreateFromHWND($gui) ;Context erstellen
    Global $hImage = _GDIPlus_BitmapCreateFromGraphics(300, 300, $grafik)
    Global $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage);

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

    _GDIPlus_GraphicsClear($hGraphic, 0xFF00FFFF) ;Hintergrund
    $pen = _GDIPlus_PenCreate("0xFFF00FFF", 20) ;pen
    _GDIPlus_GraphicsDrawRect($hGraphic, 0, 0, 300, 300, $pen);linie

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

    While 1 ;Endlosschleife
    $x1 = Random(1, 300, 1) ;Random
    $y1 = Random(1, 300, 1)
    $x2 = Random(1, 300, 1)
    $y2 = Random(1, 300, 1)
    $key = "0xFF" & String(Random(1, 0xFFFFFF, 1));zufällige Farbe für den
    $pen = _GDIPlus_PenCreate($key, 11) ;pen
    _GDIPlus_GraphicsDrawLine($hGraphic, $x1, $y1, $x2, $y2, $pen);linie
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $x1 / 2, $y1 / 2, $x2 / 2, $y2 / 2, $pen);Kreis
    _GDIPlus_GraphicsDrawImageRect($grafik, $hImage, 0, 0, 300, 300);Image in gui anzeigen
    Sleep(1000)
    WEnd

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

    Func _Exit()

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

    _GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\Gespeichert.jpg");speichern
    _GDIPlus_ImageDispose($hImage) ;löschen
    _GDIPlus_Shutdown() ;GDI beenden
    ShellExecute(@ScriptDir & "\Gespeichert.jpg");ICO anzeigen
    Exit ;ende
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Eingabefelder per Mausklick aktivieren

    • Andy
    • 30. Dezember 2014 um 12:01

    BugFix´ens Lösung ist ideal, wenn man einer bestehenden GUI bspw. weitere Eingabefelder zuweisen will, deren Zuweisung in die bestehende Struktur integriert werden soll.

    Ansonsten erstellt man einfach die Controls in ihrer per TAB oder ENTER (oder wie auch immer) getriggerten Reihenfolge und "springt" über die Control-ID.

  • CSV_Objekt - UDF

    • Andy
    • 30. Dezember 2014 um 09:08

    Hi,
    sieht gut aus!
    Da ich selbst viel mit CSV arbeite (allerdings nur in VBA), bestünden ggf. weitere Anforderungen :D :
    - String in CSV finden und Zeile/Spalte ausgeben
    - Den n-ten Feldinhalt in einer Zeile zurückgeben
    - Anzahl Felder einer (der aktuellen) Zeile

    Allerdings muss ich zugeben, dass die vorliegende UDF außer als Programmierbeispiel für AutoItObjekt keinerlei Vorteile gegenüber eines simplen 2D-Arrays/Listen hat!
    Mir erscheint das Objektgedöns (in diesem Fall! ) eher kontraproduktiv.

  • File Manipulation mit Array und Regex: Nur numerische Zeilen in File löschen -HILFE-

    • Andy
    • 26. Dezember 2014 um 22:07

    Regex upgedatet....in Post #5

  • File Manipulation mit Array und Regex: Nur numerische Zeilen in File löschen -HILFE-

    • Andy
    • 26. Dezember 2014 um 21:50
    [autoit]

    $text="1.2.3.4/bla/blub 1234567890 " & @crlf & "http.//bla.blub/tralala" & @crlf & "128.2.3.4/huhu " & @crlf & "17.12.2012 tralala " & @crlf& "http://192.168.2.1/AutoIt" &@crlf

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

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $text = ' & $text & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    filedelete("IP.txt")
    filewrite("IP.txt",$text)

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

    $dat=fileread("IP.txt")

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

    $ret= StringRegExpReplace($dat,"(?miU)(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.*\r\n)","")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    weil Weihnachten ist, legen wir heute mal den Arm aus der Sonne^^


    //EDIT
    schau mal, was bei deinem $text = @ScriptDir & "test_offline.log" in der Variablen steht!!!

  • File Manipulation mit Array und Regex: Nur numerische Zeilen in File löschen -HILFE-

    • Andy
    • 26. Dezember 2014 um 21:15

    so?

    [autoit]

    $text="1.2.3.4 bla blub 128.2.3.4 huhu 17.12.2012 tralala 192.168.2.1 AutoIt"
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $text = ' & $text & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $ret= StringRegExpReplace($text,"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]
  • _DynArray-UDF - halbdynamische Arrays mit AutoIt

    • Andy
    • 26. Dezember 2014 um 14:48
    Zitat

    Die AutoIt devs sind darauf gekommen Schau dir mal die neuste Beta an. Da gibt es Maps..

    jo, statt die Funktionen, die 90% aller User täglich benotigen zu verbessern, wird etwas hinzugefügt, was maximal 1% der User vermissen....
    Man könnte fast meinen, die würden für M$ arbeiten ;(
    Dort wurde mir telefonisch von einem Entwickler mitgeteilt, als ich div. Excel-Bugs "gefixt" haben wollte:" Aber Herr XXXX, wir verdienen Milliarden mit diesem Produkt, würden Sie daran etwas ändern?!"
    Das war vor ca. 15 Jahren, und daran hat sich bis heute nichts geändert!
    Wenigstens habe ich seitdem verstanden, nach welchen Prämissen heutzutage programmiert wird! :D

  • Frohe Weihnachten!

    • Andy
    • 24. Dezember 2014 um 20:21

    Frohe Weihnachten euch allen und euren Familien!

    @eukalypus....wie wahr! :/

  • _DynArray-UDF - halbdynamische Arrays mit AutoIt

    • Andy
    • 24. Dezember 2014 um 10:57

    Sollte gepinnt werden! :thumbup:
    Wieso kommen die AutoIt-DEV´s nicht auf so etwas?!
    DAS wäre mal ein Grund, auf eine der neuen Versionen upzudaten.

    Ich werde mal prüfen, inwieweit man diese Funktionen komplett in die bereits bestehenden _ArrayXXXXX()-Funktionen transferieren kann!

  • Hardware Baukasten Tinkerforge

    • Andy
    • 23. Dezember 2014 um 21:21

    AutoIt liest nur den TCP-Puffer aus.
    Erst dann wird das nächste ACK zum Sender geschickt, so dass dieser wieder Daten (maximal die TCP Receive Window Size) sendet.

    Da geht nichts verloren....

  • PC Sicherung Komplett

    • Andy
    • 23. Dezember 2014 um 09:32
    Zitat von chip

    Irgendwelche Programme oder gar den Umweg über Linux sind dafür sind schlicht überflüssig.


    Ich will ja nicht diskutieren, aber du brauchst bei deiner Lösung IMMER Programme und gleichzeitig Zugang zum Server.
    Wie du das bei einem Rechner irgendwo weit ab vom Schuss und gecrashter Platte hinbekommen willst, ist mir ehrlich gesagt ein Rätsel!
    Unseren Außendienstlern wurde mit einer bootbaren, geklonten Platte genau dieses Problem abgenommen. Diese Jungs haben größtenteils KEIN EDV-Verständnis, aber einen USB-Stecker in eine Buchse fummeln und dann einen beliebigen Rechner starten bekommen selbst die noch hin ^^
    Die Alternative ist Einschicken des Rechners und mindestens 1 Woche auf Ersatz warten, oder einen Mitarbeiter 2 Tage verreisen zu lassen um .....tadaaaa.....eine geklonte Platte zu tauschen!

    In der neuesten c´t wird eine "ein-Klick-Lösung" (unter Win 8.1) mit Bordmitteln vorgestellt!

  • Simples Connect Tool von Batch in AutoIt übernehmen?

    • Andy
    • 23. Dezember 2014 um 09:17

    Ich bin mal wieder raus....
    Nach 10 Tagen und 10 Posts ist der TE nicht in der Lage, die Batchdatei zu posten. Die Begründung

    Zitat von djdanby

    ich möchte die Batch durch ein reines AutoIt Tool ersetzen. Und da die Idee und die Umsetzung meines Batch-Tools von mir stammt möchte ich auch nicht das jeder meine Batch besitzt um sie nachbauen zu können. Daher gehe ich auch nicht weiter darauf ein, wofür sie verwendet wird, denn Google liest mit

    ist der Brüller an sich! Meine ersten Batchdateien habe ich 1984 geschrieben, seitdem ist ALLES ausgereizt worden. Da gibt es keine Geheimnisse mehr!
    Ich habe in den 90ern Code gesehen, da haben 3 IBM-Programmierer eine Woche analysiert was ein Kollege da fabriziert hatte. Dagegen war Assembler-Debugging ein Kinderspiel!

    @Threadersteller
    Andere Leute sollen DEINE Arbeit machen, Infos gibts bis auf 2 Zeilen Code keine, was zu Rumgestochere im Nebel und zu Glaskugelgelese führt. Natürlich werden die Helfer nicht erwähnt, auch eventuelle andere User mit demselben Problem finden infolge "Geheimhaltung" diesen Thread nicht...

    Alles in allem wieder mal ein User und ein Thread, wie ihn kein Forum gebrauchen kann!

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™