Ich bin kein Experte im Bereich SAMP, aber das ist wohl kaum mit unseren Forenregeln vereinbar.
Beiträge von name22
-
-
Das Problem ist mir nicht bekannt und ich hab den Fehler nicht reproduzieren können. Du müsstest uns schon dein Script zeigen, wenn dir da geholfen werden soll.
-
Prima! Die Lösung hat zwar auch Nachteile, aber erscheint mir auch wesentlich einfacher.
-
Nach deiner Zeichnung erscheint es mir am sinnvollsten sich an den Spalten zu orientieren. Die Felder also so ins Array zu schreiben wie es deine Nummerierung nahelegt.
Das Array wäre dann folgendermaßen aufgebaut:
Die Verschiebung jeder zweiten Spalte wird im Array selbst nicht berücksichtigt.Dann brauchst du nur einen Regelsatz welche Änderung der Indizes eine bestimmte Bewegungsrichtung im Allgemeinen zur Folge hat.
Dabei gibt es für die nach oben verschobenen Spalten einen anderen Regelsatz als für die nach unten verschobenen Spalten. Das musst du bei BEwegungen mit horizontalem Anteil berücksichtigen.
Es gibt natürlich beliebig viele andere Ansätze. Vielleicht hat jemand eine bessere Idee.
Ich kann dir eventuell später noch ein Beispielscript machen wenn ich dafür Zeit finde ;). -
Falls du wirklich doppelte Elemente komplett entfernen möchtest, dann kannst du diese Version deines Ansatzes verwenden:
Spoiler anzeigen
[autoit]#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>Global $sFilePath = "check.txt", $sNewfile = "double.txt"
[/autoit] [autoit][/autoit] [autoit]
Global $aContent, $aArrayTmp[1] = [0]_FileReadToArray($sFilePath, $aContent)
[/autoit] [autoit][/autoit] [autoit]
_ArraySort($aContent,0,1)
_ArrayDisplay($aContent)Global $bDuplicate
[/autoit]
For $i1 = 1 To $aContent[0]
If $aContent[$i1] = "" Then ContinueLoop
$bDuplicate = False
For $i2 = $i1 + 1 To $aContent[0]
If $aContent[$i1] == $aContent[$i2] Then
$bDuplicate = True
$aContent[$i2] = ""
Else
ExitLoop
EndIf
Next
If $bDuplicate Then
$aContent[$i1] = ""
Else
_ArrayAdd($aArrayTmp, $aContent[$i1])
$aArrayTmp[0] += 1
EndIf
Next
_FileWriteFromArray($sNewfile, $aArrayTmp)
Ich habe einige Denkfehlfer korrigiert und das Script ein wenig aufgeräumt.Wenn du allerdings nur doppelte Elemente entfernen möchtest, so dass sie nur einmal vorhanden sind, dann gibt es die Funktion _ArrayUnique für diese Zwecke.
-
Ich finde das Ergebnis für meine Hardware wieder mal recht interessant.
Ich glaube den Erkennungsfehler hatte ich schon mit dir in der SB besprochen, Andy. Aus irgendeinem Grund wird meine CPU 2 mal erkannt aber einmal mit der Platform ID der GPU ^^.
autoit.de/wcf/attachment/24293/
Meine Hardware: http://www.sysprofile.de/id155685 -
Ich habe den Stil eigentlich zuerst vorschlagen wollen, aber wusste nicht, ob die visuelle Veränderung der GUI in Ordnung geht.
Bei mir macht der Stil das was er soll. Ich arbeite mit Windows 7 x64, hast du vielleicht eine neuere/ältere Version? Mich würde ja wirklich interessieren ob es den Stil vielleicht nur für bestimmte Versionen gibt. -
Wenn du willst, dass nur exakt eine der beiden Bedingungen in den Klammern wahr sein kann, dann habe ich für dich diese dezente Alternative mit XOR Verknüpfungen.
Spoiler anzeigen
[autoit]If ((Not ($Mahnstufe_schon_gesetzt <> 1) And ($Mahnstufe_schon_gesetzt = 0)) Or (($Mahnstufe_schon_gesetzt <> 1) And Not ($Mahnstufe_schon_gesetzt = 0))) And ((Not ($Kassenrechnung <> 1) And ($AG_Rechnung <> "X")) Or (($Kassenrechnung <> 1) And Not ($AG_Rechnung <> "X"))) Then ConsoleWrite(True)
[/autoit]
Ich hatte keine Lust das noch zu kürzen :D. Deswegen gibt es auch keine Garantie auf Richtigkeit. -
Der Stil $WS_EX_NOACTIVATE sollte das erledigen.
[autoit]#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]$hWnd = GUICreate("Test", 400, 400, Default, Default, Default, $WS_EX_NOACTIVATE)
[/autoit][autoit][/autoit][autoit]
GUISetState()While GUIGetMsg() <> -3
[/autoit]
WEnd -
Alles Gute zum Geburtstag eukalpytus!
-
Ich hätte gerne auch den Zubehör den du angeboten hast (Mainboard, Kühler..).
Den Rest können wir ja per PN klären ;). -
Ich könnte dir aber keine SLI Bridge im Gegenzug anbieten sondern höchstens ein Crossfire Kabel von AMD :D. Falls das sonst niemand will, nehme ich die Sachen gerne.
Und ja, das mit den Preisen ist eine Schweinerei.. -
Die Dinger werden scheinbar für 10€ gehandelt. Ich habe nur ein Modell von Fujitsu für 80€ gefunden, das laut Rezensionen maßlos überteuert ist. Ich hätte zwar gerne den Pentium Prozessor, aber bescheißen möchte ich dich nicht.
http://www.amazon.de/Nvidia-Br%C3%B…/dp/B00576ESX2/Selbst ein 3 way SLI Kabel kostet von EVGA nur 20€.
-
In der Hilfe zu _GUIScrollBars_Init findest du ein Beispiel, wie das funktioniert. Das kannst du eigentlich direkt übernehmen und für deine Zwecke anpassen.
-
-
Das kannst du auch per Regexp machen. Du musst nur das Mbit/s in das Pattern hinter den auszulesenden Teil schreiben.
Spoiler anzeigen
[autoit]$aDate = StringRegExp($sData, "Datum: (.+)", 3)
[/autoit]
$aDown = StringRegExp($sData, "Download: (.+) Mbit/s", 3)
$aUp = StringRegExp($sData, "Upload: (.+) Mbit/s", 3) -
Wie wäre es damit?
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$sFilePath = @ScriptDir & "\speedtest.txt"
[/autoit] [autoit][/autoit] [autoit]
$sData = FileRead($sFilePath)$aDate = StringRegExp($sData, "Datum: (.+)", 3)
[/autoit] [autoit][/autoit] [autoit]
$aDown = StringRegExp($sData, "Download: (.+)", 3)
$aUp = StringRegExp($sData, "Upload: (.+)", 3)_ArrayDisplay($aDate, "Daten")
[/autoit]
_ArrayDisplay($aDown, "Download")
_ArrayDisplay($aUp, "Upload")
Du kannst bestimmte Ergebnisse des Patternsmit mit "()" zu einer Gruppe zusammenfassen. Dadurch erscheint pro Match nur der Inhalt der Klammern im Ergebnis Array. -
Ich hatte dieses Problem auch schon. Nicht nur der Exitcode wird falsch ausgelesen, ConsoleWrite schreibt auch keine Werte mehr in die Scite Konsole. Vermutlich kann Scite nicht mehr auf die Standard Streams von AutoIt zugreifen wenn das Script mit Administratorrechten ausgeführt wird. Der Fehler könnte natürlich auch bei der AutoIt exe liegen, ich habe das nicht genau überprüft.
-
Ich weiß nicht welches Script du jetzt meinst. Die Zeilenangabe macht für mich in beiden Fällen nicht viel Sinn.
Aber wir haben ja beide praktisch das selbe Vorgehen. Du musst entweder für einen String ein separates StringFormat Objekt erstellen und bei DrawStringEx angeben oder das StringFormat Objekt, das beide verwenden, vor dem zweiten Aufruf von DrawStringEx verändern. In beiden Fällen verwendest du die Funktion _GDIPlus_StringFormatSetAlign mit dem Parameter 2. In der Hilfe kannst du nachlesen welcher Parameter was macht. -
Je mehr desto besser?