Hi Bitnugger.
Ich verstehe dein Problem nicht ganz. Wenn ich "ControlFocus()" benutze wie vorgesehen, funktioniert es doch richtig, oder?
ControlFocus($hGUI, '', $idListview)
Hi Bitnugger.
Ich verstehe dein Problem nicht ganz. Wenn ich "ControlFocus()" benutze wie vorgesehen, funktioniert es doch richtig, oder?
ControlFocus($hGUI, '', $idListview)
Oh ja... ich denke ich habe die fehlerhafte Zeile gefunden:
Gleiches Testszenario wie in Posting #9.
Dein Script hat nun gut gearbeitet und alle Icons richtig positioniert!
Meine Testumgebung: Win 10 Pro, x64, Standard User (Admin)
Testablauf:
- Als erstes zur Sicherheit ein Backup mit ICU!
- Das jeweilige Test-Script gestartet und die Sicherung der Icon-Positionen ausführen lassen.
- Dann einen neuen Oderner erstellt und 2 der vorhandenen Icons in den neuen Ordner verschoben.
- Icons auf dem Desktop von Hand gründlich durcheinander gewirbelt.
- Restore des jeweiligen Scripts durchgeführt.
Ergebnis:
Script von Veronesi hat das Testszenario bestanden und alle Icons richtig positioniert!
Script von Bitnugger hat mir alle Icons kreuz und quer um die Ohren gehauen!
Edit: Nach Fehlerbehebung hat das Script das Testszenario bestanden und alle Icons richtig positioniert!
ICU (Icon Configuration Utility) von KaFu hat mehr* als tadellos funktioniert! (* Setzt z.B. nach der Sicherung neu hinzugekommene Icons an eine vorher bestimmte Stelle.)
Wie wäre es mit dem Icon Configuration Utility von KaFu?
Noch bevor ich es auf autoitscript.com kannte, hatte ich ICU schon seit Jahren auf mehreren Rechnern in Betrieb, damals von KaFu's Webseite.
Falsch ist sie nicht... kombinieren kannst du die Flags beliebig... macht nur in einigen Fällen keinen Sinn,
Wow, strebst du eine Kariere als Politiker an?
Ok, wenn ich dazu komme, werde ich es Tweaky und Water melden, dann können die beiden entscheiden. Danke für deine Infos!
Je mehr ich darüber nachdenke, desto unklarer wird es. In der Hilfe steht folgende Aussage:
FileOpen ( "filename" [, mode = 0] )
mode | [optional] Modus in dem die Datei geöffnet werden soll. Kann auch eine Kombination aus folgenden sein: ... |
Du sagst:
... die Flags schließen sich also gegenseitig aus.
Stimmt... $FO_APPEND + $FO_OVERWRITE macht ja auch Sinn...
Auch wenn es nicht erkennbar ist, vermute ich, dass es sarkastisch gemeint war. Falls dem so ist, stimme ich zu, dass eine Kombination der beiden Werte KEINEN Sinn machen. Auch von den anderen Werten widersprechen sich einige, z.B. die Zeichenkodierungen.
Also, der langen Rede kurzer Sinn, heruntergebrochen auf eine einfache Frage: Ist die oben genannte Aussage in der Hilfe falsch?
$FO_READ ist 0 und ergibt in Kombination mit $FO_APPEND = $FO_APPEND... also entweder $FO_READ, oder $FO_APPEND, oder $FO_OVERWRITE... die Flags schließen sich also gegenseitig aus.
Bist du sicher?
Ja...
Soeben getestet - mit $FO_APPEND ($FO_READ + $FO_APPEND = $FO_APPEND) funktioniert FileReadLine nur in Kombination mit FileSetPos!
Das war wohl falsch, denn die Flags schließen sich NICHT gegenseitig aus!
Wie du siehtst, ist es erstmal nötig, Klarheit reinzubringen. Auch solltest du am Ende alle FileHandles mit FileClose() schließen.
Sehr nett formuliert...
Vielen Dank!
die Zeile hast du wohl übersehen?
Nein! Ich baue eigentlich ständig ein paar kleine Schriebfleher ein, nur um dich zu testen!
$FO_READ ist 0 und ergibt in Kombination mit $FO_APPEND = $FO_APPEND... also entweder $FO_READ, oder $FO_APPEND, oder $FO_OVERWRITE... die Flags schließen sich also gegenseitig aus.
Bist du sicher?
In der AutoIt Hilfe zu FileOpen() in Beispiel 2, Zeilen 11 und 12:
; Öffnet eine Datei für den Lese/Schreib-Zugriff.
Local $hFileOpen = FileOpen($sFilePath, $FO_READ + $FO_OVERWRITE)
Hallo Chaspel.
Kann man dieses Script irgenwie umschreiben, damit es schneller geht?
Ich bin mir nicht sicher, was du erwartest. Am besten schreibst du dein Code-Beispiel um, sodass es denen klarer wird, die helfen sollen.
So hast du z.B. $FileName2, aber ich kann nirgends $FileName1 entdecken. Dann überschreibst du $FileName2 und erhältst $hFilehandle2, das du nirgends benutzt, und $file_name ist in Wirklichkeit ein FileHandle.
Wie du siehtst, ist es erstmal nötig, Klarheit reinzubringen. Auch solltest du am Ende alle FileHandles mit FileClose() schließen.
Leider ist die Liste im .txt File grösser als das Array erlaubt.
Bist du sicher, dass deine Text-Datei 16777216 Zeilen enthält? Das sind fast 17 Millionen.
Edit: Andy Scheinbar haben wir das Gleiche gedacht, nur warst du 2 Minuten früher.
Aber scheinbar kommen da dann unterschiedliche Ergebnisse raus.
Da du leider nicht sagst, welche Unterschiede du meinst, kann ich nur meine Glaskugel auspacken und raten, dass du den Rahmen meinst. Falls ja, liegt es daran, dass Windows scheinbar beim Erstellen des ListViews die $WS_EX Styles den $LVS_EX Styles vorzieht. Wenn du ein ListView erstellst mit $LVS_EX_GRIDLINES macht Windows daraus $WS_EX_DLGMODALFRAME und beim späteren Setzen wird $LVS_EX_GRIDLINES ignoriert.
Versuch mal das:
#Region ;************ Includes ************
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#EndRegion ;************ Includes ************
Opt("GUICloseOnESC", 0) ; 1=ESC beendet, 0=ESC schließt nicht
Opt("GUIOnEventMode", 1) ; 0=ausgeschaltet, 1=OnEvent Modus aktiviert
Global $hGui = GUICreate("Test", 500, 700, 0, 0, -1, $WS_EX_ACCEPTFILES)
Global $idListview1 = GUICtrlCreateListView("Test", 10, 10, 200, 200, _
BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
; Global $idListview2 = GUICtrlCreateListView("Test", 250, 10, 200, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE))
; GUICtrlSendMsg($idListview2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
; GUICtrlSendMsg($idListview2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
Global $idListview3 = GUICtrlCreateListView("Test", 10, 230, 200, 200, _
BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE, $WS_EX_DLGMODALFRAME))
Global $OldLvwExStyle = _GUICtrlListView_GetExtendedListViewStyle($idListview3)
_GUICtrlListView_SetExtendedListViewStyle($idListview3, BitOR($OldLvwExStyle, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
GUISetState(@SW_SHOW, $hGui)
While 1
Sleep(10)
WEnd
Func _beenden()
Exit
EndFunc ;==>_beenden
Alles anzeigen
Kann es sein, dass es besser ist, wenn die Styles im Nachhinein gesetzt werden?
Im nächsten Posting wird das von Melba23 bestätigt.
https://www.autoitscript.com/forum/topic/19…comment=1433632
Zudem benutzt du "GUICtrlSendMsg()" zum Setzen des exStyles. Versuch doch das von Melba23 empfohlene "_GUICtrlListView_SetExtendedListViewStyle()".