Schau dir mal
[autoit]_DateAdd
[/autoit]an.
Schau dir mal
[autoit]_DateAdd
[/autoit]an.
Global $sRead = FileRead("Pfad.csv")
Global $sDelimiter = _GetDelim($sRead)
Func _GetDelim($sContent)
If StringInStr($sContent, ',') Then
Return ','
ElseIf StringInStr($sContent, ';') Then
Return ';'
Else
Return SetError(1,0,'')
EndIf
EndFunc
Wobei aber trotzdem das Problem besteht, dass bei Komma als Trenner Semikolon im Text enthalten sein kann und umgekehrt bei Semikolon als Trenner im Text dann Kommas sind. Hier müsstest du dann prüfen ob beides enthalten ist und in diesem Fall den User auffordern mitzuteilen, welches Zeichen der Trenner ist. Brauchst ja die Funktion nur entsprechend anzupassen.
Case $NM_CLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste anklickt
[/autoit]
Das ist die Stelle im Bsp.-Skript, die für dich interessant ist. Führe das Bsp.-Skript doch mal aus, dann siehst du wie die Auswertung funktioniert.
Schau mal in das Bsp. der Hilfe zu http://translation.autoit.de/onlinehilfe/li…View_Create.htm.
Da siehst du alle Events und wie du sie verwendest.
Ich würde dann ein Listview mit 7 Spalten verwenden und dann würden immer 3 Item zusammengehören
Sp1/Sp8/Sp15 | Sp2/Sp9/Sp16 | Sp3/Sp10/Sp17 | Sp4/Sp11/Sp18 | Sp5/Sp12/Sp19 | Sp6/Sp13 | Sp7/Sp14
Item1_1 Item1_2 Item1_3 Item1_4 Item1_5 Item1_6 Item1_7
Item1_8 Item1_9 Item1_10 Item1_11 Item1_12 Item1_13 Item1_14
Item1_15 Item1_16 Item1_17 Item1_18 Item1_19
Und zur besseren Übersicht jede erste Zeile einfärben.
Kann man diese beiden Buttons auch mit einem eigenen Text belegen ?
Nur theoretisch geht das. Dazu müsste man das Handle der Box abfragen, deren Childs ermitteln (Prompt-Label, Inputfeld, Button) und könnte dann auch den Text der Button ändern.
Aber: Eben nur theoretisch, da mit dem Aufruf der Box das Skript pausiert und auf Eingaben wartet. ![]()
Also bleibt nur selber machen.
zawn:
Mal zum besseren Verständnis für dich, warum alle beim Thema Dekompilieren "abgehen":
Es ist doch völlig uninteressant und spielt nicht die geringste Rolle wessen Skript du dekompilieren willst. Der Knackpunkt ist, dass das Skript mit "Aut2exe.exe" in eine ausführbare Datei kompiliert wurde. An dieser Datei hast du keinerlei Rechte und erklärst dich bei Nutzung derselben mit den Lizenzbedingungen des Eigentümers einverstanden. Und diese besagen klipp und klar: No Decompiling!
Das heisst ebenso sonnenklar, dass auch das Dekompilieren eigener Skripte einen Lizenzverstoß darstellt.
Wenn hier also jemand einen Grund hätte etwas angepisst zu reagieren, so wären wir das, weil es immer noch und wieder Leute gibt, denen das Wort Lizenz total am Arsch vorbeigeht!
Alles Gute Oscar. Und denke dran: Ab einem bestimmten Zeitpunkt wird man nicht älter, sondern reifer. ![]()
Du deklarierst die Array-Variable Global, die du im Skript verwendest und in der Größe änderst.
Die "Ursprungskopie" liegt im Lokalen Statischen Dictioanary innerhalb der Funktion.
Wenn es nur eine Zeile ist, brauchst du nicht extra in ein Array lesen. Lies die gesamte Datei ein und weise dies einer Variablen zu.
[autoit]$Inhalt = FileRead($Datei)
[/autoit]Hat deine Funktion einen Nachteil?
Eher einen Vorteil: Du verwendest keine Globalen Variablen zum Speichern der Original-Arrays (Local Static in der Funktion).
Auch wenn da durchaus konträr diskutiert wird, halte ich es zumindest nicht für falsch (und es bringt auch keine Nachteile), wenn man Globale Variablen so wenig wie möglich nutzt. ![]()
Diese Methode hat allerdings den Nachteil, dass man wissen muss, ob es ein 1D oder 2D Array ist, oder?
Also du solltest schon immer wissen, ob dein Array 1D oder 2D ist.
Wenn du jetzt einige Arrays verwendest, die du immer wieder zurücksetzen möchtest würde ich eine Funktion empfehlen, die sowohl erstellt, als auch resizt:
#Include <Array.au3>
Func _ManageArray($_sName, $_fResize=0, $_iDim1=-1, $_iDim2=-1)
Local Static $dictArr = ObjCreate("Scripting.Dictionary")
Local $aTmp[1]
If Not $_fResize Then
If $_iDim2 = -1 Then
ReDim $aTmp[$_iDim1]
Else
ReDim $aTmp[$_iDim1][$_iDim2]
EndIf
$dictArr.Add($_sName, $aTmp)
Return $aTmp
Else
Return $dictArr.Item($_sName)
EndIf
EndFunc
$aTest1 = _ManageArray("aTest1", 0, 5) ; Erstellen 1D - Array
_ArrayDisplay($aTest1)
ReDim $aTest1[8]
_ArrayDisplay($aTest1)
$aTest1 = _ManageArray("aTest1", 1) ; Resizen
_ArrayDisplay($aTest1)
$aTest2 = _ManageArray("aTest2", 0, 5, 3) ; Erstellen 2D - Array
_ArrayDisplay($aTest2)
ReDim $aTest2[8][3]
_ArrayDisplay($aTest2)
$aTest2 = _ManageArray("aTest2", 1) ; Resizen
_ArrayDisplay($aTest2)
Wenn es kein Problem wäre, die Arrays mit 1-basiertem index zu arbeiten, verwende es so (Anfangsgröße dann 1 größer als gewollt):
[autoit]Global $array[6] = [6]
;...
;...
ReDim $array[$array[0]]
Ich habe inzwischen mit diversen USB-RS232-Adaptern jahrelang Erfahrungen sammeln können. Nur ganz wenige sind in der Lage sauber über einen Port >4 zu kommunizieren.
Also switche den Adapter in deinem PC auf einen Port zw. 1 - 4 und dann steigen auch deine Erfolgschancen. Die einzigen Adapter, die auch problemlos auf hohen Ports liefen waren dann auch aus der Preisklasse > 50 EUR.
Ich vermute mal, dass bei Bluetooth-Adaptern Ähnliches gilt.
Deine Fragestellung verwirrt mich etwas. Was willst du denn über die 3,5-er Klinke koppeln? Bei Bluetooth-Headsets habe ich bisher erst einmal eine 3,5-er Klinke gesehen und die war zum Anschluß des Ladekabels.
Möchtest du gleichzeitig:
- per Bluetooth zum Telefonieren mit dem Handy gekoppelt sein
und
- die MP3 vom Handy im Auto abspielen ?
Dann wäre doch eher die Kopplung per Kabel Telefon<-->Auto erforderlich um auf die Musik zuzugreifen. Allerdings bin ich mir nicht sicher ob das überhaupt realisierbar ist, an zwei getrennte Hardwareelemente gleichzeitig zu koppeln.
Ich finde, dein Titel ist irreführend. Wenn ich diesen lese, vermute ich dass du beschreibst, wie Elemente der NET-Klassenbibliothek in AutoIt genutzt werden können. (Hab mich schon gewundert, da das im Wesentlichen nicht möglich ist).
Dein Tut beschreibt das Erstellen eigener Dll - das sollte auch im Titel zum Tragen kommen. ![]()
Wenn du z.B. 100 Einträge machen willst, brauchst du bei dem Konzept 100 Sektionen in der Ini. Wenig sinnvoll.
Mach doch nur eine Sektion (dann kannst du alle Inhalte mit IniReadSection in einem Rutsch lesen) und gliedere die etwa so:
Dann kannst du den Inhalt des Schlüssels, also alles was rechts vom Gleichheitszeichen steht, sofort mit
GUICtrlCreateListViewItem
[/autoit]verwenden. Für die zweite Spalte ist kein Wert enthalten, deshalb die doppelte Pipe (||). Dazwischen kannst du vorm Erstellen des ListviewItem den Wert aus der anderen Datei einfügen.
Du hast das richtig erkannt, genauso wie du mir das geschrieben hast, sollte die ini Datei eingelsen werden
Ich möchte wissen, welcher Wert aus deiner Beispiel INI an welcher position des Listview eingetragen werden soll.
Also schreib bitte eine Pseudo-tabelle, wie ich es gemacht habe, aber mit den Angaben aus der INI.
Vermutlich ist aber der Aufbau deiner INI nicht sinnvoll, aber um das sicher zu sagen muss ich wissen, wie das Endergebnis aussehen soll.