Beiträge von BugFix
-
-
Die Frage für mich ist daher: Welche Datenbank läuft dann genau im Hintergrund oder stellt das Objekt selbst eine Art native Datenbank zur Verfügung?
Ich habe das bisher so verstanden, dass ADO eine Schnittstelle für Datenbanken aller Art (egal ob relational oder hierarchisch) darstellt mit Basismethoden/ -Eigenschaften von Datenbanken.
Somit kann man das ADO-Objekt durchaus als eine LowLevel Datenbank ansehen.
In der Vergangenheit war ADO bzw. damals DAO aber aufgrund des implementierten Recordsets recht verrufen, da dieses eine Schwachstelle im Sicherheitsbereich darstellte. Aktuell sind m.W. diese Sicherheitslücken aber abgestellt.Ich nutze ADO vorrangig um meine SQL-Datenbank z.B. mit AutoIt-Skripten anzuzapfen.

Hier mal noch der MSDN-Link zum ADO-Objekt.
-
-
Warum eigentlich nicht auch das RecordSet-Objekt (ADO) als Alternative zum Array nutzen?
DAO bzw. jetzt das bessere ADO findet schon Verwendung, in der Rubrik Datenbanken hatte ich dazu bereits gepostet (kann aber sein, dass die Threads nicht mehr existieren, da gabs mal 'nen Crash).
Als direkte Array-Alternative würde ich persönlich es aber nicht betrachten. Dazu ist es doch zu sehr auf Datenbanken zugeschnitten.
-
Ihr könnt das Thema schließen.
Das mußt du schon selbst tun.
Im Startpost Präfix auf "gelöst" setzen.Btw.: Es ist immer problematisch Support für eine ganz spezielle Software zu erhalten. Denn das Problem lag ja hier weniger im AutoIt-Bereich.
-
Lies bitte deine Frage nochmal und dann sage mir, ob du verstehst, was da steht.

Ich verstehe nur: Bahnhof..
-
ich hoffe das ist besser
[autoit]
Naaa...
da bau ich mir den Operator doch einfach nach
$Years = 2
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(_IFOR('$Years > 1', 'Jahre', 'Jahr') & @CRLF)$Years = 1
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(_IFOR('$Years > 1', 'Jahre', 'Jahr') & @CRLF)Func _IFOR($Bedingung, $WahrWert, $FalschWert)
[/autoit]
If Execute($Bedingung) Then Return $WahrWert
Return $FalschWert
EndFuncAber Sorry an eukalyptus, jetzt haben wir deinen Thread ge-highjackt.
Keine böse Absicht. -
Tja, da müssen wir mal abwarten und dann testen, welche Variante schneller ist.
Wobei ich gefühlsmäßig keine gravierenden Differenzen erwarte. -
Dein Bsp. von 6 Zeilen Code war aber sehr schlecht gewählt.
[autoit]
Denn effektiv codiert, ergibt das auch ohne ternären Operator nur 2 Zeilen.
Local $Var = 75, $Msg = "Value is negative."
[/autoit]
If $Var > 0 Then $Msg = "Value is positive." -
Also, ich hab jetzt spaßeshalber mal probiert in:
- Notepad
- Wordpad
- Word
- Excel
- NP++
- SciTE
Es funktioniert überall: Send(Chr(216))
-
Send("{ALT DOWN}0216{ALT UP}")
Sag mal - liest du, was ich poste?
Send(Chr(216))
und nicht dein Tastengedöns...
-
Du darfst dieses Hotkey NICHT verwenden! Es ist von Windows reserviert!
Probier doch einfach mal "^{F8}", damit geht es 100%-ig. -
Hast du überhaupt probiert???
Hier ein Bsp.-Skript.
Alle von mir aufgezeigten Varianten funktionieren auch!
[autoit]; Ausgabe in Konsole
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(Chr(216) & @CRLF); Einfügen in eigenes Control
[/autoit][autoit][/autoit][autoit]
$Gui = GUICreate('Test')
$input = GUICtrlCreateInput('', 30,30,60,20)
$btSetData = GUICtrlCreateButton('Einfügen', 100,30,60,20)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
GUIDelete($Gui)
ExitLoop
Case $btSetData
GUICtrlSetData($input, Chr(216))
EndSwitch
WEnd; Senden an fremde Anwendung
[/autoit]
Send("#r")
WinWaitActive("Ausführen")
Send('Wordpad.exe{ENTER}')
WinWaitActive('[CLASS:WordPadClass]')
Send('Senden an fremde Anwendung: ')
Send(Chr(216))ZitatUnd warum funktioniert mein script nicht?
Weil dein HotKey von den meisten Programmen vorbelegt ist. -
Lassen sich die Radios evtl. per Tastatur anwählen?
z.B. mit TAB in den inneren Bereich wechseln, dann mit ALT+N das Nein wählen? Oder per Pfeiltastatur auf das Radio gelangen und dann mit SPACE selektieren?
Probiere mal rum. Lösungen mit Send() sind zwar nicht unbedingt das gelbe vom Ei, aber wenn nichts anderes funktioniert bleibt oft nur diese Krücke.
-
Versuche mit dem AutoIt-Window-Info Tool (in SciTE mit Strg+F6 öffnen) die ID / Class der Radio-Button auszulesen.
Mit ControlCommand kannst du diese direkt ansteuern. -
Kommt drauf an, wie und wo du das Zeichen einfügen möchtest.
[autoit]
[/autoit][autoit][/autoit][autoit]
; Ausgabe in Konsole
ConsoleWrite(Chr(216) & @CRLF); Einfügen in eigenes Control
[/autoit][autoit][/autoit][autoit]
GUICtrlSetData($ID_Ctrl, Chr(216)); Senden an fremde Anwendung
[/autoit]
Send(Chr(216)) -
-
Die Umwandlung Spaltenadresse zu Nummer und umgekehrt hatte ich auch mal geschrieben, vllt. hast du Verwendung:
[autoit]; === Excel - Spaltenadresse zu Nummer
[/autoit][autoit][/autoit][autoit]
Func __LetterToColNr($sLetter)
; by BugFix
If Not StringRegExp($sLetter, '[a-zA-Z]{1,2}') Then Return SetError(1,0,-1)
If StringLen($sLetter) = 1 Then Return Asc(StringUpper($sLetter)) -64
Return (Asc(StringUpper(StringLeft($sLetter, 1)))-64)*26 + (Asc(StringUpper(StringRight($sLetter, 1)))-64)
EndFunc; === Excel - Spaltennummer zu Adresse
[/autoit]
Func __ColNrToLetter($iColNr)
; by BugFix
If $iColNr <= 26 Then Return Chr($iColNr+64)
$iColNr -= 26
Local $1 = 65, $2 = 90, $tmp, $diff = 1
$tmp = Mod($iColNr,26)
If $tmp Then
$2 = 64 +$tmp
$diff = 0
EndIf
$1 += Int($iColNr/26) - $diff
Return Chr($1) & Chr($2)
EndFunc..und _ExcelBookNew() hatte ich auch mal modifiziert um beim Erstellen die Anzahl der Tabellenblätter gleich festzulegen:
Spoiler anzeigen
[autoit]; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: __ExcelBookNew
; Description ...: Creates new workbook and returns its object identifier.
; Syntax.........: $oExcel = _ExcelBookNew($fVisible = 1, $iSheetsStartup = 1)
; Parameters ....: $fVisible - Flag, whether to show or hide the workbook (0=not visible, 1=visible)
; $iSheetsStartup - Count of sheets at startup
; Return values .: Success - Returns new object identifier
; Failure - Returns 0 and Sets @Error:
; |1 - Unable to create the Excel COM object
; |2 - $fVisible parameter is not a number
; Author ........: SEO <locodarwin at yahoo dot com>
; Modified.......: litlmike, BugFix
; Remarks .......:
; Related .......:
; Link ..........;
; Example .......; Yes
; ===============================================================================================================================
Func __ExcelBookNew($fVisible = 1, $iSheetsStartup = 1)
; Original in Excel.au3
; modified by BugFix
Local $oExcel = ObjCreate("Excel.Application")
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not IsNumber($fVisible) Then Return SetError(2, 0, 0)
If $fVisible > 1 Then $fVisible = 1
If $fVisible < 0 Then $fVisible = 0
If $iSheetsStartup < 1 Then $iSheetsStartup = 1
With $oExcel
.SheetsInNewWorkbook = $iSheetsStartup
.Visible = $fVisible
.WorkBooks.Add
.ActiveWorkbook.Sheets(1).Select ()
EndWith
Return $oExcel
EndFunc ;==>__ExcelBookNew -
Du solltest bei Arbeiten im Array, gerade wenn du auf Folge- oder VorherIndex zugreifst, immer prüfen ob dieser Index überhaupt existiert. Ansonsten schmiert bei falschem Wert dort dein Skript mit Array-Fehler ab.
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $array[10] = [10,20,30,40,50,60,70,80,90,100]$GUI = GUICreate('Test', 400, 100)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel('Index Start', 10, 23, 70, 17)
$inStart = GUICtrlCreateInput('', 85, 20, 30, 20, $ES_NUMBER)
$btAdd = GUICtrlCreateButton('+', 135, 20, 20, 20)
$btSub = GUICtrlCreateButton('-', 170, 20, 20, 20)
GUICtrlCreateLabel('Wert an neuem Index', 215, 23, 110, 17)
$inCalc = GUICtrlCreateInput('', 340, 20, 30, 20, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xFFFFFF)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $btAdd
_SetIndexValue('+')
Case $btSub
_SetIndexValue('-')
EndSwitch
WEndFunc _SetIndexValue($sOp)
[/autoit]
Local $indexStart = GUICtrlRead($inStart), $index
If $indexStart < 0 Or $indexStart >= UBound($array) Then $index = -1
Switch $sOp
Case '+'
If $indexStart +1 < UBound($array) Then
$index = $indexStart +1
Else
$index = -2
EndIf
Case '-'
If $indexStart -1 >= 0 Then
$index = $indexStart -1
Else
$index = -2
EndIf
EndSwitch
If $index = -1 Then
GUICtrlSetData($inStart, '!')
ElseIf $index = -2 Then
GUICtrlSetData($inCalc, '!')
Else
GUICtrlSetData($inCalc, $array[$index])
EndIf
EndFunc -
- Posts des TE wiederhergestellt
- CLOSED