Meinst Du so:
[autoit]
#include <Array.au3>
$sPath = @ScriptDir & "\index.dat"
$sData = FileRead($sPath)
$aRet = StringRegExp($sData, "(\d+:\s.+?@[[:print:]]+)", 3)
_ArrayDisplay($aRet)
Meinst Du so:
[autoit]
#include <Array.au3>
$sPath = @ScriptDir & "\index.dat"
$sData = FileRead($sPath)
$aRet = StringRegExp($sData, "(\d+:\s.+?@[[:print:]]+)", 3)
_ArrayDisplay($aRet)
Ich würde es so machen:
#include <Array.au3>
Dim $wert = 43
Dim $final = -1
Dim $avArray = StringSplit("23,57,13,59,73", ",", 2)
_ArraySort($avArray)
;~ _ArrayDisplay($avArray)
For $i = 0 To UBound($avArray) - 1
Select
Case $wert = $avArray[$i]
$final = $avArray[$i]
ExitLoop
Case $wert < $avArray[$i]
If ($avArray[$i] - $wert) < ($avArray[$i + 1] - $wert) Then
$final = $avArray[$i]
ExitLoop
Else
$final = $avArray[$i + 1]
ExitLoop
EndIf
EndSelect
Next
If $final = -1 Then $final = $avArray[UBound($avArray) - 1]
MsgBox(0, "", $final)
Oscar : Hast du nicht mal einen Link zu einem Tablet-PC für Studenten mit Linux gepostet unter 100€ ?
Äh? Nein! Jedenfalls kann ich mich nicht daran erinnern. ![]()
Ich habe auch gar keinen Tablet-PC oder ein Smartphone oder ein Netbook. Von daher ist es sehr unwahrscheinlich, dass ich mal so einen Link gepostet habe. ![]()
Zitat von der Website des Betreibers:
ZitatJegliches Weiterverbreiten oder Zitieren unserer Informationen -auch auszugsweise- bedarf der ausdrücklichen Genehmigung von clever-tanken.de.
Wenn Du eine solche Genehmigung nicht besitzt, ist dieses Skript leider nicht zulässig.
So habe ich es in meinem ComputerInfo gemacht:
Func _CI_GetHarddrives($strComputer = '.')
Local $aReturn[1][8] = [[ _
'Bezeichnung:', 'Größe:', 'Anschluss:', 'Bytes/Sektor:', 'Anzahl der Sektoren:', _
'PNPDeviceID:', 'Status:', 'Seriennr. (Hardware):']]
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][8]
$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
Switch @OSVersion
Case 'WIN_VISTA', 'WIN_7'
If Number($objItem.SerialNumber) > 0 Then
$aReturn[$x][7] = $objItem.SerialNumber & ' ("' & _CI_SerialToString($objItem.SerialNumber) & '")'
Else
$aReturn[$x][7] = 'nicht vorhanden'
EndIf
Case Else
$aReturn[$x][7] = 'Wird von ' & @OSVersion & ' nicht unterstützt!'
EndSwitch
Next
EndIf
Return $aReturn
EndFunc ;==>_CI_GetHarddrives
Func _CI_SerialToString($sSerial)
Local $sOut = ''
For $i = 1 To StringLen($sSerial) Step 2
$sOut &= Chr(Dec(StringMid($sSerial, $i, 2)))
Next
Return $sOut
EndFunc ;==>_CI_SerialToString
Hast Du es mal mit meiner GetMainboard-Funktion aus meinem ComputerInfo probiert?
#include <Array.au3>
$aMainboard = _CI_GetMainBoard()
_ArrayDisplay($aMainboard)
Func _CI_GetMainBoard($strComputer = '.')
Local $aReturn[2][12] = [[ _
'Hersteller:', 'Produkt:', 'Version:', 'Seriennummer:', 'Ext. Anschlüsse:', _
'Int. Anschlüsse:', '', 'BIOS-Hersteller:', 'Name:', 'Version:', 'Datum:', 'Seriennummer:']]
Local $x = 1, $objWMIService, $colItems, $sExtConnector = '', $sIntConnector = '', $sTmp
$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PortConnector', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$sTmp = $objItem.ExternalReferenceDesignator
If StringLen($sTmp) > 1 Then
$sExtConnector &= $sTmp & ' ** '
ContinueLoop
EndIf
$sTmp = $objItem.InternalReferenceDesignator
If StringLen($sTmp) > 1 Then $sIntConnector &= $sTmp & ' ** '
Next
EndIf
$sExtConnector = StringTrimRight($sExtConnector, 4)
$sIntConnector = StringTrimRight($sIntConnector, 4)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_BaseBoard', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$aReturn[$x][0] = $objItem.Manufacturer
$aReturn[$x][1] = $objItem.Product
$aReturn[$x][2] = $objItem.Version
$aReturn[$x][3] = $objItem.SerialNumber
$aReturn[$x][4] = $sExtConnector
$aReturn[$x][5] = $sIntConnector
Next
EndIf
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_BIOS', 'WQL', 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$aReturn[$x][7] = $objItem.Manufacturer
$aReturn[$x][8] = $objItem.Name
$aReturn[$x][9] = $objItem.BIOSVersion(0)
$aReturn[$x][10] = _WMIDateStringToDate($objItem.ReleaseDate)
$aReturn[$x][11] = $objItem.SerialNumber
Next
EndIf
Return $aReturn
EndFunc ;==>_CI_GetMainBoard
Func _WMIDateStringToDate($dtmDate)
Return (StringMid($dtmDate, 7, 2) & '.' & StringMid($dtmDate, 5, 2) & '.' & StringLeft($dtmDate, 4) _
& ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
EndFunc ;==>_WMIDateStringToDate
Noch ein kurzer Nachtrag:
Mein Rechner bootet jetzt innerhalb von einer Minute (genau 63 sek.), wobei einen Großteil (35 sek.) das BIOS verbrät. Anmerkung: Ich habe einen Fingerabdruckscanner, sodass ich mein Windows-Passwort nicht eingeben muss.
Und auch wie sich das Windows jetzt "anfühlt" gefällt mir sehr gut. Das starten der Programme geschieht auch viel schneller.
Alles in allem bin ich sehr zufrieden damit.
So eine SSD kann ich also weiterempfehlen (für diejenigen, die sie sich leisten können, da der Preis/GB ja doch relativ hoch ist).
Das habe ich mir damals archiviert:
; #FUNCTION# ====================================================================================================================
; 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)
; Remarks .......:
; Related .......:
; Link ..........;
; Example .......; Yes
; ===============================================================================================================================
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
Das flackern bekommst Du in den Griff, wenn Du die jeweilige Anzeige nur dann änderst, wenn sich auch der Wert ändert (bisherigen Wert in einer Variablen speichern und dann mit dem neuen Wert vergleichen).
Die Prozentwerte solltest Du auch auf ein oder zwei Stellen nach dem Komma runden.
Ansonsten: schönes Skript! ![]()
Progandy hatte damals (für mein Bildschirm-Lineal) ein cooles Skript-Beispiel gepostet: Bildschirm-Lineal (mm/cm)
Hast Du es mal mit SendKeepActive versucht?
Möglicherweise muss das Fenster während des Send aktiv sein.
Beim schreiben und testen meines Skripts ist mir aber auch aufgefallen, dass diese BIOS-Daten keineswegs immer vollständig ausgefüllt sind.
Ich würde mal vermuten, dass die bei AIDA eine eigene ID (mit Datenbank) verwenden, die anhand der verbauten Chipsätze/Slots/CPU/Controller etc. generiert wird.
Wenn es sich "nur" um ein paar bestimmte Mainboards handelt, könnte man da etwas in dieser Richtung raussuchen und entsprechend die Auswahl treffen.
autoBert: Anhand eines Dateinamens so etwas herzuleiten halte ich für überzogen. Aber, und das geht jetzt an Dich McGangster:
Wenn Du nicht endlich Dein Skript sowie die Batchdatei hier postest, dann verschwindet auch dieser Thread im "Nirvana". Ständig neue Threads aufzumachen mit völlig wirren Erklärungen und total unzureichenden Problembeschreibungen werden wir hier nicht länger hinnehmen. ![]()
Du darfst nicht auf "In den Beitrag einfügen" klicken, sondern musst es einfach so als Anhang belassen.
Der Rest geschieht automatisch.
Als erstes ein Hinweis: Du darfst auf keinen Fall den OnEvent- und den MessageLoop-Modus gleichzeitig benutzen. Das funktioniert nicht!
Hier mal Dein Beispiel, wie es funktioniert:
#include <GUIConstantsEx.au3>
GUICreate("combotest", 240, 200)
$combo = GUICtrlCreateCombo("", 5, 5)
GUICtrlSetData($combo, "|item1|item2|")
$button1 = GUICtrlCreateButton("OK", 10, 40)
$button2 = GUICtrlCreateButton("Schließen", 50, 40)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $button1
$read = GUICtrlRead($combo)
Switch $read
Case 'item1'
; hier können weitere Befehle stehen
MsgBox(0, "Combobox", $read)
Case 'item2'
; hier können weitere Befehle stehen
MsgBox(0, "Combobox", $read)
EndSwitch
Case $msg = $button2
_exit()
EndSelect
WEnd
Func _exit()
Exit
EndFunc ;==>_exit
Na Super, wieder mal ein Style der in der Hilfe verschwiegen wird.
Damit kann man sich das ganze $GUI_WS_EX_PARENTDRAG auch sparen. Ein Hoch auf BugFix der diesen Style gefunden hat.![]()
Der Style ist zwar in der WindowsConstant.au3 definiert aber nirgends beschrieben.
Steht doch in der Hilfe (GUICreate):
ZitatYou can enable window draging for GUI without $WS_CAPTION by using $WS_EX_CONTROLPARENT in the exStyle parameter.
Es ist vollbracht.
Ich habe mir die "OCZ Vertex2"-SSD gegönnt. Ich habe sie allerdings hier vor Ort (bei K&M) gekauft. War gerade vorrätig und ich hatte noch einen Gutschein.
Nachdem ich jetzt Windows 7 neu installiert habe, bin ich gerade noch dabei alle Programme wieder zu installieren, aber ich muss jetzt schon sagen, dass das ein enormer Unterschied ist.
Der Win7-Leistungsindex liegt für die SSD übrigens bei 7,7 Punkten.
Danke, für eure Hilfe! ![]()
Ja, das ist egal. Wird vermutlich vorher das Skript dahingehend durchsucht.
Nein! Funktioniert im 64 Bit-Modus immer noch nicht. Es stürzt nicht ab und es kommt auch keine Fehlermeldung. Man kann einfach keinen Eintrag ziehen.
Oh, da hätten wir fast unseren Schnitzel vergessen (wir brauchen unbedingt wieder unsere Geburtstagsliste).
Herzlichen Glückwunsch zum Geburtstag! ![]()