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

  • GradientFillRect

    • BugFix
    • 23. März 2010 um 16:27

    Danke, immer diese Kleinigkeiten :D - habe hDC einfach als hWnd gelesen :whistling:
    Super, nun mal sehen, wie man damit GUI's aufpeppen kann.

  • GradientFillRect

    • BugFix
    • 23. März 2010 um 16:04

    Hi,
    ich habe mal probiert folgendes VB-Bsp.:

    Spoiler anzeigen
    Code
    Private Type TRIVERTEX
        x As Long
        y As Long
        Red As Integer 'Ushort value
        Green As Integer 'Ushort value
        Blue As Integer 'ushort value
        Alpha As Integer 'ushort
    End Type
    Private Type GRADIENT_RECT
        UpperLeft As Long  'In reality this is a UNSIGNED Long
        LowerRight As Long 'In reality this is a UNSIGNED Long
    End Type
    
    
    Const GRADIENT_FILL_RECT_H As Long = &H0 'In this mode, two endpoints describe a rectangle. The rectangle is
    'defined to have a constant color (specified by the TRIVERTEX structure) for the left and right edges. GDI interpolates
    'the color from the top to bottom edge and fills the interior.
    Const GRADIENT_FILL_RECT_V  As Long = &H1 'In this mode, two endpoints describe a rectangle. The rectangle
    ' is defined to have a constant color (specified by the TRIVERTEX structure) for the top and bottom edges. GDI interpolates
    ' the color from the top to bottom edge and fills the interior.
    Const GRADIENT_FILL_TRIANGLE As Long = &H2 'In this mode, an array of TRIVERTEX structures is passed to GDI
    'along with a list of array indexes that describe separate triangles. GDI performs linear interpolation between triangle vertices
    'and fills the interior. Drawing is done directly in 24- and 32-bpp modes. Dithering is performed in 16-, 8.4-, and 1-bpp mode.
    Const GRADIENT_FILL_OP_FLAG As Long = &HFF
    
    
    Private Declare Function GradientFillRect Lib "msimg32" Alias "GradientFill" (ByVal hdc As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_RECT, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long
    Private Function LongToUShort(Unsigned As Long) As Integer
        'A small function to convert from long to unsigned short
        LongToUShort = CInt(Unsigned - &H10000)
    End Function
    Private Sub Form_Load()
        'KPD-Team 1999
        'URL: http://www.allapi.net/
        'E-Mail: KPDTeam@Allapi.net
        'API uses pixels
        Me.ScaleMode = vbPixels
    End Sub
    Private Sub Form_Paint()
        Dim vert(1) As TRIVERTEX
        Dim gRect As GRADIENT_RECT
    
    
        'from black
        With vert(0)
            .x = 0
            .y = 0
            .Red = 0&
            .Green = 0& '&HFF&   '0&
            .Blue = 0&
            .Alpha = 0&
        End With
    
    
        'to blue
        With vert(1)
            .x = Me.ScaleWidth
            .y = Me.ScaleHeight
            .Red = 0&
            .Green = 0&
            .Blue = LongToUShort(&HFF00&)
            .Alpha = 0&
        End With
    
    
        gRect.UpperLeft = 0
        gRect.LowerRight = 1
    
    
        GradientFillRect Me.hdc, vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_H
    End Sub
    Alles anzeigen

    nach AutoIt zu portieren. Leider ohne sichtbaren Erfolg. :S Der Dll-Call wird zwar ohne Fehler ausgeführt, aber der Return ist immer '0', also Mißerfolg. Hat jemand eine Idee?

    Spoiler anzeigen
    [autoit]

    Global Const $tagTRIVERTEX = 'long x;long y;int Red;int Green;int Blue;int Alpha'
    Global Const $tagGRADIENT_RECT = 'ulong UpperLeft;ulong LowerRight'
    Global Const $GRADIENT_FILL_RECT_H = 0x0 ;'In this mode, two endpoints describe a rectangle. The rectangle is
    ;~ 'defined to have a constant color (specified by the TRIVERTEX structure) for the left and right edges. GDI interpolates
    ;~ 'the color from the top to bottom edge and fills the interior.
    Global Const $GRADIENT_FILL_RECT_V = 0x1 ;'In this mode, two endpoints describe a rectangle. The rectangle is
    ;~ ' defined to have a constant color (specified by the TRIVERTEX structure) for the top and bottom edges. GDI interpolates
    ;~ ' the color from the top to bottom edge and fills the interior.
    Global Const $GRADIENT_FILL_TRIANGLE = 0x2 ;'In this mode, an array of TRIVERTEX structures is passed to GDI
    ;~ 'along with a list of array indexes that describe separate triangles. GDI performs linear interpolation between triangle vertices
    ;~ 'and fills the interior. Drawing is done directly in 24- and 32-bpp modes. Dithering is performed in 16-, 8.4-, and 1-bpp mode.
    Global Const $GRADIENT_FILL_OP_FLAG = 0xFF

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

    Func GradientFillRect($hdc, $pTRIVERTEX, $dwNumVertex, ByRef $tGRADIENT_RECT, $dwNumMesh, $dwMode)
    Local $ret = DllCall("msimg32", 'long', "GradientFill", 'long', $hdc, 'ptr', $pTRIVERTEX, _
    'long', $dwNumVertex, 'ptr', $tGRADIENT_RECT, 'long', $dwNumMesh, 'long', $dwMode)
    If @error > 0 Then Return SetError(1,@error,-1)
    Return $ret[0] ; True or False
    EndFunc

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

    Func LongToUShort($Unsigned)
    Return Int($Unsigned - 0x10000)
    EndFunc

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

    Form_Paint()

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

    Func Form_Paint()
    Local $width = 400, $height = 300
    Local $gui = GUICreate('Test', $width, $height)
    Local $vert0 = DllStructCreate($tagTRIVERTEX)
    Local $vert1 = DllStructCreate($tagTRIVERTEX)
    Local $vert = DllStructCreate('ptr[2]')
    DllStructSetData($vert, 1, DllStructGetPtr($vert0), 1)
    DllStructSetData($vert, 1, DllStructGetPtr($vert1), 2)

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

    Local $gRect = DllStructCreate($tagGRADIENT_RECT)

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

    ;~ 'from black
    DllStructSetData($vert0, 'x', 0)
    DllStructSetData($vert0, 'y', 0)
    DllStructSetData($vert0, 'Red', 0)
    DllStructSetData($vert0, 'Green', 0xFF)
    DllStructSetData($vert0, 'Blue', 0)
    DllStructSetData($vert0, 'Alpha', 0)

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

    ;~ 'to blue
    DllStructSetData($vert1, 'x', $width)
    DllStructSetData($vert1, 'y', $height)
    DllStructSetData($vert1, 'Red', 0)
    DllStructSetData($vert1, 'Green', 0)
    DllStructSetData($vert1, 'Blue', LongToUShort(0xFF00))
    DllStructSetData($vert1, 'Alpha', 0)

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

    DllStructSetData($gRect, 'UpperLeft', 0)
    DllStructSetData($gRect, 'LowerRight', 1)

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

    GUISetState()
    Local $ret = GradientFillRect(WinGetHandle($gui), $vert, 2, $gRect, 1, $GRADIENT_FILL_RECT_H)

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

    ConsoleWrite($ret & ' @err: ' & @error & @CRLF)

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

    Do
    Until GUIGetMsg() = -3
    EndFunc

    [/autoit]
  • Zeitvergelich

    • BugFix
    • 23. März 2010 um 11:56

    Sicherste Methode ist _DateDiff().
    Wenn es nur Uhrzeit ist, kannst du auch einen reinen Stringvergleich machen:

    [autoit]

    $t1 = '10:17'
    $t2 = '10:15'

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

    Select
    Case $t1 < $t2
    MsgBox(0, '', 'Früher')
    Case $t1 = $t2
    MsgBox(0, '', 'Genaue Zeit')
    Case Else
    MsgBox(0, '', 'zu spät')
    EndSelect

    [/autoit]
  • ListViewItem mit Leertaste checken !?

    • BugFix
    • 23. März 2010 um 11:48

    Dann verwende einfach das KEYUP-Event in Func _KeyProc:

    [autoit]

    If ($wParam = $WM_KEYUP) And ($vkCode = 0x20) Then

    [/autoit]
  • ListViewItem mit Leertaste checken !?

    • BugFix
    • 23. März 2010 um 10:15

    Das geht am Besten mit Hook auf die Leertaste:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #Include <WindowsConstants.au3>

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

    OnAutoItExitRegister('OnAutoItExit')
    Opt("GUIOnEventMode", 1)

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

    Global $hHookKeyboard, $pStub_KeyProc, $active = False, $ctrl2effect = 'SysListView321'
    $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
    $hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)

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

    Global $hGui = GUICreate("Listview", 520, 600, -1, -1)
    GUISetOnEvent(-3, "_Exit")

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

    Global $hLV = GUICtrlCreateListView("Index|Alarmtext|Nummer", 10, 10, 500, 582, -1, 0x00000004)
    For $i = 1 To 100
    GUICtrlCreateListViewItem($i, $hLV)
    GUICtrlSetOnEvent(-1, "_CheckStatus")
    Next

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

    GUISetState()

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

    While 1
    Sleep(100)
    If BitAND(WinGetState($hGui), 8) And ControlGetFocus($hGui) = $ctrl2Effect Then ; nur wirksam wenn GUI aktiv und Fokus auf Listview
    $active = True
    Else
    $active = False
    EndIf
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _CheckStatus()
    ConsoleWrite(@GUI_CtrlId & " - " & GUICtrlRead(@GUI_CtrlId, 1) & @CR)
    EndFunc

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

    Func OnAutoItExit()
    DllCallbackFree($pStub_KeyProc)
    _WinAPI_UnhookWindowsHookEx($hHookKeyboard)
    EndFunc ;==>OnAutoITExit

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If ($wParam = $WM_KEYDOWN) And ($vkCode = 0x20) Then
    _CheckStatus()
    EndIf
    Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

    [/autoit]
  • WinAPI_more.au3

    • BugFix
    • 22. März 2010 um 23:25

    Hier mal noch ein paar zusätzliche API-Funktionen für die RECT-Struktur:

    Spoiler anzeigen
    [autoit]

    Local $tRECT = DllStructCreate('int Left;int Top;int Right;int Bottom')

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

    ; === Befüllen
    ConsoleWrite('=== Befüllen' & @CRLF)
    ConsoleWrite( _WinAPI_SetRect($tRECT, 20, 30, 200, 300) & @CRLF)
    _ConsoleWriteRECT($tRECT)

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

    ; === Verschieben
    ConsoleWrite('=== Verschieben' & @CRLF)
    ConsoleWrite( _WinAPI_OffsetRect($tRECT, 5, 5) & @CRLF)
    _ConsoleWriteRECT($tRECT)

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

    ; === Punkt innerhalb RECT?
    ConsoleWrite('=== Punkt innerhalb RECT?' & @CRLF)
    ConsoleWrite(_WinAPI_PointInRect($tRECT, 150, 35) & @CRLF)
    ConsoleWrite(_WinAPI_PointInRect($tRECT, 150, 25) & @CRLF)

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

    ; === Leeren
    ConsoleWrite('=== Leeren' & @CRLF)
    ConsoleWrite( _WinAPI_SetRectEmpty($tRECT) & @CRLF)
    _ConsoleWriteRECT($tRECT)

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

    Func _ConsoleWriteRECT(ByRef $tRECT)
    For $i = 1 To 4
    ConsoleWrite(DllStructGetData($tRECT, $i) & @CRLF)
    Next
    EndFunc

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

    ;===============================================================================
    ; Function Name: _WinAPI_SetRect(ByRef $tRECT, $X1, $Y1, $X2, $Y2)
    ; Description: Befüllt eine RECT-Struktur in einem Aufruf mit Werten
    ; Parameter(s): $tRECT RECT-Struktur
    ; $X1, $Y1, $X2, $Y2 Werte des Rectangle
    ; Return Value(s): Erfolg <> 0
    ; Fehler 0 set @error
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WinAPI_SetRect(ByRef $tRECT, $X1, $Y1, $X2, $Y2)
    Local $ret = DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), 'long', $X1, 'long', $Y1, 'long', $X2, 'long', $Y2)
    If @error > 0 Then Return SetError(1,@error,0)
    Return $ret[0]
    EndFunc ;==>_WinAPI_SetRect

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

    ;===============================================================================
    ; Function Name: _WinAPI_SetRectEmpty(ByRef $tRECT)
    ; Description: Leert alle Werte einer RECT-Struktur in einem Aufruf
    ; Parameter(s): $tRECT RECT-Struktur
    ; Return Value(s): Erfolg <> 0
    ; Fehler 0 set @error
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WinAPI_SetRectEmpty(ByRef $tRECT)
    Local $ret = DllCall("user32", 'long', 'SetRectEmpty', 'ptr', DllStructGetPtr($tRECT))
    If @error > 0 Then Return SetError(1,@error,0)
    Return $ret[0]
    EndFunc ;==>_WinAPI_SetRectEmpty

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

    ;===============================================================================
    ; Function Name: _WinAPI_OffsetRect(ByRef $tRECT, $X, $Y)
    ; Description: Verschiebt eine RECT-Struktur um die $X/$Y-Werte
    ; Parameter(s): $tRECT RECT-Struktur
    ; $X Wert horizontale Verschiebung
    ; $Y Wert vertikale Verschiebung
    ; Return Value(s): Erfolg <> 0
    ; Fehler 0 set @error
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WinAPI_OffsetRect(ByRef $tRECT, $X, $Y)
    Local $ret = DllCall("user32", 'long', "OffsetRect", 'ptr', DllStructGetPtr($tRECT), 'long', $X, 'long', $Y)
    If @error > 0 Then Return SetError(1,@error,0)
    Return $ret[0]
    EndFunc ;==>_WinAPI_OffsetRect

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

    ;===============================================================================
    ; Function Name: _WinAPI_PointInRect(ByRef $tRECT, $X, $Y)
    ; Description: Prüft ob ein Punkt innerhalb einer RECT-Struktur ist
    ; Parameter(s): $tRECT RECT-Struktur
    ; $X, $Y Koordinaten des Punktes
    ; Return Value(s): Erfolg Punkt innerhalb=True / außerhalb=False
    ; Fehler -1 set @error
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WinAPI_PointInRect(ByRef $tRECT, $X, $Y)
    Local $ret = DllCall("user32", 'long', 'PtInRect', 'ptr', DllStructGetPtr($tRECT), 'long', $X, 'long', $Y)
    If @error > 0 Then Return SetError(1,@error,-1)
    If $ret[0] > 0 Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_WinAPI_PointInRect

    [/autoit]

    Edit: Noch eine Funktion ergänzt.
    Edit2: Und genau die gibt es doch schon in der WinAPI.au3 (_WinAPI_PointInRect - dort: _WinAPI_PtInRect) :S

    Edit 17.09.2012
    Neue Funktion hinzugefügt, s. Post #2

    DL bisher: 52

    Dateien

    WinAPI_more.au3 9,82 kB – 245 Downloads
  • Stadtnamen ohne ä,ü,ö

    • BugFix
    • 22. März 2010 um 21:58
    Zitat von TheShadowAE

    aber ich wollte wissen wie (oder ob) es in einer Zeile mit StringregExpreplace geht


    Wenn in einer Zeile, dann auch nur ein geschachtelter Aufruf. Ein Pattern zum wahlweise aber gezielten Ersetzen von 3 verschiedenen Zielen ist m.W. nicht machbar.

  • REGEXP und Pattern

    • BugFix
    • 22. März 2010 um 21:26
    Zitat von billemg

    das Problem ist, dass ich die Datenfelder nicht direkt ansprechen kann


    Einspruch Euer Ehren :D - Bis jetzt haben wir noch jeden Zugang zu einer Datenbank gefunden. Evtl. muß etwas am Format gefeilt werden, aber eine direkte Abfrage sollte machbar sein.
    Welche DB wird verwendet? Hast du administrativen Zugang (User, PW). Zugang vom Client oder auf dem Server?

    Bei meiner DB benutze ich den kleinen Umweg, Daten per SQL-Abfrage zusammenzustellen und das Ergebnis in eine Datei zu exportieren (Format wählbar: z.B. xls, csv). Diese verwende ich dann mit AutoIt.

  • Kann man bei Koda ein Special disign haben??

    • BugFix
    • 22. März 2010 um 19:07
    Zitat von crocojunk

    ein special disign für die koda oberfläche


    Wozu das denn? So selten, wie man Koda nutzt (oder machst du jeden Tag 10 GUI's ^^ ), ist es doch total Banane, wie die Oberfläche aussieht. :D

  • Anwendungspfad herausfinden

    • BugFix
    • 22. März 2010 um 13:18

    Die Softwareersteller halten sich hier leider an keine gemeinsamen Normen. Und somit findest du die Verweise auf den Installationsort auch an ganz unterschiedlichen Stellen.
    Ein häufig verwendeter Schlüssel ist: HKEY_LOCAL_MACHINE\SOFTWARE
    Hier tragen sich viele Programm ein. Mußt du durch die Schlüssel iterieren. Im Allgemeinen ist Hersteller oder Produktname auch der Schlüsselname. Dann mußt du den Schlüssel nach Path, InstallDir oder ähnlichem durchsuchen. Wenn du das Programm bei dir installiert hast, weißt du ja in welcher Form der Schlüssel angelegt wird.
    Im Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall tragen auch viele (leider nicht alle) Installer den Installationsort ein.

  • Problem Kein text Eintrag

    • BugFix
    • 22. März 2010 um 09:57

    Versuch mal ControlSend mit Flag 1 (RawString).

  • Zeile von Excel in ListBox anzeigen

    • BugFix
    • 21. März 2010 um 14:34

    Belegte Zeilen / Spalten lassen sich einfacher so auslesen (Nummer des Sheets ggf. anpassen):

    [autoit]

    Local $oBook = ObjCreate("Excel.Application")
    ; === letzte Zeile
    ConsoleWrite('Anzahl Zeilen: ' & $oBook.Worksheets(1).UsedRange.Rows.Count & @CRLF)

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

    ; === letzte Spalte
    ConsoleWrite('Anzahl Spalten: ' & $oBook.Worksheets(1).UsedRange.Columns.Count & @CRLF)

    [/autoit]

    Wenn du alle Inhalte (Spalten) einer Zeile auslesen möchtest, kannst du das in einer Schleife erledigen.

    [autoit]

    Local $i = 0, $inhalt = ''
    Local $zeile = 1
    While $i < $oBook.Worksheets(1).UsedRange.Columns.Count
    $inhalt &= $oBook.Range("A" & $zeile).Offset($i, 0).Value & '|' ; <== Pipe als Trenner, dann kannst du gleich das Listview bestücken
    $i += 1
    Next
    $inhalt = StringTrimRight($inhalt, 1) ; <== die letzte Pipe abschneiden

    [/autoit]


    Das Darstellen in einer ListBox ist aber wenig sinnvoll. Verwende ein Listview, dort hast du ebenfalls Zeilen und Spalten.
    Du kannst natürlich auch die Exceltabelle selbst als eingebettetes Objekt darstellen.

  • _MeineFunktion($Parameter 1,$Parameter 2 [,$Parameter n])

    • BugFix
    • 21. März 2010 um 07:56
    Zitat von m-obi

    Da musst du dann aber vorher alles reinpacken, ich wollte ja nur so die Funktion nehmen ohne was vorher zumachen. Deswegen pack ich es ja in eine Funktion. Ich machs jetzt anders.


    Für den Fall, dass du nicht erst ein Array bestücken möchtest und danach dieses übergibst, kannst du eine (sicher begrenzte, weiß grad nicht die Größe) Zahl an optionalen Parametern im Funktionskopf deklarieren und diese alle mit '0' oder einem anderen Wert, der nicht übergeben werden soll, vorbelegen. Hatte ich mal so gelöst:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name: _InList($var, $CaseSens, $op1, $op2='-0', $op3='-0', $op4='-0', $op5='-0', $op6='-0', $op7='-0', $op8='-0', $op9='-0', $op10='-0')
    ; Description:: Prüft auf Übereinstimmung einer Variablen mit bis zu 10 Operanden (min 1) einer Auflistung
    ; Es kann Case Sensitiv geprüft werden
    ; Parameter(s): $var die Variable
    ; $CaseSens 1 = Case Sensitiv; 0 (oder alles <> 1) = nicht CS
    ; $op1..10 die Listenelemente
    ; Return Value(s): True bei Übereinstimmung, sonst False
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _InList($var, $CaseSens, $op1, $op2='-0', $op3='-0', $op4='-0', $op5='-0', $op6='-0', $op7='-0', $op8='-0', $op9='-0', $op10='-0')
    Local $match = 0
    For $i = 1 To 10
    If $match Then Return True
    If $CaseSens = 1 Then
    If Eval("op" & $i) == '-0' Then ExitLoop
    If $var == Eval("op" & $i) Then $match += 1
    Else
    If Eval("op" & $i) == '-0' Then ExitLoop
    If $var = Eval("op" & $i) Then $match += 1
    EndIf
    Next
    Return False
    EndFunc ;==>_InList

    [/autoit]


    Eine andere Variante:
    Du übergibst die unbekannte Anzahl zusätzlicher Parameter als Trennzeichenbasierten String und splittest intern am Trennzeichen.

  • Netgear Stora [gelöst (z.Teil)]

    • BugFix
    • 17. März 2010 um 23:01

    Was mir auch noch so im Nachhinein aufgefallen ist: Die komfortable RAID-Erstellung versteckt einen Nachteil in sich. Sollten die Platten einmal voll sein und ich komme auf den Gedanken eine HD als Archiv extern zu lagern und bei Bedarf wieder einzustöpseln um die Daten zu lesen, dann ist das ein Irrtum. In dem Moment, wenn ich eine HD einstecke, wird diese sofort neu in das Array eingebunden und formatiert. :wacko:

    Schon komisch, da die anderen Netgearprodukte eigentlich recht überzeugend sind ist es doch verwunderlich, wie man die Kunden mit so einem Sche... vor den Kopf stößt.

  • Netgear Stora [gelöst (z.Teil)]

    • BugFix
    • 16. März 2010 um 20:31
    Zitat von Oscar

    Oder wurde das mittlerweile behoben?


    Das kann ich (noch) nicht sagen. Stellt für mein Einsatzgebiet aber kein Problem dar, da dort nur ein 100er Netz ist.

  • Netgear Stora [gelöst (z.Teil)]

    • BugFix
    • 16. März 2010 um 20:18

    Alina: Das ist ein Leergehäuse - kannst du reinstecken was du willst:

    Zitat

    2x SATA Einschübe für 3,5" Festplatten (1.5 oder 3.0Gb/s) ohne Größenbeschränkung

  • Netgear Stora [gelöst (z.Teil)]

    • BugFix
    • 15. März 2010 um 22:21

    Im Detail geht das so:
    - einmalig: Die Stora bei Netgear registrieren, User anlegen, PW vergeben
    - bei Aufruf der Konfigurationssoftware: Anwahl http://www.mystora.com, Username und PW eingeben (ja, wirklich - immer über Internet!)
    - nach erfolgreicher Authentifizierung Redirektion mit Sitzungs-ID auf die Stora
    - und nun erst hat man Zugriff auf die Konfig-Oberfläche

    Weiterer entscheidener Nachteil:
    - in der Standardversion (ohne Abo) können nur 3 Benutzer angelegt werden! D.h. max. 3 PC im LAN. Denn ohne Anmeldung kein Zugriff auf die Daten
    - aber: jeder Nutzer hat volle Zugriffsrechte, keine Konfiguration möglich

    Ich habe das Teil heute zurückgebracht. Gebe lieber 30 EUR mehr aus (für eine IcyBox IB-NAS4220-B) und bin dann der Herr im Hause. ;)


    Übrigens: Das kpl. Manual findest du hier.

  • Netgear Stora [gelöst (z.Teil)]

    • BugFix
    • 15. März 2010 um 20:31
    Zitat von nuts

    Das kann eigentlich nicht sein. Was sagt denn Netgear dazu?


    Das ist leider genau so und wird von Netgear im Handbuch (dass du separat laden darfst) auch so beschrieben. Wenn auch die Wortwahl so ist, dass es als Vorteil dargestellt werden soll.
    Netgears Position: Dies Stora ist ein Modul für User, die keine Ahnung von Administration haben und die man nicht mit IP's und dergleichen belasten soll. Für User, die mehr wollen gibt es die ReadyNAS-Baureihe.

  • µit für Mathematiker und Zocker

    • BugFix
    • 15. März 2010 um 00:20

    :rofl: Spielen mit Wahrscheinlichkeiten ist ja ganz witzig, doch in Bezug auf die Lottozahlen finde ich das wenig sinnvoll.
    Dann sollten wir ehr 'berechnen', welches Insekt als nächstes in unserem Zimmer auftaucht. Die ermittelte Wahrscheinlichkeit dürfte eher mit der Wirklichkeit übereinstimmen als das bei den Lottozahlen der Fall sein wird. ;)

  • Icons per relativer Pfadangabe in ein Script einbinden, welches in ein anderes eingebunden wird

    • BugFix
    • 14. März 2010 um 21:49

    Guckst du: Fremddateien "includen" (ohne FileInstall)

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™