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

Beiträge von BugFix

  • Sommerzeit

    • BugFix
    • 4. Mai 2008 um 00:46

    Hatte mir einen Fehler bei der Septemberrechnung eingebaut. Ist nun beseitigt. :whistling:

  • DllStructCreate & $WM_CAP_SET_VIDEOFORMAT

    • BugFix
    • 3. Mai 2008 um 22:15

    LOL, dahaddu Recht :D

  • DllStructCreate & $WM_CAP_SET_VIDEOFORMAT

    • BugFix
    • 3. Mai 2008 um 21:53

    Mir ist $tagRGBQUAD nicht ganz klar.
    Laut Definition muß $tagBITMAPINFOHEADER als letzten Parameter dword RGBQuad enthalten. :huh:

  • mehre exe-dateien einbinden und ausführen OHNE auf Festplatte auszulagern!

    • BugFix
    • 3. Mai 2008 um 14:06
    Zitat von WhiteLion

    ich finde in meiner deutschen hilfe nichtmal den befehl "_WinAPI_LoadLibraryEx"
    wo soll ich denn da gucken ?

    In der Original (englischen) AutoIt-Hilfe ? :whistling:

  • Sommerzeit

    • BugFix
    • 3. Mai 2008 um 13:30

    Also, wenn schon meckern, dann bitte gründlich. :D
    Denn die Sommerzeit gab es auch erst ab 1916, wurde 1919 wieder abgeschafft und von 1940-1949 erneut probiert und seit 1980 sind wir endgültig mit diesem Schwachsinn (auch ökonomisch) gesegnet. :wacko:
    Ich hab die Funktion jetzt so angepaßt, dass dies alles berücksichtigt wird.
    Einige Besonderheiten möchte ich mal am Rande erwähnen:
    - die Sommerzeit des Jahres 1940 endete erst 1942 !!
    - 1945 war die SZ im Osten zweiteilig, 2h von Mai-Sep. und 1h bis Nov.
    - 1947 für ganz DE dreiteilig: April/Mai 1h, Mai/Juni 2h, Juni-Okt 1h

    Für Österreich und Schweiz gelten wiederrum andere Zeiten. Das habe ich jedoch außen vor gelassen.

    Edit: Da hatte ich doch glatt übersehen, dass für 1980-1995 bei der Septemberberechnung ab 24. auf So. geprüft werden muß. Ist gefixt.

    Hier also die korrigierte Fassung:

    _Date_GetSummerTime()
    [autoit]

    ;==================================================================================================
    ; Function Name: _Date_GetSummerTime([$iYEAR=''])
    ; Description:: Ermittlung Beginn und Ende der Sommerzeit
    ; Parameter(s): $iYEAR Jahr zwischen 1916 und 2999 (keine SZ von 1919-1939; 1950-1979)
    ; wird kein Wert übergeben, wird das aktuelle Jahr verwendet.
    ; Wird ein Wert außeralb des Bereiches übergeben oder war in dem Jahr
    ; keine SZ, so wird ein leeres Array zurückgegeben
    ; Return Value(s): Array[0][0] Datum Beginn (Kurzdatumsformat lt. Regioneinstellung PC)
    ; in Deutschland / BRD
    ; Array[0][1] Datum Ende (Kurzdatumsformat lt. Regioneinstellung PC)
    ; in Deutschland / BRD
    ; Array[1][0] Datum Beginn (Kurzdatumsformat lt. Regioneinstellung PC)
    ; in Berlin u. sowjetisch besetzter Zone / DDR
    ; Array[1][1] Datum Ende (Kurzdatumsformat lt. Regioneinstellung PC)
    ; in Berlin u. sowjetisch besetzter Zone / DDR
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    #Include <Date.au3>
    Func _Date_GetSummerTime($iYEAR='')
    Local $i, $aSummer[2][2]
    Local $aTime[14][5] = [ _ ; Jahr, Anfang D/BRD, Ende D/BRD, Anfang Ostzone/DDR, Ende Ostzone/DDR
    [1916,'1916/04/30','1916/10/01','',''], _
    [1917,'1917/04/16','1917/09/17','',''], _
    [1918,'1918/04/15','1918/09/16','',''], _
    [1940,'1940/04/01','1940/12/31','',''], _
    [1941,'1941/01/01','1941/12/31','',''], _
    [1942,'1942/01/01','1942/11/02','',''], _
    [1943,'1943/03/29','1943/10/04','',''], _
    [1944,'1944/04/03','1944/09/16','',''], _
    [1945,'1945/04/02','1945/09/16','1945/05/24','1945/11/18'], _
    [1946,'1946/04/14','1946/10/07','1946/04/14','1946/10/07'], _
    [1947,'1947/04/06','1947/10/05','1947/04/06','1947/10/05'], _
    [1948,'1948/04/18','1948/10/03','1948/04/18','1948/10/03'], _
    [1949,'1949/04/10','1949/10/02','1949/04/10','1949/10/02'], _
    [1980,'1980/04/06','1980/09/28','1980/04/06','1980/09/28']]
    If ($iYEAR = '') Then $iYEAR = @YEAR
    If ($iYEAR < 1916) Or ($iYEAR > 1918 And $iYEAR < 1945) Or _
    ($iYEAR > 1949 And $iYEAR < 1980) Or ($iYEAR > 2999) Then Return $aSummer
    Switch $iYEAR
    Case 1916 To 1980
    For $i = 0 To UBound($aTime) -1
    If $aTime[$i][0] = $iYEAR Then ExitLoop
    Next
    $aSummer[0][0] = _DateTimeFormat($aTime[$i][1], 2)
    $aSummer[0][1] = _DateTimeFormat($aTime[$i][2], 2)
    $aSummer[1][0] = _DateTimeFormat($aTime[$i][3], 2)
    $aSummer[1][1] = _DateTimeFormat($aTime[$i][4], 2)
    Case 1981 To 1995
    For $i = 25 To 31
    If _DateToDayOfWeekISO($iYEAR, 3, $i) = 6 Then
    $aSummer[0][0] = _DateTimeFormat($iYEAR & '/03/' & $i, 2)
    $aSummer[1][0] = $aSummer[0][0]
    EndIf
    Next
    For $i = 24 To 30
    If _DateToDayOfWeekISO($iYEAR, 9, $i) = 6 Then
    $aSummer[0][1] = _DateTimeFormat($iYEAR & '/09/' & $i, 2)
    $aSummer[1][1] = $aSummer[0][1]
    EndIf
    Next
    Case Else
    For $i = 25 To 31
    If _DateToDayOfWeekISO($iYEAR, 3, $i) = 6 Then
    $aSummer[0][0] = _DateTimeFormat($iYEAR & '/03/' & $i, 2)
    $aSummer[1][0] = $aSummer[0][0]
    EndIf
    If _DateToDayOfWeekISO($iYEAR,10, $i) = 6 Then
    $aSummer[0][1] = _DateTimeFormat($iYEAR & '/10/' & $i, 2)
    $aSummer[1][1] = $aSummer[0][1]
    EndIf
    Next
    EndSwitch
    Return $aSummer
    EndFunc ;==>_Date_GetSummerTime

    [/autoit]

    Dateien

    _Date_GetSummerTime.au3 3,64 kB – 524 Downloads
  • nützliche funktionen!?

    • BugFix
    • 3. Mai 2008 um 11:20
    [autoit]

    #Include <WinAPI.au3>
    _WinAPI_LoWord()
    _WinAPI_HiWord()
    _WinAPI_MakeLong()
    _WinAPI_MakeDWord()

    [/autoit]
  • Entscheidungstabelle

    • BugFix
    • 3. Mai 2008 um 11:07

    Meinst du sowas: Entscheidungstabelle ?

    Das läßt sich mit verschiedenen Statements lösen.
    If...Then, If...Else...EndIf, Switch...EndSwitch, Select...EndSelect

    Nur verstehe ich nicht, was du mit "soll aus der Entscheidungstabelle ein autoit-Script erstellen" meinst.
    Soll das ein Code-Generator sein?
    Erkläre bitte etwas deutlicher.

  • Do ---> Until ???

    • BugFix
    • 2. Mai 2008 um 21:03

    Falscher Ansatz

    2 GUI erstellen, mit GUIGetMsg(1) werden GUI und Event zurückgegeben.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>

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

    $MainGUI = GUICreate("Test",500,500)
    $1 = GUICtrlCreateButton("HIII",1,1)

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

    $Dialog_1 = GUICreate("Sind sie sich Sicher?",366,117)
    $Dialog_1_Button_1 = GUICtrlCreateButton("Ja",58,88,64,23)
    $Dialog_1_Button_2 = GUICtrlCreateButton("Nein",238,88,64,23)

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

    GUISetState(@SW_SHOW, $MainGUI)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; Window Handle
    Case $MainGUI
    Switch $msg[0] ; Event
    Case $gui_event_close
    Exit
    Case $1
    GUISetState(@SW_HIDE, $MainGUI)
    GUISetState(@SW_SHOW, $Dialog_1)
    EndSwitch
    Case $Dialog_1
    Switch $msg[0]
    Case $gui_event_close
    GUISetState(@SW_SHOW, $MainGUI)
    GUISetState(@SW_HIDE, $Dialog_1)
    Case $Dialog_1_Button_1
    MsgBox(0, '', 'Button1')
    GUISetState(@SW_SHOW, $MainGUI)
    GUISetState(@SW_HIDE, $Dialog_1)
    Case $Dialog_1_Button_2
    MsgBox(0, '', 'Button2')
    GUISetState(@SW_SHOW, $MainGUI)
    GUISetState(@SW_HIDE, $Dialog_1)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • mehre exe-dateien einbinden und ausführen OHNE auf Festplatte auszulagern!

    • BugFix
    • 1. Mai 2008 um 22:42
    Zitat von WhiteLion

    gibt es eine möglichkeit die exe-dateien direkt in´s ram zu laden und dann auszuführen!?

    Habe es noch nicht selbst ausgeführt, aber mit Erstellen eines RAM-Drives sollte das möglich sein. Die erforderliche Software kannst du ja in dein Projekt einbinden. RAM-Drive erstellen, EXE dorthin installieren und ausführen. Soweit ich mich erinnern kann, waren die für Windows erhältlichen Freeware RAM-Drive Treiber aber sehr begrenzt von der zu reservierenden Speichermenge. Da muß man halt neidvoll eingestehen: Ein Windows ist nun mal kein Linux. ;)

  • nach resizing: setcolor bei Graphiccontrol - wtf

    • BugFix
    • 1. Mai 2008 um 22:31

    Versuch mal

    [autoit]

    GUICtrlSetGraphic ( controlID, $GUI_GR_REFRESH )

    [/autoit]
  • 2te Gui öffnen

    • BugFix
    • 1. Mai 2008 um 18:40

    Ja, geht auch mit GUIGetMsg. Dann aber im Advanced-Msg Mode, damit du abfragen kannst, von welcher GUI deine Events kommen.

  • 2te Gui öffnen

    • BugFix
    • 1. Mai 2008 um 17:07

    Hi,
    das war aber mit Kanonen auf Spatzen... ;)

    Er will doch nur, dass eine 2.te GUI aufpoppt.
    Etwas einfacher:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    $gui1 = GUICreate('GUI 1')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI1_close')
    $btn = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
    GUICtrlSetOnEvent(-1, 'ClickButton')

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

    $gui2 = GUICreate('GUI 2')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI2_close')

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

    GUISetState(@SW_SHOW, $gui1)

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

    While True
    Sleep(100)
    WEnd

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

    Func GUI1_close()
    Exit
    EndFunc

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

    Func GUI2_close()
    GUISetState(@SW_HIDE, $gui2)
    EndFunc

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

    Func ClickButton()
    GUISetState(@SW_SHOW, $gui2)
    EndFunc

    [/autoit]
  • SQLiteMore.au3

    • BugFix
    • 1. Mai 2008 um 16:55

    Hi,
    da SQLite seine Stärken dann ausspielen kann, wenn viele Operationen auf einen Schlag abgearbeitet werden sollen, ist es wenig sinnvoll jeden INSERT- oder UPDATE-Vorgang separat zu coden.
    Mit den UDF _SQLite_INSERT() und _SQLite_UPDATE() besteht die Möglichkeit weitestgehend ohne SQL-Syntax zu arbeiten (außer WHERE-Klausel bei UPDATE).
    Die Daten können als String (Einzeloperation) oder als Array übergeben werden.
    Ich denke, das spart eine ganze Menge Schreibarbeit. ;)

    Edit 11.05.2014
    Ich habe mal wieder etwas mit SQLite gearbeitet und dabei sind einige neue Dinge angefallen ;)
    - INSERT kpl. neu
    - weitere Funktionen hinzugefügt

    Funktionen
    Code
    _SQLite_TableExists
    	Prüft eine Tabelle auf Existenz (True/False)
    
    
    _SQLite_SelectAll
    	Wählt alle Felder einer Tabelle für eine bestimmte Bedingung aus (2D-Ergebnisarray)
    	(ohne Bedingung wird die gesamte Tabelle ausgegeben)
    
    
    _SQLite_CountRows
    	Ermittelt die Anzahl Datensätze in einer Tabelle
    
    
    _SQLite_ColumnsInfo
    	Ermittelt Anzahl Felder einer Tabelle und/oder Feldnamen oder Datentypen
    
    
    _SQLite_INSERT
    	Fügt einen oder mehrere DS in die angegebene Tabelle ein.
            Es kann ein String oder 1D-Array übergeben werden (einzelner DS) oder ein 2D-Array (mehrere DS)
    
    
    _SQLite_UPDATE  (unverändert)
    	Führt ein UPDATE für eine oder mehrere Spalten einer angegebenen
    	Tabelle, mit oder ohne Bedingung (WHERE) aus.
    	Die UPDATE-Angaben können als String (einzelne Spalte) oder Array
    	übergeben werden. Es wird erst die Spalte, dann der neue Wert,
    	getrennt durch $Delim (Standard ',') übergeben.
    	Wird keine WHERE-Klausel übergeben, wird die Operation in ALLEN DS
    	ausgeführt! Es braucht nur die reine Klausel (z.B.: ORT = 'Hamburg')
    	übergeben werden, nicht das Schlüsselwort.
    
    
            z.B. _SQLite_UPDATE('Kunden', 'ORT,Neu-Grünberg', 'PLZ = 99881')
                Local $aUpdate[4] = ['STRASSE,Grundweg 12','PLZ,34366','ORT,Hinterm Berg','TEL,04466-3356']
                _SQLite_UPDATE('Kunden', $aUpdate, "NAME = 'Kunze' AND PLZ = 34345")
    Alles anzeigen
    SQLiteMore.au3 (v0.2)
    [autoit]


    ;===================================================================================================
    ; Function Name....: _SQLite_TableExists
    ; Description......: Prüft eine Tabelle auf Existenz
    ; Parameter(s).....: $_sTable Tabellenname
    ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB
    ; .................: #include <SQLite.au3>
    ; Return Value(s)..: Erfolg: True / False
    ; .................: Fehler: False, @error = 1, @extended = SQLite-@error
    ; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_TableExists($_sTable)
    Local $hQuery, $aQuery, $fRet = False, $sErr
    If $SQLITE_OK <> _SQLite_Query(-1, "SELECT name FROM sqlite_master WHERE type='table'", $hQuery) Then
    $sErr = _SQLite_ErrCode()
    _SQLite_QueryFinalize($hQuery)
    Return SetError(1,$sErr,False)
    EndIf
    While _SQLite_FetchData($hQuery, $aQuery) = $SQLITE_OK
    If $aQuery[0] = $_sTable Then
    $fRet = True
    ExitLoop
    EndIf
    WEnd
    _SQLite_QueryFinalize($hQuery)
    Return $fRet
    EndFunc ;==>_SQLite_TableExists

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

    ;===================================================================================================
    ; Function Name....: _SQLite_SelectAll
    ; Description......: Wählt alle Felder einer Tabelle für eine gegebene Bedingung aus
    ; Parameter(s).....: $_sTable Tabellenname
    ; .................: $_sWhere WHERE - Bedingung ohne Schlüsselwort (Standard='', gibt gesamte Tabelle aus)
    ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB
    ; .................: #include <SQLite.au3>
    ; Return Value(s)..: Erfolg: Ergebnisarray
    ; .................: Fehler: 1, @error = 1, @extended = SQLite-@error
    ; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_SelectAll($_sTable, $_sWhere='')
    If $_sWhere <> '' Then $_sWhere = " WHERE " & StringRegExpReplace($_sWhere, '([^;]+)([;]*)$', '$1;')
    Local $aResult, $iRows, $iColumns
    If $SQLITE_OK <> _SQLite_GetTable2d(-1, "SELECT * FROM " & $_sTable & $_sWhere, $aResult, $iRows, $iColumns) Then
    Return SetError(1,_SQLite_ErrCode(),1)
    Else
    Return $aResult
    EndIf
    EndFunc ;==>_SQLite_SelectAll

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

    ;===================================================================================================
    ; Function Name....: _SQLite_CountRows
    ; Description......: Ermittelt die Anzahl von Datensätzen für eine Tabelle
    ; Parameter(s).....: $_sTable Tabellenname
    ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB
    ; .................: #include <SQLite.au3>
    ; Return Value(s)..: Erfolg: Anzahl der Datensätze
    ; .................: Fehler: -1 @error = 1, @extended = SQLite-@error
    ; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_CountRows($_sTable)
    Local $hQuery, $aQuery, $iRet = 0, $iErr
    If $SQLITE_OK <>_SQLite_Query(-1, "SELECT count(*) FROM " & $_sTable & ";", $hQuery) Then
    $iErr = _SQLite_ErrCode()
    _SQLite_QueryFinalize($hQuery)
    Return SetError(1,$iErr,-1)
    EndIf
    While _SQLite_FetchData($hQuery, $aQuery) = $SQLITE_OK
    $iRet = $aQuery[0]
    WEnd
    _SQLite_QueryFinalize($hQuery)
    Return $iRet
    EndFunc ;==>_SQLite_CountRows

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

    ;===================================================================================================
    ; Function Name....: _SQLite_ColumnsInfo
    ; Description......: Ermittelt die Anzahl von Spalten für eine Tabelle, optional auch Namen oder Typen der Spalten
    ; Parameter(s).....: $_sTable Tabellenname
    ; ....optional.....: $_iNames 0 (Standard) - nur Anzahl
    ; .................: 1 - gibt Array mit Spaltennamen und Anzahl an Index 0 zurück.
    ; .................: 2 - gibt Array mit Spaltentypen und Anzahl an Index 0 zurück.
    ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB
    ; .................: #include <SQLite.au3>
    ; Return Value(s)..: Erfolg: Anzahl der Spalten oder Array mit Anzahl und allen Spaltennamen/-Typen
    ; .................: Fehler: -1 @error = 1, @extended = SQLite-@error
    ; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_ColumnsInfo($_sTable, $_iNames=0)
    Local $hQuery, $aQuery, $cid, $sCol = '', $sTypes = '', $iErr
    If $SQLITE_OK <> _SQLite_Query(-1, "PRAGMA table_info(" & $_sTable & ");", $hQuery) Then
    $iErr = _SQLite_ErrCode()
    _SQLite_QueryFinalize($hQuery)
    Return SetError(1,$iErr,-1)
    EndIf
    While _SQLite_FetchData($hQuery, $aQuery) = $SQLITE_OK
    $cid = $aQuery[0]
    If $sCol <> '' Then $sCol &= ','
    If $sTypes <> '' Then $sTypes &= ','
    $sCol &= $aQuery[1]
    $sTypes &= $aQuery[2]
    WEnd
    _SQLite_QueryFinalize($hQuery)
    Switch $_iNames
    Case 0
    Return $cid +1
    Case 1
    Return StringSplit($sCol, ',')
    Case 2
    Return StringSplit($sTypes, ',')
    EndSwitch
    EndFunc ;==>_SQLite_ColumnsInfo

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

    ;===================================================================================================
    ; Function Name....: _SQLite_INSERT
    ; Description......: Fügt Daten aus einem String/1D-Array/2D-Array in eine Tabelle ein. Leere Inhalte werden automatisch mit "NULL" besetzt
    ; Parameter(s).....: $_sTable Tabellenname
    ; .................: $_vValues String/Array mit Werten
    ; ....optional.....: $_iIndexStart Array-Index ab dem Werte übernommen werden. (Standard=0)
    ; ....optional.....: $_sDelim Trennzeichen, wenn $_vValues ein String ist. (Standard=',')
    ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB
    ; .................: #include <SQLite.au3>
    ; .................: _SQLite_ColumnsInfo()
    ; Return Value(s)..: Erfolg: $SQLITE_OK
    ; .................: Fehler: 1 @error = 1 übergebene Spaltenzahl falsch
    ; .................: @error = 2 Insert fehlgeschlagen @extended = Insert-@error
    ; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_INSERT($_sTable, $_vValues, $_iIndexStart=0, $_sDelim=',')
    If Not IsArray($_vValues) Then $_vValues = StringSplit($_vValues, $_sDelim, 3)
    Local $aValues[1][UBound($_vValues-$_iIndexStart)]
    If UBound($_vValues,0) = 1 Then
    For $i = $_iIndexStart To UBound($_vValues) -1
    $aValues[0][$i] = $_vValues[$i]
    Next
    Else
    $aValues = $_vValues
    EndIf
    Local $sSQL = 'BEGIN TRANSACTION;', $sEdge, $iColTable = -1
    Local $iColArray = UBound($aValues,2), $sValue
    Local $aTypes = _SQLite_ColumnsInfo($_sTable, 2)
    If IsArray($aTypes) Then $iColTable = $aTypes[0]
    If $iColTable = -1 Or ($iColTable <> $iColArray) Then Return SetError(1,0,1)
    For $i = $_iIndexStart To UBound($aValues) -1
    $sSQL &= 'INSERT INTO ' & $_sTable & ' VALUES ('
    For $j = 0 To $iColArray -1
    $sValue = $aValues[$i][$j]
    If $sValue = '' Then
    $sValue = 'NULL'
    Else
    $sEdge = '"'
    If $aTypes[$j+1] <> 'TEXT' Then $sEdge = ''
    $sValue = $sEdge & $sValue & $sEdge
    EndIf
    $sSQL &= $sValue & ','
    Next
    $sSQL = StringTrimRight($sSQL, 1) & ');'
    Next
    $sSQL &= 'END TRANSACTION;'
    If $SQLITE_OK <> _SQLite_Exec(-1, $sSQL) Then
    Return SetError(2,_SQLite_ErrCode(),1)
    Else
    Return $SQLITE_OK
    EndIf
    EndFunc ;==>_SQLite_INSERT

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

    ;===================================================================================================
    ; Function Name: _SQLite_UPDATE($sTable, $saField_Value, $sWhere=-1, $Delim=',')
    ; Description:: Updatet Werte in eine existierende Tabelle einer geöffneten SQLite
    ; DB
    ; Parameter(s): $sTable String des Tabellennamens
    ; $saFieldValue String ODER 1D-Array mit den Feld-Wert Paaren
    ; $sWhere Bedingung für das SQL-Statement, Standard -1
    ; gültig für alle DS
    ; $Delim Trennzeichen zwischen Feld und Wert, Standard:','
    ; Requirement(s): Eine mit _SQLite_Open() geöffnete DB
    ; #include <SQLite.au3>
    ; Return Value(s): Erfolg $SQLITE_OK
    ; Fehler 1 @error = 1, Update fehlgeschlagen
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _SQLite_UPDATE($sTable, $saField_Value, $sWhere=-1, $Delim=',')
    Local $sUpdate = "UPDATE " & $sTable & " SET "
    If Not IsArray($saField_Value) Then
    Local $aValues[1] = [$saField_Value]
    Else
    Local $aValues = $saField_Value
    EndIf
    For $i = 0 To UBound($aValues) -1
    Local $splitVal = StringSplit($aValues[$i], $Delim)
    $sUpdate &= StringStripWS($splitVal[1], 3) & " = '" & StringStripWS($splitVal[2], 3) & "',"
    Next
    $sUpdate = StringTrimRight($sUpdate, 1)
    If $sWhere <> -1 Then $sUpdate &= " WHERE " & $sWhere
    If $SQLITE_OK <> _SQLite_Exec ( -1, $sUpdate ) Then
    Return SetError(1,0,1)
    Else
    Return $SQLITE_OK
    EndIf
    EndFunc ;==>_SQLite_UPDATE

    [/autoit]
    Beispielskript
    [autoit]


    #include <SQLite.au3>
    _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1) ; == SQLite.dll liegt im @ScriptDir
    _SQLite_Open(@ScriptDir & '\test.db')

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

    $sSQL = _
    "CREATE TABLE IF NOT EXISTS [test_tab] (" & _
    "[kdnr] INTEGER PRIMARY KEY AUTOINCREMENT," & _
    "[titel] TEXT," & _
    "[firma] TEXT," & _
    "[name] TEXT NOT NULL," & _
    "[vorname] TEXT," & _
    "[strasse] TEXT," & _
    "[nr] TEXT," & _
    "[plz] TEXT," & _
    "[ort] TEXT," & _
    "[telefon] TEXT," & _
    "[gebdat] TEXT);" & _
    "INSERT INTO sqlite_sequence VALUES ('test_tab', 9999);" ; == Vorbelegung KD-Nr Startwert, gewünscht: 10000 (9999 +1 autoincrement = 10000)

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

    ; == Tabelle erstellen, wenn nicht vorhanden und Startwert setzen für AutoIncrement-Wert
    If Not _SQLite_TableExists('test_tab') Then
    _SQLite_Exec(-1, $sSQL)
    ConsoleWrite('Tabelle erstellt' & @LF)
    EndIf

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

    ; == INSERT einzelner DS als String
    $sInsert = ",Dr.,Musterbau AG,Schmidt,Holger,Hauptstrasse,21,06218,Halle,,"

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

    If $SQLITE_OK <> _SQLite_INSERT('test_tab', $sInsert) Then
    MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
    Exit
    EndIf

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

    ; == INSERT einzelner DS als 1D-Array
    Global $aInsert1D[11] = ['','','Hanswurst GmbH','Wurst','Hans','Ledergasse','15','12345','Bratenau','01122-334455','']

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

    If $SQLITE_OK <> _SQLite_INSERT('test_tab', $aInsert1D) Then
    MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
    Exit
    EndIf

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

    ; == INSERT mehrere DS als 2D-Array
    Global $aInsert[8][11] = [ _
    ['','','Spökenkieker KG','Schluck','Hein','An der Twiete','1a','21023','Hamburg','040-646589',''], _
    ['','','Ich & Du GmbH','Meyer','Peter und Paul','Randstrasse','114','45678','Amsee','',''], _
    ['','','Tischlerei Buchenhorst','Buchenhorst','Klaus-Peter','Am Wald','36','87663','Waldershausen','',''], _
    ['','','Glaserei Bruch','Bruch','Reiner','Industriegasse','17','39864','Dorf in der Altmark','',''], _
    ['','','KFZ-Reparatur Stotter','Stotter','Ingolf','Amselgrund','8','76542','Schönhausen','',''], _
    ['','','Blumen & Mehr','Rose','Claudia','Kirschgarten','36','15446','Bei Berlin','010-152637',''], _
    ['','','Einzelhandel Ton, Steine, Scherben','Krug','Minna','Krügergasse','78','64459','Neudorf','',''], _
    ['','','Diätwaren','Tella','Nu','Am Süßen See','10','06224','Halle','','']]

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

    If $SQLITE_OK <> _SQLite_INSERT('test_tab', $aInsert) Then
    MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
    Exit
    EndIf

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

    ; == die gesamte Tabelle mit _SQLite_SelectAll ausgeben
    $a = _SQLite_SelectAll('test_tab')
    _ArrayDisplay($a, 'alle Datensätze')

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

    ; == alle Felder für die DS mit der gegebenen Bedingung ausgeben
    $a = _SQLite_SelectAll('test_tab', 'ort="Halle"')
    _ArrayDisplay($a, 'Datensätze mit Bedingung')

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

    ; == Anzahl DS
    $DS = _SQLite_CountRows('test_tab')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $DS --> " & $DS & @LF)

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

    ; == Anzahl Spalten
    $Spaltenzahl = _SQLite_ColumnsInfo('test_tab')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $Spaltenzahl --> " & $Spaltenzahl & @LF)

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

    ; == Feldnamen
    $a = _SQLite_ColumnsInfo('test_tab', 1)
    _ArrayDisplay($a, 'Feldnamen')

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

    ; == Feldtypen
    $a = _SQLite_ColumnsInfo('test_tab', 2)
    _ArrayDisplay($a, 'Feldtypen')

    [/autoit]

    DL bisher: 399

    Dateien

    SQLiteMore[0.2].au3 12,16 kB – 705 Downloads
  • _GUICtrlListView Fragen

    • BugFix
    • 1. Mai 2008 um 10:43

    Hi,
    hier mal ein Bsp. für einfache Sortierung durch Spaltenklick (kannst das natürlich auch anders auslösen).
    Hab auch mal das Auslesen des Inhalts eines angeklickten Spaltenwertes eingefügt.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
    _GUICtrlListView_SetColumnWidth(-1, 0, 148)
    _GUICtrlListView_SetColumnWidth(-1, 1, 148)
    For $i = 65 To 75
    GUICtrlCreateListViewItem('Zeile ' & Chr($i) & ' - Spalte 1|Zeile ' & Chr($i) & ' - Spalte 2', $hListView)
    Next
    GUISetState()

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

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($hListView) ]
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _LeftClick($Info)
    MsgBox(0, 'Text in Spalte ' & $Info[4]+1, _GUICtrlListView_GetItemText($Info[1], $Info[3], $Info[4]) )
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort ($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[12] = [$hWndFrom, _
    $iIDFrom, _
    $iCode, _
    DllStructGetData($tInfo, "Index"), _
    DllStructGetData($tInfo, "SubItem"), _
    DllStructGetData($tInfo, "NewState"), _
    DllStructGetData($tInfo, "OldState"), _
    DllStructGetData($tInfo, "Changed"), _
    DllStructGetData($tInfo, "ActionX"), _
    DllStructGetData($tInfo, "ActionY"), _
    DllStructGetData($tInfo, "lParam"), _
    DllStructGetData($tInfo, "KeyFlags")]
    _LeftClick($aInfo)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • Seriendatenbank

    • BugFix
    • 29. April 2008 um 09:33
    Zitat von Masterraven9

    wie erstelle ich zum Beispiel dynamisch erzeugte Buttons inkl. Funktion oder hat vll einer eine bessere Idee wie man das aufteilen/anzeigen könnte.


    Wozu so umständlich? GUI mit Input für Suchbegriff, Button für Suche starten, ListView für Ergebnisse.
    Details zu den Einträgen kannst du dann z.B. per Doppelklick auf die Spalte abfragen und in einem aufpoppenden GUI wiedergeben.

    Den Punkt 'Einbau einer Suchfunktion' kann ich nicht so recht nachvollziehen. Du hast doch eine SQL-DB. Also brauchst du doch nur eine entsprechende SQL-Abfrage starten.
    Wenn die Anbindung von MySQL an AutoIt nicht klappen sollte, exportiere doch deine Daten in eine SQLite Datenbank, dafür ist das Management unter AutoIt gewährleistet.

  • ini-Datei wird nicht initialisiert

    • BugFix
    • 29. April 2008 um 09:21

    Also der Run()-Befehl hat mit deiner INI defacto gar nix zu tun.
    Run startet nur die EXE. Der Zugriff auf die INI erfolgt durch die EXE selber.
    Wird denn die EXE überhaupt gestartet? Run gibt die PID des Prozesses zurück - mal gecheckt?
    Die simpelsten Fehler treten übrigens am häufigsten auf, z.B. falsche Schreibweise des Pfades. ;)

  • Wortspiel

    • BugFix
    • 28. April 2008 um 19:13
    Zitat von Hilfe zu Random

    Flag [optional] If this is set to 1 then an integer result will be returned. Default is a floating point number.

  • festgelegte zeit = tastendruck

    • BugFix
    • 28. April 2008 um 17:55

    Guckst du:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("test", 221, 383, 434, 271)
    $Label1 = GUICtrlCreateLabel("lalala", 16, 8, 106, 17)
    $Input1 = GUICtrlCreateInput("", 96, 48, 41, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Checkbox1 = GUICtrlCreateCheckbox("", 64, 48, 17, 17)
    $Button1 = GUICtrlCreateButton("Start", 24, 336, 75, 25, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Checkbox1
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) Then
    GUICtrlSetState($Input1, $GUI_ENABLE)
    Else
    GUICtrlSetState($Input1, $GUI_DISABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Verschiedene Punkte aus Array auslesen

    • BugFix
    • 28. April 2008 um 17:27
    Zitat

    Vielleicht könnte ja auch jemand anders ma helfen als progandy


    Progandy hat mehrfach daraufhin gewiesen, dass ohne konkrete Angaben keine Hilfe erfolgen kann.
    Deine Angaben sind sehr schwammig. Es könnte dies oder jenes oder ganz was andres in Row[0] stehen :S
    Suche selber erst mal etwas festes in deinem Konstrukt, also einen Wert der definitiv bei einer bestimmten Situation immer auftaucht. Wenn du nur variable Zustände hast, kannst du kein allgemeingültiges Programm erstellen. Punkt

  • Radio & Checkboxen

    • BugFix
    • 25. April 2008 um 23:11

    OK, dann erst mal was zur Erklärung.
    Radiobutton und Checkboxen werden auf $GUI_CHECKED bzw $GUI_UNCHECKED (also markiert/nicht markiert) geprüft.
    In einer GUIGetMsg-Konstruktion erhältst du von diesen Controls keine Msg - du mußt über einen Button die Abfrage auslösen.
    - Bei Radiobutton kann immer nur einer (in einer Gruppe) markiert sein. Wenn nur eine Gruppe Radiobutton auf der GUI ist, ist das Anlegen einer Group nicht erforderlich - aber empfehlenswert schon wegen der Optik.
    - Checkboxen können unabhängig voneinander markiert werden.

    Die Abfrage erfolgt für beide Controls identisch. Es gibt mehrere Formen der Abfrage, jedoch rate ich zu folgender:

    [autoit]

    If BitAnd(GUICtrlRead($Control), $GUI_CHECKED) Then

    [/autoit]

    Na dann probier mal weiter :)

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™