Vielleicht wär es sinnvoll, dass das Tool den Speichertyp abfragt und bei einer SSD den Dienst verweigert.
Beiträge von BugFix
-
-
Nicht dass ihr denkt, ich schreibe nur noch LUA-Skripte.

Ich habs gerade gebraucht und deshalb dazu zwei Varianten erstellt (tauscht den Inhalt des markierten mit dem darüber/darunter liegendem Item aus).
- _GUICtrlListView_MoveItem
Vorteil: schnell
Nachteil: die Zuordnung zum Ctrl-ID geht verloren
deshalb noch Variante 2
- _GUICtrlListView_MoveItemCtrl
Vorteil: Es wird ein Array mit den richtig zugeordneten Ctrl-ID zurückgegeben (braucht man z.B. für GuiCtrlSetBkColor )
Nachteil: Das Listview wird komplett neu befüllt, daher langsamer.MoveLV_Item.au3
[autoit]#Region - TimeStamp
[/autoit] [autoit][/autoit] [autoit]
; 2012-03-13 19:12:46
#EndRegion - TimeStamp#include-once
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>
#Include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
[/autoit] [autoit][/autoit] [autoit]
GUICreate("Move selected Item", 260, 250, 100, 200)
$listview = GUICtrlCreateListView("col0|col1 |col2 |col3 ", 10, 10, 200, 150)
$hLV = GuiCtrlGetHandle($listview)
$down = GUICtrlCreateButton('/\', 215, 10, 15, 15)
$up = GUICtrlCreateButton('\/', 215, 26, 15, 15)
$item1 = GUICtrlCreateListViewItem("2|item_2|col_22|col_23", $listview)
$item2 = GUICtrlCreateListViewItem("1|item_1|col_12|col_13", $listview)
$item3 = GUICtrlCreateListViewItem("3|item_3|col_32|col_33", $listview)
GUISetState()
while 1
Switch GUIGetMsg()
Case $up
;~ _GUICtrlListView_MoveItem($hLV, 1)
_GUICtrlListView_MoveItemCtrl($hLV, 1)
case $down
;~ _GUICtrlListView_MoveItem($hLV, -1)
_GUICtrlListView_MoveItemCtrl($hLV, -1)
case -3
exit
EndSwitch
wend
EndFunc ;==>Example;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name....: _GUICtrlListView_MoveItem
; Description......: Verschiebt den Inhalt eines markierten Item um jeweils eine Position auf-/abwärts
; Parameter(s).....: $_hWnd Listview-ID oder /-Handle
; .................: $_i RichtungsIndex (1 aufwärts/ -1 abwärts)
; Requirement(s)...: GuiListView.au3
; Return Value(s)..: keine
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _GUICtrlListView_MoveItem($_hWnd, $_i)
If Not IsHWnd($_hWnd) Then $_hWnd = GuiCtrlGetHandle($_hWnd)
Local $index = _GUICtrlListView_GetSelectedIndices($_hWnd)
If $index = '' Or $index < 0 Then Return
If $index = 0 And $_i = -1 Then Return
Local $count = _GUICtrlListView_GetItemCount($_hWnd)
If $index = $count -1 And $_i = 1 Then Return
Local $aSelected = _GUICtrlListView_GetItemTextArray($_hWnd, $index)
Local $indxTmp = $index + ($_i), $aTmp = _GUICtrlListView_GetItemTextArray($_hWnd, $indxTmp)
For $i = 1 To $aSelected[0]
_GUICtrlListView_SetItemText($_hWnd, $indxTmp, $aSelected[$i], $i-1)
_GUICtrlListView_SetItemText($_hWnd, $index, $aTmp[$i], $i-1)
Next
_GUICtrlListView_SetItemSelected($_hWnd, $indxTmp, True, True)
EndFunc ;==>_GUICtrlListView_MoveItem;===============================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit]
; Function Name....: _GUICtrlListView_MoveItemCtrl
; Description......: Verschiebt den Inhalt eines Item um jeweils eine Position auf-/abwärts
; .................: Dazu werden die ListviewItem in neuer Reihenfolge neu erstellt.
; Parameter(s).....: $_hWnd Listview-ID oder /-Handle
; .................: $_i RichtungsIndex (1 aufwärts/ -1 abwärts)
; Requirement(s)...: GuiListView.au3, WinAPI.au3
; Return Value(s)..: Array mit neu erstellten ItemCtrl-ID
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _GUICtrlListView_MoveItemCtrl($_hWnd, $_i)
If Not IsHWnd($_hWnd) Then $_hWnd = GuiCtrlGetHandle($_hWnd)
Local $index = _GUICtrlListView_GetSelectedIndices($_hWnd)
If $index = '' Or $index < 0 Then Return
If $index = 0 And $_i = -1 Then Return
Local $count = _GUICtrlListView_GetItemCount($_hWnd)
If $index = $count -1 And $_i = 1 Then Return
Local $indxTmp = $index + ($_i), $aItem[$count], $aOut[$count]
For $i = 0 To $count -1
$aItem[$i] = _GUICtrlListView_GetItemTextString($_hWnd, $i)
Next
_GUICtrlListView_BeginUpdate($_hWnd)
_GUICtrlListView_DeleteAllItems($_hWnd)
Local $sTmp, $ID_LV = _WinAPI_GetDlgCtrlID($_hWnd)
For $i = 0 To $count -1
Switch $i
Case $index
$sTmp = $aItem[$indxTmp]
Case $indxTmp
$sTmp = $aItem[$index]
Case Else
$sTmp = $aItem[$i]
EndSwitch
$aOut[$i] = GuiCtrlCreateListViewItem($sTmp, $ID_LV)
Next
_GUICtrlListView_SetItemSelected($_hWnd, $indxTmp, True, True)
_GUICtrlListView_EndUpdate($_hWnd)
Return $aOut
EndFunc ;==>_GUICtrlListView_MoveItemCtrlEdit [2018-04-10]: In dieser Variante können auch mehrere markierte Zeilen gleichzeitig verschoben werden.
-
-
Schreib die Ergebnisse aus der Excel-Spalte in ein Listview mit Checkboxstyle (steht in der Hilfe zu den Listview-Funktionen wie das geht). Damit hast du Inhalt und oberfläche dynamisch, da das Listview eine fixe Größe hat aber selbst scrollbaren Inhalt hat und somit dynamisch ist.
-
da kommt dann 7x ein Fenster mit dem Wert "-1" und danach ist Schluß
Und was sagt dazu die Hilfe?Zitat-1 if unable to delete requested value
Wie ich vermutet habe, du wirst keine Berechtigung haben den Schlüssel zu löschen, vielleicht noch in Nutzung oder generell schreibgeschützt.
-
aber das Aufrufen mit Hotkey ist noch ein kleines Problemchen.
Hast du mal nachgeschaut, ob irgendein anderer Menüpunkt diesen Hotkey schon belegt?
Teste mal, indem du dir einen Hotkey einer anderen Funktion 'ausleihst' und diese solange in den properties deaktivierst (mit Raute vor der Zeile).
Und - nicht ganz unwichtig - SciTE neustarten. Es kann funktionieren beim Speichern, aber sicher ist nur, dass die geänderten properties geladen werden, indem man SciTE neustartet. -
- die Begrenzung auf 30 (ich weiß leider nicht wie ich es variabel gestalten kann
Schreib doch einfach 1.000 oder 10.000 hin. Wenn nichts mehr gefunden wird, wird ja auch die Schleife verlassen.
so löscht er nur ein paar anstatt alle.
Lass dir doch der @error-Wert ausgeben vom Löschvorgang. Evtl. besteht keine Zugriffsberechtigung (bzw. nur Lesen) auf diesen Schlüssel.
-
Ich habe die (eine?) Lösung gefunden, die ich allerdings selbst nicht verstehe.
Anscheinend verlangt die SciTE-Version im Zusammenhang mit Hot-Keys, dass diese auch im Menü (SciTE-Extras) erscheinen (was mich persönlich stört, deshalb hatte ich es weggelassen).
Also Folgendes in den properties mit einfügen:
und es läuft.
-
Das ist äußerst ungewöhnlich. Aber jetzt habe ich das Problem auch. Ich hab einen neuen Laptop (Win7 Pro 64bit) und dort kann ich keine Hotkeys neu erstellen. Bestehende funktionieren, aber ich kann sie nicht 'umrouten'.
Ich befürchte mal, das liegt an der SciTE-Version in Kombination mit der Windowsversion. Denn mit XP SP3 und Win7 32bit funktioniert es tadellos bei mir.Mal sehen, ob ich da noch eine Lösung finde.
-
Gegen eine Ignorlist ist nichts einzuwenden, sofern der Zugriff auf die Daten auf eine Art und Weise erfolgt, die der Spielehersteller auch genehmigt (AGB beachten).
Vorsorglich sei auch auf unsere Forenregeln verwiesen.
Und vermeide die Verwendung des Wortes Bot. -
Hast du überhaupt SciTE4Autoit installiert? In der reinen AutoIt-Installation ist nur eine Lite-Version von SciTE.
Einen anderen Grund dafür kann ich mir nicht vorstellen. -
Neue kpl. überarbeitete Version:
- Mehrfachverwendung von Variablen in unterschiedlichen Gültigkeitsbereichen wird berücksichtigt ( [ Local Funktionsname() ] oder [ Global ] )
- Tipp-Deklaration kann parallel in Region oder Tag/Folgezeile erfolgen (properties-Eintrag für Region entfällt)
v0.7 in Post #1 -
LUA ist eine Skriptsprache. Da sie direkt mit dem Scite-Interface interagiert, ist sie besonders geeignet für Editor bezogene Operationen.
Der Verweis auf ein anderes Programm zur Dokumentation nützt mir nichts. Aber auch dieses Programm kann dir sicher keine Variablenbeschreibung liefern, wenn diese nicht im Skript vorliegt.
Also ist schon eine Beschreibung erforderlich zur Positionierung, Markierung der erforderlichen Daten. -
Ich habe damit bisher noch nichts zu tun gehabt. Aber beim Lesen der Beschreibung kam mir gleich wieder LUA in den Sinn.

Bietet sich hier geradezu an, wie bei allen SciTE-bezogenen Operationen. Zumal LUA hier wirklich rasend schnell ist. Ich habe z.B. ein OrganiceInclude-Skript in LUA geschrieben, das braucht < 1s für ein 20.000 Zeilen Skript.
Wenn also dafür echter Bedarf besteht könnte ich mich dieses Themas annehmen. Ich brauchte dann nur eine exakte Beschreibung des erforderlichen Funktionsumfangs. -
-
Einfacher ist:
- IniReadSection (ergibt 2D-Array)
- Wert hinzufügen zum Array (sind dann 11 Einträge)
- sortieren ( absteigend! )
- den letzten Wert löschen ( ReDim($array[10][2] )
- zurückschreiben mit IniWriteSection -
-
Der L-Wert ist der Wert auf der linken Seite einer Zuweisung. $L_Wert = $R_Wert
[autoit]
OMFG
Wer erfindet bloß dauernd diese Abkürzungen?
Aber das ist sicher ein brauchbarer Aspekt, wobei ich da die Notation mit dem AutoIt-üblichen "-1" sinnvoll finde. Also:
[/autoit]
$Variable = .....
;-1 Kommentar dazu
Nehme ich mal in meine Liste auf. -
So etwas ist sicher ein nettes Gimmick - aber es untergräbt durch die Nutzung von Autorun auch jedes Sicherheitsdenken. Es ist bei M$ ja leider üblich alle Sicherheitsvorkehrungen deaktiviert zu haben. Das erste nach Neuinstallation (oder Neuerwerb) eines Rechners sollte immer die Deaktivierung von Autorun sein. Zumal spätestens mit Einsatz vernünftiger Sicherheitssoftware eine autorun.inf sowieso geblockt wird (werden sollte).
Ich denke der minimale Mehrwert durch ein eigenes Icon (nur dafür ist die autorun.inf erforderlich) steht im krassen Gegensatz zu den Gefahren die ein derart geöffnetes Medium bietet.
Das Umbenennen kann man problemlos automatisiert vornehmen ohne Nutzung des Autostarts. -
Man könnte Variablen mit gleichem Namen in unterschiedlichen Funktionen unterschiedliche "Tipps" zuweisen.
Theoretisch ist es schon machbar den Scope, in dem die Variable sich befindet mit zu Rate zu ziehen. Aber ist das sinnvoll? Außer bei Zählervariablen sollte man es als Dogma betrachten: Niemals einen Variablennamen zweimal verwenden. Das erspart viel Fehlersuche. Einzige Doppel, die Sinn machen sind z.B. $sRead, $sTmp etc. - also Variablen die nur kurzzeitig belegt werden und da ist eine Beschreibung überflüssig.
die zuletzt als L-Wert verwendete Variable
Sorry, aber da stehe ich auf dem Schlauch. Was um Himmels Willen ist ein "L-Wert"? :wacko: