"We are back" « oc.at

Sp33d up my Schleife

mr.nice. 16.06.2005 - 10:53 881 3
Posts

mr.nice.

differential image maker
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6562
Hallo, ich hab mir vor kurzem in AutoIt3 ein Script gebastelt, mit dem ich aus Excel Dateien Wordlists machen kann. Das ganze ist nichts anderers als automatisiertes Copy & Paste welches zwischen Excel und dem Editor hin und herspringt. Nach jedem, in den Editor gepasteten, Wort kommt ein Zeilenumbruch, um die Einträge dann ganz einfach als Variablen definieren zu können, bzw. um sie zeilenweise abzuarbeiten.
In einer externen config.ini lässt sich einstellen wieviele Spalten und wieviele Reihen das Excelfile hat.
Funktionert soweit wunderbar, nur an der Performance der Schleife muss ich noch ein bisschen feilen, Verbesserungsvorschläge erwünscht !
Code:
Global $Paused
$a = IniRead ( "config.ini", "In wievielen Reihen?","Anzahl", "Nicht ganzzahlig oder negativ." ) 
; Check if file opened for reading OK
$b = IniRead ( "config.ini", "In wievielen Spalten?","Anzahl", "Nicht ganzzahlig oder negativ." ) 
; Check if file opened for reading OK
If $a = -1 Then
    MsgBox(0, "Error", " -1 oder konnte config.ini nicht finden.")
    Exit
EndIf
HotKeySet("+!c", "TogglePause")
HotKeySet("^!x", "Terminate")
HotKeySet("^!m", "ShowMessage")
;;;; Copy & Paste ;;;;
Send ("+!c")
;Keep this otherwise the Script will start immediatly;
Send("{ESCAPE}")
;This is needed to get rid of the Alt-Functions;
For $a1 = 0 to $a step 1
do
send ("{DOWN}")
send("{LEFT " & $b & "}")
$a1 = $a1 + 1
For $b1 = 0 to $b step 1
do
send ("^c")
;Here you gotta  enter the name of the window where you want to paste the text;
WinActivate ("List", "")
send("^v")
WinActivate ("Microsoft Excel", "")
send("{TAB}")
$b1 = $b1 + 1
Until $b1 = $b
Next
$b1 = 0
Until $a1 = $a
Next
;;;;;;;;
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        ToolTip('Converter is idle',300,0)
    WEnd
    ToolTip('Converter ist working',300,0)
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096,"","Converter, ein Tool für Excel, Fab 05")
EndFunc

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Du hast im inneren "For" eine weitere "Do...Until" Schleife mit derselben Variablen, das ist irgendwie komisch.

Du könntest generell das AutoIt Script durch ein JScript oder VBScript ersetzen, das Excel via Automation steuert, dann brauchst du überhaupt keine sichtbaren Windows dafür.

mr.nice.

differential image maker
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6562
Danke ich werd' mal versuchen eine do..until wegzulassen.

Kennt sich vielleicht jemand mit 2 dimensionalen Arrey's in AutoIt aus (Spalten x Zeilen) ? Damit könnte ich mir glaube ich einiges an Arbeit ersparen.

Ich will das ganze schon eher in AutoIt machen, da dies nur den ersten Schritt darstellt, die Ausgabedatei soll dann später in einem AS/400 User-Interface abgearbeitet werden.

Crash Override

BOfH
Registered: Jun 2005
Location: Germany
Posts: 2951
Wie wäre es mit dem speichern als csv Datei und dann nur jedes semikolon durch einen zeilenumbruch ersetzen?

Ich kenne AutoIT nicht aber das ist selbst mit vi möglich.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz