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

  • rundes Fenster - rahmenlos - beliebige Fensterformen - geht sowas mit Autoit

    • Andy
    • 16. Juni 2015 um 21:51

    aus der Hilfe zu
    _WinAPI_CombineRgn

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    
    
    ; get height of window title and width of window frame - may be different when XP theme is ON/OFF
    Global $htit = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
    Global $frame = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME)
    
    
    Local $gui = GUICreate("Test Windows regions", 350, 210)
    Local $btn_default = GUICtrlCreateButton("Default region", 100, 30, 150)
    Local $btn_round = GUICtrlCreateButton("Round region", 100, 60, 150)
    Local $btn_buble = GUICtrlCreateButton("Buble region ", 100, 90, 150)
    Local $btn_transparent = GUICtrlCreateButton("Transparent region", 100, 120, 150)
    Local $btn_exit = GUICtrlCreateButton("Exit", 100, 150, 150)
    GUISetState(@SW_SHOW)
    
    
    Local $pos = WinGetPos($gui) ; get whole window size (no client size defined in GUICreate)
    Global $width = $pos[2]
    Global $height = $pos[3]
    
    
    Local $msg, $rgn
    While 1
    	$msg = GUIGetMsg()
    	Select
    		Case $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit
    			ExitLoop
    
    
    		Case $msg = $btn_default
    			$rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height)
    			_WinAPI_SetWindowRgn($gui, $rgn)
    
    
    		Case $msg = $btn_round
    			$rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height, $width / 3, $height / 3)
    			_WinAPI_SetWindowRgn($gui, $rgn)
    
    
    		Case $msg = $btn_buble
    			Local $rgn1 = _WinAPI_CreateRoundRectRgn(0, 0, $width / 2, $height / 2, $width / 2, $height / 2) ; left-top
    			Local $rgn2 = _WinAPI_CreateRoundRectRgn($width / 2, 0, $width, $height / 2, $width / 2, $height / 2) ; right-top
    			_WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    			_WinAPI_DeleteObject($rgn2)
    			$rgn2 = _WinAPI_CreateRoundRectRgn(0, $height / 2, $width / 2, $height, $width / 2, $height / 2) ; left-bottom
    			_WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    			_WinAPI_DeleteObject($rgn2)
    			$rgn2 = _WinAPI_CreateRoundRectRgn($width / 2, $height / 2, $width, $height, $width / 2, $height / 2) ; right-bottom
    			_WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    			_WinAPI_DeleteObject($rgn2)
    			$rgn2 = _WinAPI_CreateRoundRectRgn(10, 10, $width - 10, $height - 10, $width, $height) ; middle
    			_WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    			_WinAPI_DeleteObject($rgn2)
    			_WinAPI_SetWindowRgn($gui, $rgn1)
    
    
    		Case $msg = $btn_transparent
    			_GuiHole($gui, 40, 40, 260, 170)
    
    
    	EndSelect
    WEnd
    
    
    ; make inner transparent area but add controls
    Func _GuiHole($h_win, $i_x, $i_y, $i_sizew, $i_sizeh)
    	Local $outer_rgn, $inner_rgn, $combined_rgn
    
    
    	$outer_rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height)
    	$inner_rgn = _WinAPI_CreateRectRgn($i_x, $i_y, $i_x + $i_sizew, $i_y + $i_sizeh)
    	$combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
    	_WinAPI_CombineRgn($combined_rgn, $outer_rgn, $inner_rgn, $RGN_DIFF)
    	_WinAPI_DeleteObject($outer_rgn)
    	_WinAPI_DeleteObject($inner_rgn)
    	_AddCtrlRegion($combined_rgn, $btn_default)
    	_AddCtrlRegion($combined_rgn, $btn_round)
    	_AddCtrlRegion($combined_rgn, $btn_buble)
    	_AddCtrlRegion($combined_rgn, $btn_transparent)
    	_AddCtrlRegion($combined_rgn, $btn_exit)
    	_WinAPI_SetWindowRgn($h_win, $combined_rgn)
    EndFunc   ;==>_GuiHole
    
    
    ; add control's area to given region
    ; respecting also window title/frame sizes
    Func _AddCtrlRegion($full_rgn, $ctrl_id)
    	Local $ctrl_pos, $ctrl_rgn
    
    
    	$ctrl_pos = ControlGetPos($gui, "", $ctrl_id)
    	$ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0] + $frame, $ctrl_pos[1] + $htit + $frame, _
    			$ctrl_pos[0] + $ctrl_pos[2] + $frame, $ctrl_pos[1] + $ctrl_pos[3] + $htit + $frame)
    	_WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
    	_WinAPI_DeleteObject($ctrl_rgn)
    EndFunc   ;==>_AddCtrlRegion
    Alles anzeigen
  • FTDI-DLL in Autoit einbinden und verwenden

    • Andy
    • 16. Juni 2015 um 13:26
    Zitat von AutoTim

    Das war mein Versuch bis jetzt:

    Und wo ist der Fehler in deinem Script?!
    Wenn du jetzt antwortest:" Funktioniert nicht!", fliegst du bei 90% der User hier auf die Ignore-Liste!

    Welche Fehlermeldungen bekommst du, wenn du die error-Codes der Funktionen auswertest?
    Es kostet nur EINEN EINZIGEN MAUSKLICK, um in Scite das gesamte Script mit Trace-Lines zu füllen....

  • Meine rekursive FTP-Suche verbessern

    • Andy
    • 15. Juni 2015 um 17:45

    Interessant wären jetzt die Zeiten der einzelnen Programmteile/Befehle, damit man sehen kann, an welchem Schräubchen man drehen muss, um effizienter zu werden.

    Wenn _FTP_ListToArray($conn) bspw. 3 Sekunden dauert, dein Arraygedöns zum Schreiben und Auswerten aber nur 200ms, dann brauchst du dir über "Optimierung" bei den Arrays keine Gedanken mehr machen....

  • Zeichen Zählen - Hommage an Andy und Autobert

    • Andy
    • 15. Juni 2015 um 17:22
    Zitat von alpines

    Die wohl schnellste Variante wäre wohl mit FASM und Inline-ASM-Code

    Wobei ich neulich interessehalber mal nachgeschaut hatte, wieso ein C(++)-Code für eine ähnliche Anwendung ca. 4-5x schneller als mein (zugegebenermaßen hingerotzter) 15-Zeilen ASM-Code war....
    Compilerflag -AVX2 gesetzt und mal eben 32 Bytes in ein YMM-Register geschaufelt und das mit EINEM Takt verglichen/ausgewertet.
    Und ich dagegen hab mit X86-ASM "gemütlich" ein Byte nach dem anderen ausgewertet. :thumbdown:

    Der vom C++-Compiler erzeugte AVX- ASM-Code war nicht mal sonderlich gut, handoptimiert wäre sicher noch mehr drin gewesen, aber 5x schneller und das nur mit einem Häkchen an der richtigen Stelle hat was

    Na gut, AVX2 läuft mit Sicherheit nicht mal auf 10% der vorhandenen Rechner, macht aber nix, sag ich dem C++-Compiler einfach, dass er nur SSE nehmen soll, wenn wenigstens das vorhanden ist....Wird das Programm halt 10KB größer, wen juckt das?

    Da lob ich mir AutoIt! Einzeiler, Geschwindigkeit ausreichend, passt! :thumbup:

  • Icondatei mit mehreren Icongrößen mit GDI+ laden

    • Andy
    • 15. Juni 2015 um 13:12
    Zitat von Oscar

    "_WinAPI_ShellExtractIcon" kann zwar die unterschiedlichen Icongrößen auslesen, aber ich muss die Icongröße angeben.

    Wikipedia sagt:
    Icons sind meistens quadratisch und haben Standardgrößen mit Kantenlängen von 16, 24, 32, 48, 64, 128 oder 256 aber auch 512 Pixeln.

    Ich würde einfach alle Icongrößen bei der ShellExtraction durchlaufen lassen, so solltest du die Icongrößen alle fangen.

  • Meine rekursive FTP-Suche verbessern

    • Andy
    • 14. Juni 2015 um 22:29

    lass dir auch die Zeit für die einzelnen Befehle _FTP_ListToArray($conn) und _FTP_DirSetCurrent($conn, $aStartfolders[$j]) zurückgeben!
    Der Rest sollte eigentlich keine Zeit kosten....

  • Meine rekursive FTP-Suche verbessern

    • Andy
    • 14. Juni 2015 um 19:35

    Hi,
    prinzipiell sehe ich keine großartigen "Zeitfresser"...

    AutoIt
    _ArrayDelete($aFolder, 0)
    						For $k = 0 To UBound($aFolder) - 1

    Könnte man so machen:

    AutoIt
    ;_ArrayDelete($aFolder, 0)
    						For $k = 1 To UBound($aFolder) - 1

    und das _ArrayAdd($aStartfolders, $aStartfolders[$j] & "/" & $aFolder[$k])
    könntest du dir auch sparen, indem du das Array mit bspw. 20000 Einträgen vorher erstellst und nur noch einen Index mitlaufen lässt...

    Weiterhin solltest du diesen Scriptteil profilen, d.h. die Laufzeit sämtlicher Schleifen "ausstoppen".
    Wichtig ist, zuerst den "Zeitfresser" zu lokalisieren, erst dann kann/muss man über alternativen Code nachdenken!

  • Können Controls bei einem (nicht Autoit) Programm nach einem Neustart unterschiedliche Instance Nummern aufweisen

    • Andy
    • 14. Juni 2015 um 15:16
    Zitat von AutoMit

    Wie geht Ihr damit um, wenn die Controls in einem Programm eine gleiche Klasse, z.B. Tedit, keinen Namen und eine wechselnde Instance-Nummerierung aufweisen? Wie kann man solche Controls eindeutig indentifizieren und somit ansteuern?

    Ist mir ehrlich gesagt noch nicht untergekommen.
    Das liegt aber auch sicherlich daran, dass ich
    a) Programme, welche ich "fernsteuere", weder Update noch irgendwelche Einstellungen ändere. (und schon garnicht irgendwelche Einstellungen speichere! )
    b) beim Scripten tunlichst darauf achte, dass das AutoIt-Script das Programm in vorgegebenem Environment startet, und nicht "irgendwo" im Programm eine Userinteraktion zum Starten des Scripts erforderlich ist, das geht zu 100% in die Hose!

    Wenn die Namen von Controls trotzdem wechseln, dann muss man ggf andere Funktionen verwenden. Bei Edit-Controls ist das aber sehr ungewöhnlich, das heisst ja nichts anderes, als dass ein weiteres Edit-Control in diesem Fenster existiert. Wo soll das "auf einmal" herkommen?!

  • FTP Verbindung herstellen

    • Andy
    • 12. Juni 2015 um 17:28

    Hi,
    erstelle einen "öffentlichen" Ordner auf deinem FTP-Server mit Benutzerrechten, die nur für diesen Ordner gelten (Nur Dateien runterladen, keine Hochladen, sonst keine Rechte!)
    Kopiere eine Dummy-Textdatei rein und sende mal die Zugangsdaten per PN, ich schaue mir das mal an, wenn du willst...

    FTP ist eigentlich völlig problemfrei, habe da seit Jahren keinerlei Stress.

  • FTP Verbindung herstellen

    • Andy
    • 12. Juni 2015 um 13:20

    Habe testweise das Script von Bitnugger mal durchlaufen lassen, ausser den provozierten Fehlern habe ich kein Problem feststellen können!

    Spoiler anzeigen
    Code
    AutoIt: 3.3.10.2, OS: WIN_7/SP1/X64, OSLang: 0407, Script: D:\Autoitscripte\test72.au3
    
    
    OK - _FTP_Open
       - $hOpen = 0x00CC0004
    Handle created
    Resolving name ...
    Name resolved
    Connecting to server ...
    Connected to server
    Receiving response ...
    Response received | Size = 204 Bytes    Bytes read = 4
    Sending request ...
    Request sent | Size = 25 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 40 Bytes    Bytes read = 4
    Closing connection ...
    Connection closed
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    220-
    220-   ftp.mozilla.org / archive.mozilla.org - files are in /pub/mozilla.org
    220-
    220-   releases.mozilla.org now points to our CDN distribution network and no longer works for FTP traffic
    220 
    530 This FTP server is anonymous only.
    
    
         - @error    = 0
         - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    
    
         - @error    = 0
         - @extended = 87
    ~~~~~~~~~~~~~~~~~~~~~
    Handle created
    Resolving name ...
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    
    
         - @error    = 0
         - @extended = 12007
    ~~~~~~~~~~~~~~~~~~~~~
    Handle created
    Connecting to server ...
    Connected to server
    Receiving response ...
    Response received | Size = 204 Bytes    Bytes read = 4
    Sending request ...
    Request sent | Size = 16 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 34 Bytes    Bytes read = 4
    Sending request ...
    Request sent | Size = 12 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 254 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 424 Bytes    Bytes read = 4
    OK - _FTP_Connect
       - $hConn = 0x00CC0008
       - Benötigte Verbindungsversuche = 1
    Sending request ...
    Request sent | Size = 5 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 9 Bytes    Bytes read = 4
    OK - _FTP_DirGetCurrent: /
    Handle created
    OK - _FTP_ListToArray2D - Einträge: 3
       - pub                                             4096
       - README                                           178
       - index.html                                       384
    Sending request ...
    Request sent | Size = 12 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 33 Bytes    Bytes read = 4
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_DirSetCurrent 'pub123'
    550 Failed to change directory.
    
    
         - @error    = 0
         - @extended = 12003
    ~~~~~~~~~~~~~~~~~~~~~
    Sending request ...
    Request sent | Size = 9 Bytes    Bytes read = 4
    Receiving response ...
    Response received | Size = 37 Bytes    Bytes read = 4
    OK - _FTP_ListToArray2D - Einträge: 3
       - pub                                             4096
       - README                                           178
       - index.html                                       384
    >>>>>> Please close the "Report Log Window" to exit <<<<<<<
    Alles anzeigen

    und HIER ein weiterer Hinweis, und HIER auch ...

  • Focus bei bestimmten Fenstern verhindern - eine echt harte Nuss

    • Andy
    • 11. Juni 2015 um 13:28
    Zitat von AutoMit

    Also die nur auf einen Mausklick reagieren, aber nicht auf ein "versehentliches" Tastaturereignis?

    Probleme löst man nicht, Probleme beseitigt man!
    Zum Thema "Mausklicks" solltest du in JEDEM hier im Forum geposteten Thread zum Thema den Hinweis finden, dass "Mausklicks" die mit Abstand schlechteste Lösung ist, um Ereignisse von Controls auszulösen! ControlClick() ist dein Freund, damit ist nämlich völlig unerheblich, welches Fenster den Focus hat!

    Zitat von AutoMit

    (b) Wie verhindere ich systemweit, dass Tastatureingaben zur ungewollten Bestätigung von Messageboxen etc. führen?

    Wozu? Windows ist nicht umsonst ein MultiTasking/MultiThreading-System! Selbst in seligen DOS-Zeiten gab es TSR-Programme, die "nebenbei" liefen...
    Wenn du nicht auf den Bildschirm schaust, während du schreibst, solltest du dir das angewöhnen! Die Frage stellt sich, wie Milliarden von Computeranwendern in den letzten 30 Jahren dein "Problem" bearbeitet haben?

    Umgekehrt wird ein Schuh draus, sorge dafür, dass erst gar kein "Fremdprogramm" deine Tastatureingaben stört. Ich jedenfalls habe keine Programme laufen, welche irgendwelche extrem diffizilen Messageboxen aufpoppen lassen, die eine destruktive Funktion mit ENTER/OK bestätigt bekommen.

  • Buttons im Array! Abfrage Hilfe?

    • Andy
    • 11. Juni 2015 um 13:11
    Zitat von DrMopiti

    Case $Farm

    Call("_Farm")

    tröööööööööööööööööööööööööt

    mach zu den Thread!

    Edit Raupi: Thread geschlossen, Botscheiß

  • „Koda Form Designer“ - Array, Hilfe und mehr

    • Andy
    • 11. Juni 2015 um 07:14
    Zitat von AutoMit

    Die Frage bezieht sich natürlich auf alternative und bessere Programme.

    definiere "besser"...
    Ich schließe mich Oscar und den meisten anderen hier an und bringe es mal auf den Punkt: In der Zeit, in der du nach "klickibunti"-Alternativen zur Programmierung suchst, hättest du, die nötige Fähigkeit und Erfahrung vorausgesetzt, deine Scripte "von Hand" längst erstellt!

    Zitat von AutoMit

    Wir sind hier in einem Bereich, wo es um Automatisierungen geht. Warum sollen dann die Tools, die für dieses Ziel genutzt werden, nicht ein Plus an Automatisierung bereits bieten?

    Strike!
    Eine GUI verwende ich in maximal 10% meiner Automatisierungsscripte, und dort maximal zur Anzeige von User-Informationen. 90% des Codes dreht sich um die Abwicklung und Logik des Ablaufs. Damit hilft mir KEIN EINZIGES PROGRAMMIERTOOL DER WELT! Und wird es auch in naher Zukunft nicht....
    Es besteht für mich keinerlei Grund, in 10% eines Vorganges Arbeit zur Optimierung zu stecken, wenn ich bei der Optimierung von 90% wesentlich "bessere" Ergebnisse erzielen kann.

  • TCP - Datenübertragung -- Ausführbare Dateien gehen nicht

    • Andy
    • 10. Juni 2015 um 18:05
    Zitat von GtaSpider

    Es ist richtig, dass man beim Dateitransfer immer ein Protokoll mitschicken sollte.

    Naja, nicht immer"^^, es geht ja primär darum, Informationen mit der Datei mitzuschicken bzw. einen Ansatz fürs Debuggen zu bekommen.
    Wie man (wie auch beim TE ) deutlich sieht, hat man nicht viel davon, wenn man feststellt dass ein Fehler aufgetreten ist, aber nicht weiß wo dieser auftritt und warum!
    Wenn man Dateiname, Dateigröße, ggf Hash o.a. mitüberträgt, wird nicht nur das Fehlermanagement wesentlich einfacher.

  • Hilfe bei Skript

    • Andy
    • 10. Juni 2015 um 13:25
    Zitat von inhib21

    Ich will in einem Programm alle Anführungszeichen ersetzen das Problem ist das es mit suchen ersetzen nicht funktioniert

    Hi,
    welches Programm? Und wo kommen die Daten/Dateien her? Warum müssen die Anführungszeichen weg, und was soll danach mit den Daten/Dateinamen passieren?
    Zeig mal dein Script, mit dem du die Daten aus dem Programm ausliest.

    Btw. kann man idR nicht in irgendeinem Fremdprogramm die Ausgaben ändern...

  • TCP - Datenübertragung -- Ausführbare Dateien gehen nicht

    • Andy
    • 9. Juni 2015 um 17:43

    Hi,
    auch wenn ich selbst in so gut wie allen meinen Scripten, die mit TCP zusammenhängen, ein "eigenes" Protokoll verwende (s. BugFix´ens Beispiele), MUSS (und das macht es auch!) TCP einwandfrei funktionieren!
    Wenn ich nur GTASpiders Script überfliege, fällt mir auf, dass bspw. beim Empfänger ein

    AutoIt
    While $sRecv = ""
                    $sRecv = TCPRecv($iAccSocket, 2048, 1)
    		$sRecv = BinaryToString ($sRecv)
    WEnd

    funktionieren KANN , aber nicht MUSS.
    Zu tun kann das u.a. mit dem Timeout haben, denn NUR, wenn der Empfänger einen VERBINDUNGSFEHLER registriert, sollte die Schleife verlassen werden!
    ACHTUNG, mit 3.3.8.1 erstellte Scripte fangen die Fehler "besser" ( ?! ) ab, seit 3.3.8.1 hat man es mit geänderten TCP-Errormanagement zu tun!
    Siehe dazu HIER!

  • TreeView - Probleme / Planlos beim Befüllen

    • Andy
    • 8. Juni 2015 um 20:23
    Zitat von Lottich

    Ich hab das _ArrayDisplay() lediglich benutzen wollen um zu sehen, welche Daten ich nun tatsächlich zurück bekomme.

    Dann setz das ArrayDisplay() irgendwo in deine Endlos-Schleife...
    Oder benutze ConsoleWrite() 8)

  • Hauptfenster - Kindfenster - Maus setzen - Text einfügen

    • Andy
    • 8. Juni 2015 um 20:20
    Zitat von AutoMit

    Ich möchte externe Programme mit AutoIt steuern.

    Welche Programme? Ggf. gibt es dafür schon sog. UDF (UserDefinedFunctions), oder aber gänzlich andere Lösungen (silent Install bspw.)

    Generell gibt es mehrere Möglichkeiten "fernzusteuern". Ich persönlich nutze oft das "Send()" von Tasten(kombinationen), da dadurch idR. sämtliche Funktionen erreicht werden können.
    Schreib dir einfach den "Weg" auf, d.h. welche Buttons, Tastenanschläge, Mausklicks usw du benutzt.
    Zeig einfach mal deine bisherigen Script-Versuche, vom Start des Programms angefangen.

  • Hauptfenster - Kindfenster - Maus setzen - Text einfügen

    • Andy
    • 8. Juni 2015 um 19:22

    Hi,

    Zitat von AutoMit

    Autoit Window Info - liefert zwar die Klassenbeschriftung wie:

    [CLASS:TEdit; INSTANCE:2]

    ist schon der richtige Ansatz.
    In der (auch deutschen) Hilfe ist ausführlichst und an ausführbaren Beispielen erklärt, wie man die mit AutoIt-Window-Info gewonnenen Informationen in eigene Scripte bringt.

    Die einzelnen (Child-) Fenster bekommst du mit AutoIt schon aktiviert?
    Bei der Treeview kann es je nach Programm kniffelig werden, da wäre ein Screenshot und ggf. dein bisheriges Script hilfreich.

    Poste doch mal Screens der zu aktivierenden Fenster und die dazugehörenden Ausgaben von AutoIt-Window-Info.

  • Reguläre Ausdrücke Sammlung

    • Andy
    • 7. Juni 2015 um 15:27

    Spalten aus CSV-Datei auslesen

    Spoiler anzeigen
    AutoIt
    ;aus einer CSV-Datei die jeweilige Spalte in ein Array ausgeben
    
    
    #include <Array.au3>
    
    
    $txt = "Stadt,Land,Fluss,Farbe,Vorname,Nachname,Tier" & @CRLF   ;alternativ fileread("file.csv")
    $txt &= "London,England,Themse,Blau,Heinz,Becker,Hund" & @CRLF
    $txt &= "Mainz,Deutschland,Rhein,Gelb,Tim,Thaler,Katze" & @CRLF
    $txt &= "Paris,Frankreich,Seine,Rot,Hilde,Meier,Maus"
    
    
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $txt = ' & $txt & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
    
    $s = ","                                                        ;Separator, der in der CSV verwendt wird
    $column = "D"                                                   ;Spalte, entweder als Buchstabe A-Z
    
    
    $col = Asc(StringUpper($column)) - 64                           ;Spalte, als Spaltennummer einsbasierend
    
    
    $pattern = '(?m)^(?:[^' & $s & ']*' & $s & '){' & $col - 1 & '}([^' & $s & ']*)' ;RegEx-Pattern
    
    
    $res = StringRegExp($txt, $pattern, 3)                          ;RegEx
    _ArrayDisplay($res, "Spalte " & $column)
    
    
    
    
    $col = 1                                                        ;Spaltennummer einsbasierend
    $pattern = '(?m)^(?:[^' & $s & ']*' & $s & '){' & $col - 1 & '}([^' & $s & ']*)' ;RegEx-Pattern
    $res = StringRegExp($txt, $pattern, 3)                          ;regEx
    _ArrayDisplay($res, "Spalte " & $col)
    Alles anzeigen


    Primzahlen per RegEx

    Spoiler anzeigen
    Code
    ;primzahlen ab 3 mittels regex
    
    
    $string = "1"
    For $i = 3 To 3000 Step 2
        $string &= "11"
        If Not StringRegExp($string, "^1?$|^(11+?)\1+$", 0) Then ;regex matched KEINE Primzahlen
            ConsoleWrite('$i = ' & $i & @CRLF)
        EndIf
    Next

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™