Ich wünsche euch beiden auch alles Gute und feiert schön! ![]()
Beiträge von Oscar
-
-
Vielleicht reicht Dir das:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>$aDrives = _CI_GetHarddrives()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aDrives)Func _CI_GetHarddrives($strComputer = '.')
[/autoit] [autoit][/autoit] [autoit]
Local $aReturn[1][7] = [[ _
'Bezeichnung:', 'Größe:', 'Anschluss:', 'Bytes/Sektor:', 'Anzahl der Sektoren:', _
'PNPDeviceID:', 'Status:']]
Local $x = 0, $objWMIService, $colItems
$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$x += 1
ReDim $aReturn[$x + 1][7]
$aReturn[$x][0] = $objItem.Model
$aReturn[$x][1] = _ByteAutoSize($objItem.Size)
$aReturn[$x][2] = $objItem.InterfaceType
$aReturn[$x][3] = $objItem.BytesPerSector
$aReturn[$x][4] = $objItem.TotalSectors
$aReturn[$x][5] = $objItem.PNPDeviceID
$aReturn[$x][6] = $objItem.Status
Next
EndIf
Return $aReturn
EndFunc ;==>_CI_GetHarddrives;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
; Parameter(s): $iSize = Größe in Byte übergeben
; $iRound = Anzahl der Nachkommastellen (0...8)
; $iFormat = bestimmt den Rückgabewert
; 0 = Automatisch (je nach übergebenen Wert)
; 1 = in Byte
; 2 = in KByte
; 3 = in MByte
; 4 = in GByte
; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
; Requirement(s): #include <String.au3>
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
If $iRound < 0 Or $iRound > 8 Then $iRound = 2
If Not IsBool($bThousands) Then $bThousands = False
$iSize = Abs($iSize)
If $iFormat = 0 Then
For $i = 30 To 0 Step -10
If $iSize > (2 ^ $i) Then
$iFormat = $i / 10 + 1
ExitLoop
EndIf
Next
EndIf
If $iFormat = 0 Then $iFormat = 1
$sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
Return $sReturn & $aSize[$iFormat - 1]
EndFunc ;==>_ByteAutoSize; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: _StringAddThousandsSep
; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
; Parameters ....: $sString - The string to be converted.
; $sThousands - Optional: The Thousands delimiter
; $sDecimal - Optional: The decimal delimiter
; Return values .: Success - The string with Thousands delimiter added.
; Author ........: SmOke_N (orignal _StringAddComma
; Modified.......: Valik (complete re-write, new function name)
; ===============================================================================================================================
Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
Local $sResult = "" ; Force string
Local $rKey = "HKCU\Control Panel\International"
If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
If UBound($aNumber) = 2 Then
Local $sLeft = $aNumber[0]
While StringLen($sLeft)
$sResult = $sThousands & StringRight($sLeft, 3) & $sResult
$sLeft = StringTrimRight($sLeft, 3)
WEnd
$sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
EndIf
Return $sResult
EndFunc ;==>_StringAddThousandsSep -
Der "Fehler" tritt auf, weil Du $WS_MAXIMIZEBOX vergessen hast.
[autoit]
So geht es einwandfrei:
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Global $hGui = GUICreate("Test", @DesktopWidth, @DesktopHeight, 0, 0, BitOR($WS_CAPTION, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SYSMENU, $WS_MAXIMIZE), $WS_EX_COMPOSITED)
[/autoit][autoit][/autoit][autoit]
GUISetState()While 1
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd -
Für solche Zwecke kann man die Timer-UDF "missbrauchen".
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Timers.au3>
$hGui = GUICreate('Test')
$_Folder = @ScriptDir
$_Extension = "*.icl;*.ico"
$_Message = "Bitte wählen Sie eine ICL- Icon- Exe- oder DLL- Datei:"_Timer_SetTimer($hGui, 200, "_MoveDialogBox")
[/autoit] [autoit][/autoit] [autoit]$_Var = FileOpenDialog($_Message, $_Folder, "\Images (" & $_Extension & ")", 1 + 0)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _MoveDialogBox($hWnd, $Msg, $iIDTimer, $dwTime)
[/autoit]
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
If Not WinExists($_Message) Then Return
WinMove($_Message, '', 50, 50, 800, 480)
_Timer_KillAllTimers($hGui)
EndFunc
Funktioniert problemlos unter Win7 und mit der 3.3.8.1. -
Es gibt eine neue Version (siehe Post #1).
Alle drei Teile sind jetzt veränderbar und es gibt eine Screenshotfunktion des Kennzeichens. -
Ok, bei einem mehrdimensionalen Array geht das so nicht.
Aber in seinem Beispiel oben hat $a_task nur eine Dimension, deshalb... -
Es gibt auch noch die Möglichkeit alles, was man nicht braucht, ans Ende des Arrays zu verschieben und am Schluß ein ReDim zu machen. Hier ein Beispiel:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
Global $array[8] = ['a4', 'b5', 'c7', 'd5', 'e6', 'f5', 'g5', 'h6']
Global $iEnd = UBound($array) - 1, $i = 0
Do
If StringInStr($array[$i], '5') Then ; alle Einträge mit einer '5' sollen raus.
_Switch($array, $i, $iEnd)
$iEnd -= 1
Else
$i += 1
EndIf
Until $i > $iEnd
ReDim $array[$iEnd + 1]
_ArrayDisplay($array)Func _Switch(ByRef $array, $i, $j)
[/autoit]
Local $sTmp
$sTmp = $array[$i]
$array[$i] = $array[$j]
$array[$j] = $sTmp
EndFunc ;==>_Switch -
Bei BD und BW kommen die Zahlen ja an der nächsten Stelle, also getrennt von den Buchstaben. Die Kennzeichen sehen auch ganz anders aus (Gestaltung). Das wird mit der Eingabe blöd.
Ich denke, das lasse ich lieber bei den Buchstaben-Kürzeln. Die Landeskennungen (ohne Zahlen) habe ich jetzt mit aufgenommen, sowie die 0 und 1 für Bundespräsident und Co.
Für Stade gibt es STD, nicht SD. Das SD wurde nie eingeführt (siehe hier).
Das ST habe ich auch noch verbessert. Das steht ja mittlerweile für Steinfurt.
Hat noch jemand Verbesserungen, bevor ich die neue Version uploade? -
Welche gibt es denn noch?
Ich erweitere das gern noch.
-
Ich hätte da gleich mal was: LEO für Leonberg gibt es (momentan) nicht mehr; die Leonberger fahren gerade mit einem Böblinger Kennzeichen herum
Ja, diese "alten" Kennzeichen sind in dem Programm mit enthalten. Das sehe ich aber nicht unbedingt als Fehler an.
Hier in Hannover gab es z.B. auch das BU für Burgdorf. Die Burgdorfer fahren aber auch schon seit Jahren mit einem H im Kennzeichen (Nein, nicht das Oldtimer-Kennzeichen :D).
Fehler wären jetzt z.B. wenn bei Eingabe von BB Buddelbeck oder so rauskommen würde.
-
Ok, wenn die Höhe der Zeile es zuläßt, dann wird der Zeilenumbruch beachtet. Das kann in manchen Situationen als Workaround hilfreich sein, aber wenn das erst ab Win7 (Vista?) funktioniert...

-
Das Verhalten dürfte auch darauf zurückzuführen sein, dass Win7 einen Zwangsumbruch bei zu langen Einträgen macht. Was aber auch nur passiert, wenn Du ein Bild mit entsprechender Größe eingefügt hast.
Erzwingen kann man den Umbruch nicht. Siehe hier:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>GUICreate("Test", 640, 120, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZE, $WS_MAXIMIZEBOX))
[/autoit]
GUISetState(@SW_SHOW)
$ListView1 = GUICtrlCreateListView("Titel|Preis|Ort|Datum", 18, 27, 718, 590, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($ListView1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 396)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 80)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 130)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 90)
GUICtrlCreateListViewItem('ewrifgerwjewrsi|64€|regjfrei|rgrekmlmer', $ListView1)
GUISetState()
_GUICtrlListView_SetItem($ListView1, _Now() & @CRLF & 'Test', 0, 3);date
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE -
Hast Du mal ein Beispiel, wo das so sein soll?
Bei mir (Win7, 64 Bit) wird kein Zeilenumbruch angezeigt. -
Die -1 sind bei AutoIt gleich dem Default-Wert. Spielt hier aber keine Rolle. Du kannst auch irgendeinen Wert für die Größe eintragen.
Entscheidend ist der Style. -
Schau Dir mal in der Hilfe den Default-Style an:
Zitatdefault ( -1) : $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL
Wenn Du nun keine horizontale Scrollleiste haben möchtest, dann musst Du den Style entsprechend ohne $WS_HSCOLL setzen.
Zum Beispiel nur: $ES_AUTOVSCROLL + $WS_VSCROLL wie im Scriptbeispiel zu GUICtrlCreateEdit. -
So:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>GUICreate("Test", -1, -1, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZE, $WS_MAXIMIZEBOX))
[/autoit]
GUISetState(@SW_SHOW)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE -
Oha! Mit soviel Resonanz habe ich jetzt gar nicht gerechnet.
Eigentlich war das mehr so als kleines Tool gedacht, um mal schnell nachschauen zu können, woher der ein oder andere Autofahrer kommt.
An eine Halter-Datenbank habe ich nun gar nicht gedacht. Und das da jetzt eine Reform ansteht, bei der dann die alten Kennzeichen wieder eingeführt werden (können), habe ich gar nicht mitbekommen.
Ich habe aber auch die eigentlich schon ausgelaufenen Kennzeichen mit aufgenommen. Waren bei Wikipedia enthalten. Ob das jetzt vollständig ist, kann ich nicht sagen. Wer etwas entdeckt, was offensichtlich falsch ist, der kann das ja hier schreiben.
-
Version: 1.1 (18.10.2012)
Beschreibung:
Dieses Programm gibt bei Eingabe des deutschen Kfz-Kennzeichen den dazugehörigen Ort, Kreis oder Landkreis aus.Screenshot:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Neu in Version 1.1:
- Das Kennzeichen ist etwas breiter geworden.
- Man kann jetzt auch den zweiten und dritten Teil bearbeiten (hat aber keine Auswirkungen, ist nur zum spielen).
- Es gibt eine Screenshotfunktion, mit der man das Kennzeichen als JPG-Datei speichern kann.
- Ein paar kleine Fehler beseitigt.Vielen Dank an eukalyptus für die UDF "MemFont.au3"!
So konnte ich den Kfz-Kennzeichen-Font mit im Script integrieren.
Vielen Dank auch an funkey für die Funktion "_PlayDefaultSystemSound()".Das Script, die Exe und die benötigten Dateien (Bild, Icon, MemFont.au3) befinden sich im ZIP-Archiv (Anhang).
-
Wozu dann die Tempdatei?
Man kann doch gleich die vorhandene Datei mit den neuen Daten überschreiben.
-
Bist Du irgendwie mit Zattoo verwandt?
Wo ist das Script? Wie soll man euch helfen können, wenn man immer nur raten soll? [Kopf schüttel...]