Hatte mir einen Fehler bei der Septemberrechnung eingebaut. Ist nun beseitigt. ![]()
Beiträge von BugFix
-
-
LOL, dahaddu Recht

-
Mir ist $tagRGBQUAD nicht ganz klar.
Laut Definition muß $tagBITMAPINFOHEADER als letzten Parameter dword RGBQuad enthalten.
-
-
Also, wenn schon meckern, dann bitte gründlich.

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 1hFü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];==================================================================================================
[/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]
#Include <WinAPI.au3>
[/autoit]
_WinAPI_LoWord()
_WinAPI_HiWord()
_WinAPI_MakeLong()
_WinAPI_MakeDWord() -
Meinst du sowas: Entscheidungstabelle ?
Das läßt sich mit verschiedenen Statements lösen.
If...Then, If...Else...EndIf, Switch...EndSwitch, Select...EndSelectNur 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. -
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)
[/autoit] [autoit][/autoit] [autoit]
$1 = GUICtrlCreateButton("HIII",1,1)$Dialog_1 = GUICreate("Sind sie sich Sicher?",366,117)
[/autoit] [autoit][/autoit] [autoit]
$Dialog_1_Button_1 = GUICtrlCreateButton("Ja",58,88,64,23)
$Dialog_1_Button_2 = GUICtrlCreateButton("Nein",238,88,64,23)GUISetState(@SW_SHOW, $MainGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$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 -
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.

-
Versuch mal
[autoit]GUICtrlSetGraphic ( controlID, $GUI_GR_REFRESH )
[/autoit] -
Ja, geht auch mit GUIGetMsg. Dann aber im Advanced-Msg Mode, damit du abfragen kannst, von welcher GUI deine Events kommen.
-
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>
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)$gui1 = GUICreate('GUI 1')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI1_close')
$btn = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
GUICtrlSetOnEvent(-1, 'ClickButton')$gui2 = GUICreate('GUI 2')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI2_close')GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc GUI1_close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc GUI2_close()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $gui2)
EndFuncFunc ClickButton()
[/autoit]
GUISetState(@SW_SHOW, $gui2)
EndFunc -
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ügtFunktionen
Code
Alles anzeigen_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")SQLiteMore.au3 (v0.2)
[autoit]
[/autoit] [autoit][/autoit] [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]
; 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_UPDATEBeispielskript
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.au3>
_SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1) ; == SQLite.dll liegt im @ScriptDir
_SQLite_Open(@ScriptDir & '\test.db')$sSQL = _
[/autoit] [autoit][/autoit] [autoit]
"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); == Tabelle erstellen, wenn nicht vorhanden und Startwert setzen für AutoIncrement-Wert
[/autoit] [autoit][/autoit] [autoit]
If Not _SQLite_TableExists('test_tab') Then
_SQLite_Exec(-1, $sSQL)
ConsoleWrite('Tabelle erstellt' & @LF)
EndIf; == INSERT einzelner DS als String
[/autoit] [autoit][/autoit] [autoit]
$sInsert = ",Dr.,Musterbau AG,Schmidt,Holger,Hauptstrasse,21,06218,Halle,,"If $SQLITE_OK <> _SQLite_INSERT('test_tab', $sInsert) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
Exit
EndIf; == INSERT einzelner DS als 1D-Array
[/autoit] [autoit][/autoit] [autoit]
Global $aInsert1D[11] = ['','','Hanswurst GmbH','Wurst','Hans','Ledergasse','15','12345','Bratenau','01122-334455','']If $SQLITE_OK <> _SQLite_INSERT('test_tab', $aInsert1D) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
Exit
EndIf; == INSERT mehrere DS als 2D-Array
[/autoit] [autoit][/autoit] [autoit]
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','','']]If $SQLITE_OK <> _SQLite_INSERT('test_tab', $aInsert) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Fehler INSERT', 'Fehler-Nr.: ' & _SQLite_ErrCode() & @CRLF & @CRLF & 'Fehler-Text: ' & _SQLite_ErrMsg())
Exit
EndIf; == die gesamte Tabelle mit _SQLite_SelectAll ausgeben
[/autoit] [autoit][/autoit] [autoit]
$a = _SQLite_SelectAll('test_tab')
_ArrayDisplay($a, 'alle Datensätze'); == alle Felder für die DS mit der gegebenen Bedingung ausgeben
[/autoit] [autoit][/autoit] [autoit]
$a = _SQLite_SelectAll('test_tab', 'ort="Halle"')
_ArrayDisplay($a, 'Datensätze mit Bedingung'); == Anzahl DS
[/autoit] [autoit][/autoit] [autoit]
$DS = _SQLite_CountRows('test_tab')
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $DS --> " & $DS & @LF); == Anzahl Spalten
[/autoit] [autoit][/autoit] [autoit]
$Spaltenzahl = _SQLite_ColumnsInfo('test_tab')
ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $Spaltenzahl --> " & $Spaltenzahl & @LF); == Feldnamen
[/autoit] [autoit][/autoit] [autoit]
$a = _SQLite_ColumnsInfo('test_tab', 1)
_ArrayDisplay($a, 'Feldnamen'); == Feldtypen
[/autoit]
$a = _SQLite_ColumnsInfo('test_tab', 2)
_ArrayDisplay($a, 'Feldtypen')DL bisher: 399
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIListView.au3>$gui = GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
$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()Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($hListView) ]
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")Do
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSEFunc _LeftClick($Info)
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Text in Spalte ' & $Info[4]+1, _GUICtrlListView_GetItemText($Info[1], $Info[3], $Info[4]) )
EndFuncFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit]
$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 -
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. -
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.
-
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.
-
Guckst du:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("test", 221, 383, 434, 271)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$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 -
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
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 -
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
