Also ich persönlich sehe keinen fundamentalen Zusammenhang zwischen Informatik und Logistik. Das sind doch deutlich unterschiedliche Paar Schuhe.
Basierend auf deiner Transportaussage, wäre dann die Medizin zwangsläufig auch Logistik. Dort geht es um Transporte von Nährstoffen, Botenstoffen, elektrischen Reizen etc. pp.
Man könnte diesen Zusammenhang wohl auf fast Alles konstruieren.
Für Vergleiche würde ich immer die Kerninhalte heranziehen.
Beiträge von BugFix
-
-
Nun, ich finde ~65.000 Elemente im Listview völlig ausreichend.
Ich persönlich verwende _ArrayDisplay nur bei kleinen Arrays. Sind es große Mengen an Einträgen gebe ich das lieber in die Konsole aus. -
kann es sein, dass beim Minimieren des GUI die bisher gemalten Pixel unsichtbar werden?
Korrekt, das ist das normale Verhalten, wenn mit GDI oder WinAPI-Befehlen gezeichnet wird. -
Es fällt mir schwer, das zu bewerten.
Im Moment sehe ich die Vorstellung eines (durchaus interessanten) Projektes ohne Bezug zu AutoIt.ZitatBeispiele für Auto-It folgen.
Vielleicht sagst du hierzu ein paar mehr Worte.
- Erstellst du eine UDF, basierend auf den Dll-Funktionen?
- Ist geplant, dass die Widgets ausschließlich in AutoIt konzipiert werden können? (ohne Nutzung einer fremden IDE) -
Hi,
in Windows 7 (vllt. auch schon Vista?) werden die allgemein vorhandenen Ordner (Eigene Bilder etc.) in der Sprache der Installation angezeigt, der tatsächliche Ordnerpfad ist aber immer identisch (in englisch hinterlegt).
Windows führt eine Lokalisierung durch, indem in jedem Ordner die Datei "desktop.ini" mit dem Verweis auf den Lokalisierungsstring in der "shell32.dll" hinterlegt wird. (Falls ihr die Originalnamen angezeigt bekommen möchtet, einfach den Lokalisierungsstring in der INI auskommentieren. Die Ini ist als Systemdatei in der Standardeinstellung nicht sichtbar.)Um Programme mehrsprachig zu gestalten, lassen sich mit der folgenden Funktion für die hinterlegten Ordner (Eigene Bilder etc.), die landesspezifischen Bezeichnungen (abhängig von der Windows-Installation) ermitteln.
Beim Testen am eigenen System werdet ihr keine Wirkung feststellen können, da ihr dort eine deutsche Installation habt und dementsprechend auch die deutsche Bezeichnung wieder zurückgegeben wird._GetFolderLocalized
[autoit];===============================================================================
[/autoit]
; Function Name....: _GetFolderLocalized
; Description......: Returns localized folder name for german counterpart
; Parameter(s).....: German folder name as follows:
; .................: 'Programme'
; .................: 'Programme (x86)'
; .................: 'Startmenü'
; .................: 'Autostart'
; .................: 'Eigene Bilder'
; .................: 'Eigene Dokumente'
; .................: 'Eigene Musik'
; .................: 'Eigene Videos'
; .................: 'Öffentliche Bilder'
; .................: 'Öffentliche Dokumente'
; .................: 'Öffentliche Musik'
; .................: 'Öffentliche Videos'
; Requirement(s)...: Windows 7
; Return Value(s)..: Localized folder name, by using installed system language
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _GetFolderLocalized($_sFolderGER)
Local $sDrive = StringLeft(@WindowsDir, 1)
Local $sUser = @UserName
Local $iIndex = -1
Local $aFolder[12][2] = [ _
['Programme' , $sDrive & ':\Program Files' ], _
['Programme (x86)' , $sDrive & ':\Program Files (x86)' ], _
['Startmenü' , $sDrive & ':\Users\' & $sUser & '\AppData\Roaming\Microsoft\Windows\Start Menu' ], _
['Autostart' , $sDrive & ':\Users\' & $sUser & '\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup'], _
['Eigene Bilder' , $sDrive & ':\Users\' & $sUser & '\Pictures' ], _
['Eigene Dokumente' , $sDrive & ':\Users\' & $sUser & '\Documents' ], _
['Eigene Musik' , $sDrive & ':\Users\' & $sUser & '\Music' ], _
['Eigene Videos' , $sDrive & ':\Users\' & $sUser & '\Videos' ], _
['Öffentliche Bilder' , $sDrive & ':\Users\Public\Pictures' ], _
['Öffentliche Dokumente' , $sDrive & ':\Users\Public\Documents' ], _
['Öffentliche Musik' , $sDrive & ':\Users\Public\Music' ], _
['Öffentliche Videos' , $sDrive & ':\Users\Public\Videos' ]]
For $i = 0 To 11
If $aFolder[$i][0] = $_sFolderGER Then
$iIndex = $i
ExitLoop
EndIf
Next
If $iIndex = -1 Then Return SetError(1, 0, 0)
Local $sPathIni = $aFolder[$iIndex][1] & '\desktop.ini'
Local $fh = FileOpen($sPathIni), $sLine, $iNumber = -1
While 1
$sLine = FileReadLine($fh)
If @error = -1 Then ExitLoop
If StringInStr($sLine, 'LocalizedResourceName') Then
$iNumber = StringRegExpReplace($sLine, '(.+shell32\.dll,-)(\d+)\z', '$2')
ExitLoop
EndIf
WEnd
FileClose($fh)
If $iNumber = -1 Then Return SetError(2, 0, 0)
Local $aRet = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", "shell32.dll", "ptr", 0, "dword", 0x02)
If @error Then Return SetError(@error, @extended, 0)
Local $hDll = $aRet[0]
$aRet = DllCall("user32.dll", "int", "LoadStringW", "handle", $hDll, "uint", $iNumber, "wstr", "", "int", 4096)
If @error Then Return SetError(@error, @extended, 0)
Local $sLocale = $aRet[3]
DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $hDll)
Return $sLocale
EndFunc ;==>_GetFolderLocalized -
Ich mache hier dicht, dass ist der zweite Thread zum Thema Captcha automatisiert lesen.
Diesmal gibt es als Bonus für's verarschen wollen noch eine Verwarnung.
-
Wenn du ganze Zeilen färben möchtest, geht das einfacher:
[autoit]#Include <GuiListView.au3>
[/autoit][autoit][/autoit][autoit]Local $gui = GUICreate('Test 1')
[/autoit][autoit][/autoit][autoit]
Local $LV = GUICtrlCreateListView("Col 1|Col 2", 15, 15, 300, 250)
Local $hLV = GUICtrlGetHandle($LV)
_GUICtrlListView_SetColumnWidth($hLV, 0, 148)
_GUICtrlListView_SetColumnWidth($hLV, 1, 148)Global $aLV_Item[30]
[/autoit][autoit][/autoit][autoit]
For $i = 1 To 30
$aLV_Item[$i-1] = GUICtrlCreateListViewItem(Random(10000, 1000000, 1) & '|' & Random(10000, 1000000, 1), $LV)
NextGUISetState()
[/autoit][autoit][/autoit][autoit]_SetItemColor($aLV_Item[1], 0xFFFF00) ; Zeile 2 färben
[/autoit][autoit][/autoit][autoit]
Sleep(2000)
_SetItemColor($aLV_Item[1]) ; Zeile 2 zurücksetzenDo
[/autoit][autoit][/autoit][autoit]
Until GUIGetMsg() = -3
GUIDelete($gui)Func _SetItemColor($ID_Item, $iColor=0xFFFFFF)
[/autoit]
GUICtrlSetBkColor($ID_Item, $iColor)
EndFunc -
Hi,
also eine Interaktion mit Notepad++ kannst du meines Erachtens ausschliessen.
Es ist zwar ebenso wie SciTE auf Scintilla Basis, aber das allein erlaubt keine unkontrollierte Verbindung zwischen beiden.
Die Lokalisierung der User Calltipps im Userprofil ist aber nichts Neues, die ist seit ca. 2 Jahren dort untergebracht.
Wenn ich am WE zurück bin, schaue ich mal in meinen Aufzeichnungen dazu nach. Irgendwann hatte ich da ein Skript erstellt, das die Calltipps neu im richtigen Pfad anlegt. -
Du solltest bei einem Fenster dieser Klasse zwingend auf weitere Erkennungsmerkmale prüfen. Denn "[CLASS:#32770]" ist eine Fensterklasse, die nicht spezifisch für dein Programm ist. Dialogboxen sind meist in dieser Fensterklasse und mit (?) VC, VB (?) erstellte Fenster wohl auch.

Du könntest z.B. über den Prozeß, der das Fenster generiert, den Fenstertitel abfragen. Bemühe mal die Suche im Forum. Dazu wurden schon Skripte gepostet. -
Oder so, da wird ENTER auch ohne Eintrag angenommen:
Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GUIConstantsEx.au3>Global Const $WM_COMMAND = 0x0111
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate('TEST')
[/autoit] [autoit][/autoit] [autoit]
$input1 = GUICtrlCreateInput('', 40, 30, 60, 20)
$input2 = GUICtrlCreateInput('', 40, 60, 60, 20)
$input3 = GUICtrlCreateInput('', 40, 90, 60, 20)
$input4 = GUICtrlCreateInput('', 40, 120, 60, 20)GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') ; == registriert Windows-Message "WM_COMMAND" und weist dieser Msg die gleichnamige Funktion zu
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Select
Case $iCode = 0x0
Local $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($hGUI, '', ControlGetFocus($hGUI)))
Switch $ID
Case $input1
ConsoleWrite('ENTER - Input-1' & @CRLF)
Case $input2
ConsoleWrite('ENTER - Input-2' & @CRLF)
Case $input3
ConsoleWrite('ENTER - Input-3' & @CRLF)
Case $input4
ConsoleWrite('ENTER - Input-4' & @CRLF)
EndSwitch
EndSelect
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND -
Bist du beruflich Programmierer?? Würde mich mal interessieren.
Beruflich habe ich gar nix mit Programmierung zu tun.
(Ausser, dass ich eigene Programme für die Arbeit nutze)
Aber ich habe seit meiner Kindheit in den 70er Jahren mit Rechentechnik (so hieß das damals :D) zu tun. Hat mich immer interessiert, angefangen mit Lochkarten über Eigenbau-PC bis heute.
Alles, was ich kann und weiß in dem Bereich, habe ich mit Learning-By-Doing erworben. Try&Error ist immer noch eine der besten Methoden um Ergebnisse dauerhaft zu speichern.
-
Zeile 93:
[autoit]_ArrayAdd(.NODES, $oNode)
[/autoit]kann nicht funktionieren. AutoIt erwartet die Referenz auf ein Array. Du lieferst mit .NODES jedoch einen Ausdruck.
[autoit]
Du mußt das Array auslesen, den Wert hinzufügen und dann das Array zurückschreiben:Func addNode(ByRef $oParent, $Type, $Name, $Page)
[/autoit]
Local $oNode = 0
With $oParent
$oNode = createNode($oParent, .ID, $Type, $Name, $Page)
Local $aTmp = .NODES
_ArrayAdd($aTmp, $oNode)
.NODES = $aTmp
EndWith
EndFunc ;==>addNodeDiese Zeile verwirrt mich:
[autoit]_AutoItObject_AddProperty($oNode, "NODES[10]", $ELSCOPE_PUBLIC)
[/autoit]Wieso NODES[10]?? Das ist nur der Name für die Property, auch wenn du da eckige Klammern drumsetzt wird kein Array draus.
-
Gibt es eine Möglichkeit, bei einem Fehler das Script ohne der Anzeige von Fehlermeldungen, einfach zu beenden?
[autoit]
Es gibt keine Möglichkeit allgemein zu sagen: Bei Fehler ==> Ende
Du mußt schon hinter jede mögliche Fehlerquelle die Zeile einfügen:If @error Then Exit
[/autoit]Voraussetzung: Der entsprechende Funktionsaufruf liefert einen Fehler.
-
Also ich finde sowas übersichtlich in etwa der Form
Und mit Klick auf Bezeichnung oder auch Bild, ist egal, blendest du ein Child in Listenform mit Detaileinträgen ein. Da erfolgt dann die Auswahl.
Alternativ machst du für jede Version eine eigene Spalte. -
Nun habe ich mir überlegt dass ich evtl. in EINER ZELLE mehrere Zeilen Text einbringen könnte.
In einem Standard-Listview sind m.W. keine mehrzeiligen (Sub)Item möglich. Insofern stellt sich die Frage gar nicht mehr. -
Und falls du noch andere Farbräume benötigst, schau mal hier.
-
Das kommt immer drauf an, was und wie oft du drucken willst.
Druckst du nur 2-3 mal im Monat was Farbiges ist ein Tintenstrahldrucker absoluter Schwachsinn. Da du dann mi dem Reinigen der Düsen mehr Tinte verballerst als mit Drucken. Und sehr wahrscheinlich ist nach spätestens 6 Monaten der Druckkopf eingetrocknet. Den zu reinigen ist fast unmöglich, die Teile sind ganz bescheiden verbaut.
Also bei wenig Drucken führt kein Weg am Laser vorbei. Insgesamt gesehen sparst du damit im Vergleich zum Tintenstrahler. Allerdings sind die Anschaffungskosten für Laserprinter mit top Fotodruck noch etwas intensiv.Und wenn es geht - nimm kein Multifunktionsgerät. Ist eins kaputt, ist gleich alles Schrott.

-
Lies mal die Hilfe zu den Befehlen.

Du brauchst nur:
[autoit]_ReplaceStringInFile('Pfad_Deiner_Datei", 'SUCHSTRING', 'ERSETZSTRING')
[/autoit] -
Ich habe das auch mal gemacht, um Spielstände zu speichern. Da brauchte ich auch eine Sortierung beim Speichern, damit beim Laden der ganzen Sektion in ein Array sofort die korrekte Reihenfolge existierte.
Ich suche mal nach dem Skript. -
Kannst du die Erstellung der CSV-Datei nicht beeinflussen?
Dein Beispiel liefert einen recht wilden Mix von Daten, die mal in Anführungszeichen eingefasst sind und mal nicht. Hier sollte eigentlich gelten: Alles oder nichts.
Da in der Überschrift alle Feldnamen in Anführungszeichen eingefasst sind leitet sich daraus eigentlich auch die Bewertung des Dateiinhaltes ab. Also alles mit Anführungszeichen. Somit arbeitest du bereits mit einer fehlerhaften Datei.
Ich verwende allerdings in CSV-Dateien niemals Anführungszeichen, da diese Dateien perse als Text behandelt werden ist eine Stringeinfassung eigentlich sinnfrei.