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.
Beiträge von BugFix
-
-
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. -
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.
[autoit]
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):If BitAND($IParam, 2^$SpaltenIndex) Then
[/autoit]Hier mal noch ein kleines Skriptbsp. zum Durchspielen der Werte:
[autoit]#include <GuiListView.au3>
[/autoit][autoit][/autoit][autoit]
$gui = GUICreate('')
$lv = GUICtrlCreateListView('a|b|c', 10, 10, 200, 150)
$hLV = GUICtrlGetHandle($lv)
GUICtrlCreateListViewItem(' | | ', $lv) ; Anzahl Spalten z. Test unwichtig$IParam = 0
[/autoit]
$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 -
"_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!
[autoit]
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:_Array2DInsert($aArray, 1, "0|0|12|0|0")
[/autoit] -
Dann nimm die einfachste Lösung:
Verwende keine InputBox, sondern ein Input mit $ES_NUMBER.
-
-
Einfach Number() verwenden. Das kickt Leerzeichen allein raus.
-
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. -
Warum so kompliziert? Leite doch die Ausgabe sofort in eine Datei um.
In etwa so: Run( "log.bat >>mein.log") -
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. -
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
Zitat5.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. -
-
OK, CCD mit 1/2,3 Zoll ist Kleinbildformat. Da sollte ausreichend Platz ohne Interpolieren sein.
-
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. -
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.

-
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. -
Was verstehst du unter einer Feedbackfunktion und in welchem Umfelt soll sie eingesetzt werden?
-
Mit
[autoit]_GUICtrlTab_SetCurFocus($hWnd, $iIndex)
[/autoit]klappt es.
-
ich seh den Wald vor lauter Bäumen nicht mehr.
[autoit]
Tja ja - die Bäume_GUICtrlTab_SetCurSel($hWnd, $iIndex)
[/autoit] -
Guckst du (Transparenz ist auch möglich für die Schrift, s. Kommentar in der Funktion:
Spoiler anzeigen
[autoit]; ver 3.2.12.1
[/autoit] [autoit][/autoit] [autoit]
#Include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>Global $GUI = GUICreate('Test Rotation')
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
Global $RectDo
[/autoit] [autoit][/autoit] [autoit]
$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]
; 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,
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