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

  • Mathematisches Problem IParam-Speicherung

    • BugFix
    • 1. September 2009 um 22:11

    Danke progandy, für den Beitrag. Leider bringt die Funktion keinen Gewinn (na OK - eine Spalte mehr). Denn der Offset ist 2^32 und danach bricht die Funktion mit Overflow ab.
    OK, gibts wohl keinen Weg. Trotzdem Danke, dass ihr euch Gedanken gemacht habt.

  • Mathematisches Problem IParam-Speicherung

    • BugFix
    • 1. September 2009 um 20:50
    Zitat von Andy

    im Prinzip möchter er 60 verschiedene "Zustände" in einer Integer-Zahl speichern.


    Wenn es das wäre, wär es nicht so schwierig. Das ließe sich mit Bernds Empfehlung regeln.
    Es sind aber bei 30 Werten schon wesentlich mehr Zustände: alle Kombinationen von 0 bis 29. (Dürfte 30! sein ?). Leider läßt sich in IParam ausschließlich ein Integerwert speichern. Sonst hätte ich den Zustand einfach in einem '01'-String abgelegt.

    Mein Problem ist also, dass ich die Information des positiven Integerwertes auch brauche, wenn ich einen negativen Wert verwende. Das war ja meine Überlegung, den Zahlenbereich zu strecken.
    Grundsätzlich könnte ich mir die IParam-Geschichte sparen und gleich auf das Array mit den Format-Infos zugreifen. Aber das wollte ich vermeiden, weil bei großer Elementanzahl jeder Schreib- oder Lesezugriff sich in der Performance bemerkbar macht.

  • Mathematisches Problem IParam-Speicherung

    • BugFix
    • 1. September 2009 um 09:34

    Hi,
    irgendwie habe ich schon 'nen Knoten im Hirn - aber ich komme einfach auf keine Lösung.

    Für die Formatierung von Listview-SubItem nutze ich als Informationsträger, ob ein SubItem benutzerdefiniert formatiert wurde, den IParam des Item. IParam erlaubt mir einen Integerwert zu speichern.
    Um also Infos zu mehreren Spalten (SubItem) des Items zu hinterlegen speichere ich in IParam die Summe von 2^SpaltenIndex für jede betroffene Spalte.
    Den Wert von IParam muß ich dann allerdings noch verschieben, damit es keine Kollisionen mit niedrigen Control-ID gibt. Dazu addiere ich einfach ein Shift von 9999.
    Somit kann ich die Informationen für max. 30 Spalten (Index 0-29) hinterlegen - dann falle ich aus dem Integerbereich raus.
    Und hier setzt nun meine Überlegung an: Wie kann ich mir den negativen Zahlenbereich mit 'einverleiben'?
    Ich brauche irgendeine Möglichkeit um zu definieren:
    Wenn IParam negativ ist, berechne mit Algorithmus X den Wert der für SpaltenIndex 0-29 zuständig ist. Als zweiter Wert ergibt sich ein 'Zeiger' auf 2 hoch 30 und höher. Denn intern kann ich ja mit größeren Zahlen rechnen, nur Speichern in IParam geht nicht.
    Versucht habe ich schon einige Sachen, aber ich bekomme nichts eineindeutiges gebacken. Den Wert reinrechnen ist das Eine, ich muß ihn natürlich mit einer Umkehrmethode auch wieder zurückrechnen können.
    Ziel ist immer die Abfragevariante (nach ermitteln des tatsächlichen IParam):

    [autoit]

    If BitAND($IParam, 2^$SpaltenIndex) Then

    [/autoit]

    Hier mal noch ein kleines Skriptbsp. zum Durchspielen der Werte:

    [autoit]

    #include <GuiListView.au3>
    $gui = GUICreate('')
    $lv = GUICtrlCreateListView('a|b|c', 10, 10, 200, 150)
    $hLV = GUICtrlGetHandle($lv)
    GUICtrlCreateListViewItem(' | | ', $lv) ; Anzahl Spalten z. Test unwichtig

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

    $IParam = 0
    $shift = 9999 ; IParam muß größer 9999 sein
    For $i = 0 To 30 ; letzter gültiger Spalten-Index ist 29
    ConsoleWrite('2 hoch ' & $i & @TAB & 2^$i & @CRLF)
    $IParam += 2^$i
    ; für negativen Bereich wäre das dann
    ;~ $IParam -= 2^$i ; <== das funktioniert dann bis 30 und Shift wäre nich nötig
    ConsoleWrite('set Summe $IParam: ' & $IParam & @CRLF)
    _GUICtrlListView_SetItemParam($hLV, 0, $IParam+$shift)
    ConsoleWrite('get Summe $IParam: ' & _GUICtrlListView_GetItemParam($hLV, 0)-$shift & @CRLF & @CRLF)
    Next

    [/autoit]
  • Array2DInsert umsetzungsproblem

    • BugFix
    • 31. August 2009 um 22:36

    "_Array2DInsert($aArray, 12, "Wert|Wert2|Wert3|wert4|variable") ; 12 sollte eigentlich der Wert sein für [1][2]"

    Das geht so nicht! Schau dir die Funktionsdeklaration noch mal an:
    _Array2DInsert(ByRef $avArray, $iElement [, $sValue=''])
    $avArray - dein Array
    $iElement - 0-basierter ArrayIndex, zum Einfügen des neuem Elements
    (optional) $sValue - Wert(e) des neuen Elements, getrennt mit '|'

    Insert bedeutet, du fügst ein neues Element (Zeile) in dein Array ein. Du mußt also die Werte für alle enthaltenen Spalten angeben!
    Wenn du also an ZeilenIndex 1 ein neues Element einfügst und nur in SpaltenIndex 2 die 12 eintragen möchtest bei insgesamt 5 Spalten, wäre das folgende Syntax:

    [autoit]

    _Array2DInsert($aArray, 1, "0|0|12|0|0")

    [/autoit]
  • Leerzeichen rausfiltern

    • BugFix
    • 30. August 2009 um 18:22

    Dann nimm die einfachste Lösung:
    Verwende keine InputBox, sondern ein Input mit $ES_NUMBER. :P

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 30. August 2009 um 18:02

    Ein Problem gefixed. Neue Version in Post 1.

  • Leerzeichen rausfiltern

    • BugFix
    • 30. August 2009 um 15:49

    Einfach Number() verwenden. Das kickt Leerzeichen allein raus.

  • Stream in eine Text-Datei sichbar machen

    • BugFix
    • 30. August 2009 um 12:51
    Zitat von igillan

    Ich lese jetzt die letzte Zeile der Logdatei aus und stelle den Wert in einem "Label"Control dar. Leider flackert die Anzeige immer. Kann man das vielleicht auch irgendwie dämpfen?


    Ich vermute mal, du machst das in einer Schleife und setzt den Wert bei jedem Durchlauf? Das muß dann ja flackern.
    Du benötigst eine Variable, in der du die letzte Zeile zwischenspeicherst. Im kommenden Schleifendurchlauf vergleichst du den gespeicherten Wert mit dem Wert der letzten Zeile. Wenn die Werte ungleich sind, dann setzt du das Label neu und schreibst den jetzt letzten Zeilenwert in die Variable.

  • problem mit commandline auslesen (stdoutRead)

    • BugFix
    • 30. August 2009 um 12:15

    Warum so kompliziert? Leite doch die Ausgabe sofort in eine Datei um.
    In etwa so: Run( "log.bat >>mein.log")

  • Fixer URL Shortener :)

    • BugFix
    • 30. August 2009 um 11:49
    Zitat von war10ck

    bei $oHTTP hast du dann beim 2. und 3. mal nur mehr nen Punkt statt nem "=". Was bewirkt man damit????


    $oHTTP ist ein Objekt. Die Methoden/Eigenschaften zu einem Objekt werden genau auf diese Weise angesprochen.

  • Im SVZ mit der Http-UDF anmelden (Hilfe)?

    • BugFix
    • 30. August 2009 um 11:16

    Welchen Zweck soll diese Form der Anmeldung haben? Du bist dann nicht auf Browserebene im SVZ und müßtest, um Inhalte lesen zu können, diese Auslesen und auf deinen PC kopieren. Dieses jedoch, ist dir laut AGB untersagt.

    Edit: Hier der Ausschnitt aus den AGB

    Zitat

    5.4.3
    Inhalte anderer Nutzer im schülerVZ darfst du nicht auslesen (z.B. durch ein Programm oder durch bloßes Kopieren), um sie außerhalb der Plattform zu nutzen.

  • Latex Tabelle

    • BugFix
    • 30. August 2009 um 00:28

    Alina: Es geht ihm hierum: LaTex
    Ich weiß nur, dass Pee damit fit ist.

  • Neue Digitalkamera

    • BugFix
    • 29. August 2009 um 23:42

    OK, CCD mit 1/2,3 Zoll ist Kleinbildformat. Da sollte ausreichend Platz ohne Interpolieren sein.

  • Neue Digitalkamera

    • BugFix
    • 29. August 2009 um 23:16

    Als alter Amateurfotograf kann ich schon mal sagen: die Optik ist OK.
    Leider fehlt, wie bei fast allen digitalen Kameras, eine Angabe zur Größe (Abmessung) des Sensorchips. Daraus läßt sich dann erst ableiten, ob die 12 Megapixel zur Bildqualität, oder wie sehr häufig, zur Verschlechterung beitragen. Denn wenn physikalisch nur Platz für z.B. 8 Megapixel ist, müssen 4 Mega interpoliert werden. Für 12 Mega ist schon fast das Format eines Kleinbildfilmes (24x36 mm) erforderlich.

  • Feedback funktion

    • BugFix
    • 29. August 2009 um 20:53
    Zitat von Reaker

    ja aber es war so das ich da extra eine eigene email erstellt habe, sprich es wäre in dem programm mein passwort von der email drinne.

    Sowas wäre aber tödlich. Du kannst doch nicht deine Account-Daten weitergeben. Wozu auch. eMails versenden kann doch jeder, selbst noch so schwerfällige User. :D

  • Feedback funktion

    • BugFix
    • 29. August 2009 um 20:45

    Ich sehe kein Passwortproblem.
    Du kannst doch den User beim Erstellen der eMail das Passwort zum Versenden eingeben lassen ohne dieses zu speichern. Für ein (einmaliges) Feedback macht es doch auch keinen Sinn, die eMail-Verbindung des Users in einer INI zu speichern.
    Ich würde überhaupt keine eigene Mailanbindung integrieren, sondern per mailto: das Standardmailprogramm aufrufen.

  • Feedback funktion

    • BugFix
    • 29. August 2009 um 20:16

    Was verstehst du unter einer Feedbackfunktion und in welchem Umfelt soll sie eingesetzt werden?

  • Brauche Hilfe bei GuiCtrlCreateTab

    • BugFix
    • 29. August 2009 um 19:53

    Mit

    [autoit]

    _GUICtrlTab_SetCurFocus($hWnd, $iIndex)

    [/autoit]

    klappt es.

  • Brauche Hilfe bei GuiCtrlCreateTab

    • BugFix
    • 29. August 2009 um 19:35
    Zitat von Raupi

    ich seh den Wald vor lauter Bäumen nicht mehr.


    :P Tja ja - die Bäume

    [autoit]

    _GUICtrlTab_SetCurSel($hWnd, $iIndex)

    [/autoit]
  • _GDIPlus_GraphicsDrawString Vertikal von rechts lesbar machen

    • BugFix
    • 29. August 2009 um 18:07

    Guckst du (Transparenz ist auch möglich für die Schrift, s. Kommentar in der Funktion:

    Spoiler anzeigen
    [autoit]

    ; ver 3.2.12.1
    #Include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $GUI = GUICreate('Test Rotation')
    GUICtrlCreateLabel('Text:', 10, 13, 50, 17)
    Global $In = GUICtrlCreateInput('Hallo!', 70, 10, 150, 20)
    Global $bt = GUICtrlCreateButton('Schreibe Text', 250, 10, 100, 20)
    Global $btDel = GUICtrlCreateButton('Lösche Text', 250, 40, 100, 20)
    GUICtrlCreateLabel('Pos. X:', 10, 43, 50, 17)
    Global $inX = GUICtrlCreateInput('80', 70, 40, 30, 20)
    GUICtrlCreateLabel('Pos. Y:', 110, 43, 50, 17)
    Global $inY = GUICtrlCreateInput('280', 170, 40, 30, 20)
    GUICtrlCreateLabel('Winkel:', 10, 73, 50, 17)
    Global $inDeg = GUICtrlCreateInput('30', 70, 70, 30, 20)
    GUICtrlCreateLabel('Höhe:', 110, 73, 50, 17)
    Global $inSize = GUICtrlCreateInput('60', 170, 70, 30, 20)
    GUICtrlCreateLabel('Breite:', 10, 103, 50, 17)
    Global $inWeight = GUICtrlCreateInput('400', 70, 100, 30, 20)
    GUICtrlCreateLabel('Font:', 110, 103, 50, 17)
    Global $inFont = GUICtrlCreateInput('Comic Sans MS', 170, 100, 200, 20)
    GUICtrlCreateGroup(' Stil ', 10, 130, 280, 40)
    Global $rDef = GUICtrlCreateRadio('Standard', 15, 145, 65)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Global $rIt = GUICtrlCreateRadio('Italic', 85, 145, 45)
    Global $cbUn = GUICtrlCreateCheckbox('Underlined', 135, 145, 70)
    Global $cbSt = GUICtrlCreateCheckbox('StrikeOut', 215, 145, 70)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel('Farbe Schrift:', 10, 183, 80, 17)
    Global $inCol = GUICtrlCreateInput('', 90, 180, 60, 20)
    GUICtrlCreateLabel('Hintergrund:', 160, 183, 80, 17)
    Global $inbCol = GUICtrlCreateInput('', 230, 180, 60, 20)

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

    GUISetState()
    Global $Rect

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

    Do
    $msg = GUIGetMsg()
    If $msg = $bt Then
    Local $type = 1, $col = -1, $bkcol = -1
    If BitAND(GUICtrlRead($rIt), $GUI_CHECKED) Then $type = 2
    If BitAND(GUICtrlRead($cbUn), $GUI_CHECKED) Then $type += 4
    If BitAND(GUICtrlRead($cbSt), $GUI_CHECKED) Then $type += 8
    Local $readFont = GUICtrlRead($inFont)
    If $readFont = '' Then $readFont = -1
    Local $col = GUICtrlRead($inCol), $bkcol = GUICtrlRead($inbCol)
    If $col = '' Then $col = -1
    If $bkcol = '' Then $bkcol = -1
    _WriteRotateText($GUI, GUICtrlRead($In), GUICtrlRead($inX), GUICtrlRead($inY), GUICtrlRead($inDeg), _
    GUICtrlRead($inSize), GUICtrlRead($inWeight), $type, $readFont, $col, $bkcol)
    ElseIf $msg = $btDel Then
    _WinAPI_RedrawWindow($GUI)
    EndIf
    Until $msg = $GUI_EVENT_CLOSE

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

    ;==================================================================================================
    ; Function Name: _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize [, $iWeight=400 _
    ; [, $iType=1 [, $sFont=-1 [, $iCol=-1 [, $iBkCol=-1 [,$bRedraw=True]]]]]])
    ; Description: Schreibt einen Text mit bestimmtem Winkel in das angegebene Fenster
    ; Parameter(s): $hWnd Handle des Fensters
    ; $sWrite der zu schreibende Text
    ; $iX x-Position auf dem Fenster
    ; $iY y-Position auf dem Fenster
    ; $iDeg Rotationswinkel des Textes
    ; $iSize Höhe des Textes
    ; optional: $iWeight Fontbreite 0 - 1000 (Standard 400)
    ; optional: $iType Fonttyp 1=normal (Standard); 2=Italic; 4=Underline; 8=StrikeOut
    ; 1 oder 2 können mit 4 und 8 kombiniert werden (5;9 od. 6;10)
    ; optional: $sFont Fontname -1=Font der Form (Standard)
    ; optional: $iCol Fontfarbe -1=schwarz (Standard)
    ; optional: $iBkCol Hintergrundfarbe -1=Hintergrundfarbe des Fensters (Standard)
    ; optional: $bRedraw True=Fenster vorher neu zeichnen (vorige Beschriftung löschen - Standard)
    ; Requirement(s): #Include <WinAPI.au3>; #include <StructureConstants.au3>; #include <WindowsConstants.au3>
    ;==================================================================================================
    Func _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize, $iWeight=400, $iType=1, $sFont=-1, $iCol=-1, $iBkCol=-1, $bRedraw=True)
    If $bRedraw Then _WinAPI_RedrawWindow($hWnd)
    Local $tRect = DllStructCreate($tagRECT)
    DllStructSetData($tRect, 'Left', $iX)
    DllStructSetData($tRect, 'Top', $iY)
    Local $rotate = $iDeg *10
    If ($rotate = 900) Or ($rotate = 1800) Or ($rotate = 2700) Then $rotate += 1
    Local $RotateMe = DllStructCreate($tagLOGFONT)
    DllStructSetData($RotateMe, 'Escapement', $rotate)
    DllStructSetData($RotateMe, 'Height', ($iSize * -20)/_WinAPI_TwipsPerPixelY())
    If $iWeight <> 400 Then DllStructSetData($RotateMe, 'Weight', $iWeight)
    If BitAND($iType, 2) Then DllStructSetData($RotateMe, 'Italic', True)
    If BitAND($iType, 4) Then DllStructSetData($RotateMe, 'Underline', True)
    If BitAND($iType, 8) Then DllStructSetData($RotateMe, 'StrikeOut', True)
    If $sFont <> -1 Then DllStructSetData($RotateMe, 'FaceName', $sFont)
    Local $rFont = _WinAPI_CreateFontIndirect($RotateMe)
    Local $hDC = _WinAPI_GetDC($hWnd)
    If $iCol <> -1 Then _WinAPI_SetTextColor($hDC, $iCol)
    If $iBkCol <> -1 Then _WinAPI_SetBkColor($hDC, $iBkCol) ; wenn Transparenz gewünscht, Folgezeile aktivieren
    ;~ _WinAPI_SetBkMode($hDC, $TRANSPARENT)
    _WinAPI_SelectObject($hdc, $rFont)
    _WinAPI_DrawText($hDC, $sWrite, $tRect, BitOR($DT_NOCLIP,$DT_NOPREFIX))
    _WinAPI_ReleaseDC($hWnd, $hDC)
    EndFunc ;==>_WriteRotateText

    [/autoit]

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™