1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. vism

Beiträge von vism

  • Bestimmte Werte durch andere ebenfalls bestimmte Werte ersetzen

    • vism
    • 8. Juni 2016 um 21:14
    Zitat von Code-Jack

    Datei laden und jede Zeile mit StringSplit zerlegen (siehe AutoIt Help).
    Resultat ist ein Array mit so vielen Einträgen, wie du Spalten hast.

    Für weitgehend mundfertige Beispiele suche im Forum mal nach "Ini-Datei" und "CSV". Da findest Du Beispiele, wie man Dateien lädt, zerlegt und wieder speichert.

    Dann müssen nur noch, in einer Schleife, die Werte ausgetauscht werden, was wohl keine Probleme bereiten sollte, wenn Du schon mal mit Arrays gearbeitet hast.

    Vielen Dank, StringSplit hat mir geholfen, dankeschön!
    Manchmal hat man leider einfach ein Brett vorm Kopf X(

  • Bestimmte Werte durch andere ebenfalls bestimmte Werte ersetzen

    • vism
    • 8. Juni 2016 um 20:05

    Hallo zusammen,

    ich knacke zur Zeit an einem wahrscheinlich einfach zu lösendem Problem.

    ich habe eine Datei (.csv) die jeweils 3 Spalten hat.

    zB

    9980765;5229;EPM ARTS
    9980765;5228;EPM ARTS
    9980765;5225;EPM ARTS
    9980765;5232;EPM ARTS
    9145041;12587;
    9145041;12585;
    9145041;4694;
    9145041;7833;
    9145041;12583;
    9146032;;
    6433161;19193;12/2010

    hier möchte ich nun den ersten wert (vor dem ersten ;) ersetzen.
    Und zwar auch durch vorgegebene Werte.
    Die zu ersetzenden Werte stehen in einer .txt (einspaltig)
    Die Werte gegen die Ausgetauscht werden sollen stehen ebenfalls in einer .txt (einspaltig)

    Ich kann das Problem aber nicht lösen...
    Ich habe nichtmal einen Ansatz...
    Ich hoffe jemand kann mir weiterhelfen.

    Vielen Dank im Voraus!

  • CSV Inhalte zusammenführen und als eigenständige Datei abspeichern

    • vism
    • 15. März 2016 um 01:16

    Vielen Vielen Dank allen,

    Nutze jetzt folgenden Code für mein Vorhaben.

    AutoIt
    #include <File.au3>
    #include <GUIConstants.au3>
    
    
    Local $sFile = "TOU.csv"
    Local $aLines, $aCols
    Local $iNumber, $hFile, $hFileCSV
    
    
    GUICreate("KBA / DESC Creator", 300, 110)
    
    
    GUISetState(@SW_SHOW)
    
    
    $Progress = GUICtrlCreateProgress(10, 10, 280, 10, $PBS_SMOOTH)
    GUICtrlSetData(-1, 0)
    $SubProgress = GUICtrlCreateProgress(10, 25, 280, 10, $PBS_SMOOTH)
    GUICtrlSetData(-1, 0)
    
    
    $Label = GUICtrlCreateLabel(" N/A / N/A ( N/A % )", 10, 50, 280)
    
    
    $Go = GUICtrlCreateButton("Starten", 10, 80, 280, 20)
    
    
    Func _Start()
    	GUICtrlSetData($Label, "Einlesen der 'TOU' Datei...")
    	GUICtrlSetData($Progress, 95)
    	GUICtrlSetData($SubProgress, 95)
    	_FileReadToArray( $sFile, $aLines )
    	;~ _ArrayDisplay( $aLines )
    
    
    	GUICtrlSetData($Progress, 0)
    	GUICtrlSetData($SubProgress, 0)
    
    
    	For $i = 1 To $aLines[0] Step 1
    		GUICtrlSetData($Label, $i & " / " & $aLines[0])
    		GUICtrlSetData($Progress, (100 / $aLines[0]) * $i)
    		GUICtrlSetData($SubProgress, 0)
    		$aCols = StringSplit( $aLines[$i], ";" )
    
    
    		$sDir = (@ScriptDir & "\DESC\")
    		If Not FileExists( $sDir ) Then
    			$iRetVal = DirCreate( $sDir )
    			If $iRetVal = 0 Then
    				MsgBox($MB_SYSTEMMODAL, "", "An error occurred when creating the directory '" & $sDir & "'.")
    				Exit
    			EndIf
    		EndIf
    
    
    		$sDirKBA = @ScriptDir & "\raw\"
    		If Not FileExists( $sDirKBA ) Then
    			$iRetVal = DirCreate( $sDirKBA )
    			If $iRetVal = 0 Then
    				MsgBox($MB_SYSTEMMODAL, "", "An error occurred when creating the directory '" & $sDirKBA & "'.")
    				Exit
    			EndIf
    		EndIf
    
    
    		$hFile = FileOpen( $sDir & "\" & $aCols[2] & ".txt",  $FO_OVERWRITE )
    		If $hFile = -1 Then
    			MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading/writing the file '" & $sDir & "\" & $aCols[2] & ".txt'.")
    			Exit
    		EndIf
    		FileWriteLine( $hFile, '<!--ANN-->' & @CRLF & 'var TT= ""' & @CRLF & @CRLF & '<!--pcs-->' & @CRLF & 'var UMF= "1x " + TT' & @CRLF & @CRLF & '<!--ANP-->' & @CRLF & 'var art1 = ""' & @CRLF & 'var art2 = ""' & @CRLF & 'var art3 = ""' & @CRLF & 'var art4 = ""' & @CRLF & @CRLF & '<!--AB-->' & @CRLF & 'var DE= "MAB: PR<br>Typ: ' & $aCols[3] & '<br>' & StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace($aCols[5], 'ERG ', ''), 'ERG2 ', ''), ', ', '<br>'), "ö", "oe"), "ü", "ue"), "ä", "ae"), "Ö", "Oe"), "Ü", "Ue"), "Ä", "Ae"), "ß", "ss") & '"')
    		FileClose( $hFile )
    
    
    		$hFile = ""
    
    
    		If $iNumber <> $aCols[2] Then
    			If $hFileCSV <> "" Then FileClose( $hFileCSV )
    			$hFileCSV = FileOpen( $sDirKBA & "\" & $aCols[2] & ".csv",  $FO_OVERWRITE )
    			FileWriteLine($hFileCSV, "PID;TypK;FCom")
    			If $hFile = -1 Then
    				MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading/writing the file '" & $sDirKBA & "\" & $aCols[2] & ".csv'.")
    				Exit
    			EndIf
    			GUICtrlSetData($SubProgress, 50)
    		EndIf
    
    
    		$iNumber = $aCols[2]
    		If $aCols[6] <> "" Then
    			FileWriteLine( $hFileCSV, ";" & $aCols[7] & ";" & $aCols[6] )
    		Else
    			FileWriteLine( $hFileCSV, ";" & $aCols[7] & ";" )
    		EndIf
    		GUICtrlSetData($SubProgress, 100)
    	Next
    	FileDelete(@ScriptDir & "\raw\ART_CODE_1.csv")
    	FileDelete(@ScriptDir & "\Desc\ART_CODE_1.txt")
    EndFunc
    
    
    While 1
    	$msg = GUIGetMsg()
    	Select
    		Case $msg = $GUI_EVENT_CLOSE
    			Exit
    		Case $msg = $Go
    			_Start()
    	EndSelect
    WEnd
    Alles anzeigen
  • CSV Inhalte zusammenführen und als eigenständige Datei abspeichern

    • vism
    • 14. März 2016 um 16:04

    Danke für die Antworten, habe es jetzt etwas vereinfacht, nun müssen aus lediglich einer .csv (340mb)
    Dateien erstellt werden.
    Hier ein kleiner Auszug und was passieren soll.

    Zellen mit X sollen ignoriert werden, zudem ist die CSV ; getrennt, die fehler enthalten ="TEXT" um korrekt angezeigt zu werden(Nummern etc)


    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    x NAME NUMMER x x KATEGORIE ISX DESC TOU OE TYP x x x x x x x x x
    x NAME NUMMER x x KATEGORIE ISX DESC TOU OE TYP x x x x x x x x x
    x NAME NUMMER x x KATEGORIE ISX DESC TOU OE TYP x x x x x x x x x

    So also die CSV soll eingelesen werden und nun folgendes tun

    2 Dateien erstellen
    \DESC\NUMMER.txt
    \AT\NUMMER.csv

    in die NUMMER.txt sollen ein paar der Infos reingeschrieben werden, die Datei soll dann so aussehen

    Code
    <!--artname-->
    var title = ""
    
    
    <!--pcs-->
    var Umfang = "1x " + title
    
    
    <!--ArtNr+Pic-->
    var art1 = ""
    var art2 = ""
    var art3 = ""
    var art4 = ""
    
    
    <!--OEN-->
    var OENo = "OE"
    
    
    <!--ArtBesch-->
    var Beschreibung = "DESC"
    Alles anzeigen

    die CSV sollte so aussehen

    PID TYPK FITC
    TYP TOU
    TYP TOU

    Sobald sich dann die Nummer ändert, soll dementsprechend die neue Datei erstellt werden

  • CSV Inhalte zusammenführen und als eigenständige Datei abspeichern

    • vism
    • 14. März 2016 um 14:30

    Hallo zusammen,

    ich habe eine Frage und zwar lese ich eine .csv Datei aus, Anhand dieser wird eine Datei mit Zelleninhalt Spalte eins erstellt, in diese Datei wird dann der Inhalt aus einer anderen Zelle geschrieben, bis sich der Inhalt der ersten Spalte ändert.
    Das Problem ist, dass die auszulesende CSV recht groß ist, (400.000 Zeilen)
    Somit geht das am Anfang einigermaßen fix, wird aber sehr langsam bei Zeiten.

    Anbei den Code den ich jetzt nutze, bestimmt gibt es eine Möglichkeit die Sache zu beschleunigen ich hoffe jemand kann mir ein paar Tipps geben!

    Spoiler anzeigen
    AutoIt
    #include <File.au3>
    
    
    $File = "TOU.csv"
    
    
    For $i = 2 To (_FileCountLines($File)-1) Step +1
    	TraySetToolTip($File & " (" & $i & " / " & (_FileCountLines($File)-1) & ")")
    	FileWrite(@ScriptDir & "\Test.txt", StringReplace(FileReadLine($File, $i), ";", @CRLF) & @CRLF)
    	$FileName = StringTrimRight(StringTrimLeft(FileReadLine(@ScriptDir & "\Test.txt", 3), 2), 1)
    	If Not FileExists($FileName & ".csv") And $FileName <> "CODE_PART" Then
    		FileWrite($FileName & ".csv", "ProductID;KTypNr;FitmentComments" & @CRLF)
    	EndIf
    	FileWrite($FileName & ".csv", ";" & FileReadLine(@ScriptDir & "\Test.txt", 5) & ";" & StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(FileReadLine(@ScriptDir & "\Test.txt", 6), "ö", "oe"), "ü", "ue"), "ä", "ae"), "Ö", "Oe"), "Ü", "Ue"), "Ä", "Ae"), "ß", "ss") & @CRLF)
    	FileOpen("Test.txt", 2)
    	FileWrite("Test.txt", "")
    	FileClose("Test.txt")
    Next
    FileDelete("Test.txt")
    Exit
    Alles anzeigen

    Vielen Dank im Voraus!

  • Text Dateien vergleichen und Ergänzen

    • vism
    • 12. März 2016 um 01:25
    Zitat von Tweaky

    Steht in der Hilfe drin.
    Schau dir von _FileWriteFromArray mal den 3. Parameter an ...

    Vielen Dank, hab's glatt übersehen! Danke! =)

  • Text Dateien vergleichen und Ergänzen

    • vism
    • 11. März 2016 um 23:55

    Vielen Vielen Dank, ein letztes noch, wenn Ich den Inhalt des Arrays ( _FileWriteFromArray ) jetzt in eine Neue Datei verpacken möchte, wie vermeide ich, dass die 10 (Row0) aus der ersten Spalte geschrieben wird?

    Schönes Wochenende schonmal!

  • Text Dateien vergleichen und Ergänzen

    • vism
    • 11. März 2016 um 23:43
    Zitat von Tweaky

    So schwer ist es doch nicht.

    Hier mal meine Variante
    [SNIP]


    Vielen Dank dafür, wenn die Anzahl aber links nicht immer gleich ist? Also es kann auch sein, dass nur 3 zeichen, oder aber auch 8 zeichen usw vorhanden sind, in dem fall wird zB die ;523; nicht kopiert wenn eben keine 6 Zeichen vorhanden sind.

    Ansonsten perfekt, genau so wie ich es gesucht habe!
    Wenn es jetzt noch klappt, wäre das super!

    Danke auf jeden Fall!

  • Text Dateien vergleichen und Ergänzen

    • vism
    • 11. März 2016 um 23:18

    Guten Abend zusammen,

    ich habe ein Problem, ich möchte gerne 2 Textdateien vergleichen und die erste (mit der verglichen wird) ergänzen, dabei nicht nur um fehlende zeilen sondern existierende Zeilen sollen auch ersetzt werden.

    Beispiel
    File 1

    ;5929;
    ;5930;
    ;5935;
    ;1658;
    ;5936;
    ;6306;
    ;6314;
    ;6326;
    ;523;
    ;1678;
    ;5929;test
    ;5936;235
    ;6314;1622
    ;6326;1576


    Was soll nun passieren, File 1 (linke Spalte) soll um den Rest aus File 2 (rechte Spalte) ergänzt werden.
    Links stehen allerdings auch Werte, die rechts nicht auftauchen, die sollen NICHT beachtet werden, die Zeile soll so stehen bleiben.

    Am Ende soll das also dann so aussehen

    ;5929;test
    ;5930;
    ;5935;
    ;1658;
    ;5936;235
    ;6306;
    ;6314;1622
    ;6326;1576
    ;523;
    ;1678;

    Habe weder in der SuFu etwas gefunden noch hat mir die Hilfe, etwas gebracht.

    Hoffe mir kann jemand weiterhelfen!

    Mit freundlichem Gruß
    VisM =)

  • CMD mit StdoutRead komplett auslesen

    • vism
    • 2. Dezember 2014 um 21:57
    Zitat von KloMeister
    Spoiler anzeigen

    Ich vermute, dass liegt daran, dass die Konsole nicht ansprechbar ist, solange diese etwas ausführt.

    Du hast dann wohl erst wieder Zugriff, wenn die Schleife im Updateprozess unterbrochen wird.

    Eine Lösung direkt habe ich aber auch nicht. Wird wohl nicht ganz einfach werden. Ich vermute, man muss dafür mit Speicher-Hooks arbeiten, um einen Break im CMD auszulösen und damit die Konsole auslesefähig zu machen.

    Das klingt interessant, es gibt auch leider keine Möglichkeit die steamcmd.exe mit bspw. einer debug-funktion auszustatten, die evtl. eine Art Log erstellt, welches man auslesen könnte.
    Generell reicht das Spektrum der geloggten Daten nur bis hin zu den einzelnen Servern die connected werden jedoch nicht für den eigentlichen Updateprozess (Progresstechnisch) relevant sind. =/

    Danke trotzdem für die Antwort! =)

  • CMD mit StdoutRead komplett auslesen

    • vism
    • 1. Dezember 2014 um 22:36

    Hallo zusammen,

    ich komme leider nicht weiter, mein Problem ist, dass ich eine bereits kompilierte .exe (CMD Window) auslesen muss.

    Leider wird nicht alles ausgelesen, lediglich bis der Updateprozess beginnt (dieser zeit den Fortschritt des Downloads an, um genau den geht es mir)

    Lediglich wenn das CMD-Window geschlossen(!) wird, wird angezeigt was in ihm gestanden hat, aber eben nicht "live". =/

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Test")

    [/autoit] [autoit][/autoit] [autoit]

    $ServerLog = GUICtrlCreateEdit("", 5, 5, 300 - 10, 300 - 10)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Local $shell = Run(@ScriptDir & "\steamcmd.exe" & " steamcmd +runscript 0_firstinstall.txt", @ScriptDir, @SW_SHOW, 0x2)
    WinWaitActive (@ScriptDir & "\steamcmd.exe" )

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $line = StdoutRead($shell)
    If @error Then ExitLoop
    $EditOld = GUICtrlRead($ServerLog)
    GUICtrlSetData($ServerLog, $line & @CRLF & $EditOld)
    sleep(200)
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Wie kann ich das Problem beheben?

    Anbei ein Screenshot der CMD Console alles im roten Frame wird ausgegeben, darunter erst nachdem die Console geschlossen wird.

    i.imgur.com/AfUyuEW.jpg

    Handelt es sich evtl um einen großen zusammenhängenden ablauf? So das

    [autoit]

    StdoutRead

    [/autoit]

    selbigen erst nach komplettierung anzeigt? (Bzw. bei Abbruch, weil der Prozess unterbrochen wird)

    Gibt es da evtl einen Workaround? Der das ganze in Zeilen splitten kann?

  • Zahlen sortieren

    • vism
    • 24. November 2014 um 22:47

    Funktioniert so leider nicht,

    Spoiler anzeigen
    [autoit]

    ==> Subscript used on non-accessible variable.:
    For $i = 1 To $aEntries[0][0]
    For $i = 1 To $aEntries^ ERROR

    [/autoit]

    Wie deklariere ich das denn vorher? Habe mit IniReadSection leider noch nicht gearbeitet. =/

    EDIT: Hat sich erledigt. :D Hatte nen Rechtschreibfehler >_<, Danke!

  • Zahlen sortieren

    • vism
    • 24. November 2014 um 06:40

    Danke für die Antworten, so werden die Zahlen geholt:


    Spoiler anzeigen
    [autoit]

    For $j = 1 to 3 Step +1
    If $j = 1 Then
    $k = "total_kills_"
    ElseIf $j = 2 Then
    $k = "total_hits_"
    ElseIf $j = 3 Then
    $k = "total_shots_"
    EndIf
    ;knife
    $k_knife = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", "total_kills_knife", "") & "kni"
    ;pistols
    $k_glock = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "glock", "") & "glk"
    $k_deagle = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "deagle", "") & "dea"
    $k_elite = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "elite", "") & "eli"
    $k_fiveseven = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "fiveseven", "") & "fis"
    $k_hkp2000 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "hkp2000", "") & "hkp"
    ;mps
    $k_mac10 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "mac10", "") & "mac"
    $k_ump45 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "ump45", "") & "ump"
    $k_p90 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "p90", "") & "p90"
    $k_mp7 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "mp7", "") & "mp7"
    $k_mp9 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "mp9", "") & "mp9"
    $k_bizon = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "bizon", "") & "biz"
    $k_tec9 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "tec9", "") & "tec"
    $k_mag7 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "mag7", "") & "mag"
    ;rifles
    $k_aug = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "aug", "") & "aug"
    $k_famas = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "famas", "") & "fam"
    $k_g3sg1 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "g3sg1", "") & "g3s"
    $k_sg556 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "sg556", "") & "sg5"
    $k_scar20 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "scar20", "") & "sca"
    $k_ssg08 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "ssg08", "") & "ssg"
    $k_galil = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "galilar", "") & "gal"
    $k_m4a1 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "m4a1", "") & "m4a"
    $k_ak47 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "ak47", "") & "a47"
    $k_awp = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "AWP", "") & "awp"
    ;heavy
    $k_xm1014 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "xm1014", "") & "xm1"
    $k_m249 = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "m249", "") & "249"
    $k_nova = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "nova", "") & "nov"
    $k_negev = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "negev", "") & "neg"
    $k_sawedoff = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "sawedoff", "") & "saw"
    ;grenades
    $k_hegrenade = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", "total_kills_hegrenade", "") & "heg"
    $k_molotov = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", "total_kills_molotov", "") & "mol"
    ;misc
    If $k = 1 Or $k = 3 Then
    $k_taser = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", $k & "taser", "") & " = " & "tas"
    Else
    $k_taser = IniRead(@AppDataDir & "\csgoimg\statusreader\cfg.ini", "stats", "total_kills_taser", "") & "tas"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $aData[32] = [$k_knife,$k_glock,$k_deagle,$k_elite,$k_fiveseven,$k_hkp2000,$k_mac10,$k_ump45,$k_p90,$k_mp7,$k_mp9,$k_bizon,$k_tec9,$k_mag7,$k_aug,$k_famas,$k_g3sg1,$k_sg556,$k_scar20,$k_ssg08,$k_galil,$k_m4a1,$k_ak47,$k_awp,$k_xm1014,$k_taser,$k_molotov,$k_hegrenade,$k_sawedoff,$k_negev,$k_nova,$k_m249];Hier deine Daten Quelle (in diesem Fall habe ich einfach ein Beispiel Array erstellt)

    [/autoit] [autoit][/autoit] [autoit]

    _ArraySort($aData)

    [/autoit] [autoit][/autoit] [autoit]

    Local $sWrite = ''
    For $i = 0 To UBound($aData) -1
    If $k = "total_hits_" Then
    $sWrite &= $k & "_" & StringRight($aData[$i], 3) & " = " & StringTrimRight($aData[$i], 3) & @CRLF
    Else
    $sWrite &= $k & StringRight($aData[$i], 3) & " = " & StringTrimRight($aData[$i], 3) & @CRLF
    EndIf
    ;~ FileWriteLine($sOutput,$aData[$i])
    Next
    FileWrite($sOutput, $sWrite)
    Next

    [/autoit]

    Die Datei aus der die Daten stammen, sieht so aus:

    Spoiler anzeigen

    [stats]
    total_kills=14753
    total_deaths=8499
    total_time_played=802337
    total_planted_bombs=532
    total_defused_bombs=155
    total_wins=6240
    total_damage_done=2121155
    total_money_earned=32251600
    total_rescued_hostages=511
    total_kills_knife=180
    total_kills_hegrenade=53
    total_kills_glock=521
    total_kills_deagle=560
    total_kills_elite=115
    total_kills_fiveseven=55
    total_kills_xm1014=220
    total_kills_mac10=110
    total_kills_ump45=289
    total_kills_p90=584
    total_kills_awp=2248
    total_kills_ak47=2733
    total_kills_aug=285
    total_kills_famas=182
    total_kills_g3sg1=104
    total_kills_m249=111
    total_kills_headshot=7170
    total_kills_enemy_weapon=873
    total_wins_pistolround=334
    total_wins_map_cs_assault=8
    total_wins_map_cs_italy=103
    total_wins_map_cs_office=129
    total_wins_map_de_aztec=105
    total_wins_map_de_cbble=30
    total_wins_map_de_dust2=627
    total_wins_map_de_dust=140
    total_wins_map_de_inferno=287
    total_wins_map_de_nuke=368
    total_wins_map_de_train=141
    total_weapons_donated=1522
    total_broken_windows=166
    total_kills_enemy_blinded=180
    total_kills_knife_fight=116
    total_kills_against_zoomed_sniper=949
    total_dominations=424
    total_domination_overkills=2434
    total_revenges=28
    total_shots_hit=46078
    total_shots_fired=217339
    total_rounds_played=10856
    total_shots_deagle=3241
    total_shots_glock=11095
    total_shots_elite=1077
    total_shots_fiveseven=453
    total_shots_awp=6069
    total_shots_ak47=58076
    total_shots_aug=3748
    total_shots_famas=2746
    total_shots_g3sg1=502
    total_shots_p90=11312
    total_shots_mac10=1797
    total_shots_ump45=3600
    total_shots_xm1014=4302
    total_shots_m249=1350
    total_hits_deagle=1031
    total_hits_glock=2537
    total_hits_elite=375
    total_hits_fiveseven=155
    total_hits_awp=2422
    total_hits_ak47=8723
    total_hits_aug=904
    total_hits_famas=659
    total_hits_g3sg1=177
    total_hits_p90=2653
    total_hits_mac10=614
    total_hits_ump45=1063
    total_hits_xm1014=1133
    total_hits_m249=304
    total_rounds_map_cs_assault=8
    total_rounds_map_cs_italy=119
    total_rounds_map_cs_office=173
    total_rounds_map_de_aztec=139
    total_rounds_map_de_cbble=76
    total_rounds_map_de_dust2=1145
    total_rounds_map_de_dust=158
    total_rounds_map_de_inferno=545
    total_rounds_map_de_nuke=670
    total_rounds_map_de_train=183
    last_match_t_wins=14
    last_match_ct_wins=16
    last_match_wins=15
    last_match_max_players=10
    last_match_kills=20
    last_match_deaths=25
    last_match_mvps=1
    last_match_favweapon_id=16
    last_match_favweapon_shots=202
    last_match_favweapon_hits=51
    last_match_favweapon_kills=13
    last_match_damage=2906
    last_match_money_spent=91600
    last_match_dominations=0
    last_match_revenges=0
    total_mvps=1976
    total_rounds_map_de_lake=24
    total_rounds_map_de_safehouse=37
    total_rounds_map_de_sugarcane=11
    total_rounds_map_de_stmarc=7
    total_rounds_map_de_bank=14
    total_rounds_map_de_shorttrain=4
    total_TR_planted_bombs=8
    total_TR_defused_bombs=8
    total_gun_game_rounds_won=135
    total_gun_game_rounds_played=150
    total_wins_map_de_house=5
    total_wins_map_de_bank=11
    total_wins_map_de_vertigo=8
    total_wins_map_ar_monastery=1
    total_rounds_map_ar_shoots=5
    total_rounds_map_ar_baggage=33
    total_wins_map_ar_shoots=5
    total_wins_map_ar_baggage=33
    total_wins_map_de_lake=24
    total_wins_map_de_sugarcane=11
    total_wins_map_de_stmarc=7
    total_matches_won_bank=1
    total_wins_map_de_shorttrain=5
    total_wins_map_de_safehouse=36
    total_matches_won=263
    total_matches_played=519
    total_gg_matches_won=39
    total_gg_matches_played=96
    total_progressive_matches_won=19
    total_trbomb_matches_won=20
    total_contribution_score=56849
    last_match_contribution_score=55
    last_match_rounds=30
    total_kills_hkp2000=916
    total_shots_hkp2000=14778
    total_hits_hkp2000=3691
    total_hits_p250=2064
    total_kills_p250=585
    total_shots_p250=9336
    total_kills_sg556=126
    total_shots_sg556=1271
    total_hits_sg556=313
    total_hits_scar20=223
    total_kills_scar20=143
    total_shots_scar20=596
    total_shots_ssg08=359
    total_hits_ssg08=169
    total_kills_ssg08=117
    total_shots_mp7=4425
    total_hits_mp7=1283
    total_kills_mp7=277
    total_kills_mp9=107
    total_shots_mp9=1756
    total_hits_mp9=621
    total_hits_nova=1062
    total_kills_nova=196
    total_shots_nova=5146
    total_hits_negev=367
    total_kills_negev=129
    total_shots_negev=2136
    total_shots_sawedoff=1839
    total_hits_sawedoff=314
    total_kills_sawedoff=72
    total_shots_bizon=4766
    total_hits_bizon=1490
    total_kills_bizon=276
    total_kills_tec9=126
    total_shots_tec9=767
    total_hits_tec9=258
    total_shots_mag7=2422
    total_hits_mag7=545
    total_kills_mag7=90
    total_gun_game_contribution_score=1478
    last_match_gg_contribution_score=0
    total_kills_m4a1=2784
    total_kills_galilar=346
    total_kills_molotov=102
    total_kills_taser=12
    total_shots_m4a1=53806
    total_shots_galilar=4543
    total_shots_taser=25
    total_hits_m4a1=10225
    total_hits_galilar=1082
    total_rounds_map_ar_monastery=2
    total_matches_won_train=2
    total_rounds_map_de_vertigo=8
    total_matches_won_shoots=5
    total_matches_won_baggage=8
    total_matches_won_lake=4
    total_matches_won_sugarcane=1
    total_matches_won_stmarc=6
    total_matches_won_safehouse=5
    total_matches_won_shorttrain=5

    Die Daten werden gefiltert, und landen dann so in einer neuen Datei:
    Hier sind die Daten sortiert, allerdings so wie oben schon erwähnt, werden die einzelnen Stellen verglichen, nicht die gesamten Zahlen. =/

    Spoiler anzeigen

    [status]
    total_kills_mol = 102
    total_kills_g3s = 104
    total_kills_mp9 = 107
    total_kills_mac = 110
    total_kills_249 = 111
    total_kills_eli = 115
    total_kills_ssg = 117
    total_kills_sg5 = 126
    total_kills_tec = 126
    total_kills_neg = 129
    total_kills_tas = 12
    total_kills_sca = 143
    total_kills_kni = 180
    total_kills_fam = 182
    total_kills_nov = 196
    total_kills_xm1 = 220
    total_kills_awp = 2248
    total_kills_a47 = 2733
    total_kills_biz = 276
    total_kills_mp7 = 277
    total_kills_m4a = 2784
    total_kills_aug = 285
    total_kills_ump = 289
    total_kills_gal = 346
    total_kills_glk = 521
    total_kills_heg = 53
    total_kills_fis = 55
    total_kills_dea = 560
    total_kills_p90 = 584
    total_kills_saw = 72
    total_kills_mag = 90
    total_kills_hkp = 916
    total_hits__m4a = 10225
    total_hits__mol = 102
    total_hits__dea = 1031
    total_hits__nov = 1062
    total_hits__ump = 1063
    total_hits__gal = 1082
    total_hits__xm1 = 1133
    total_hits__mp7 = 1283
    total_hits__tas = 12
    total_hits__biz = 1490
    total_hits__fis = 155
    total_hits__ssg = 169
    total_hits__g3s = 177
    total_hits__kni = 180
    total_hits__sca = 223
    total_hits__awp = 2422
    total_hits__glk = 2537
    total_hits__tec = 258
    total_hits__p90 = 2653
    total_hits__249 = 304
    total_hits__sg5 = 313
    total_hits__saw = 314
    total_hits__neg = 367
    total_hits__hkp = 3691
    total_hits__eli = 375
    total_hits__heg = 53
    total_hits__mag = 545
    total_hits__mac = 614
    total_hits__mp9 = 621
    total_hits__fam = 659
    total_hits__a47 = 8723
    total_hits__aug = 904
    total_shots_mol = 102
    total_shots_eli = 1077
    total_shots_glk = 11095
    total_shots_p90 = 11312
    total_shots_sg5 = 1271
    total_shots_tas = 12
    total_shots_249 = 1350
    total_shots_hkp = 14778
    total_shots_mp9 = 1756
    total_shots_mac = 1797
    total_shots_kni = 180
    total_shots_saw = 1839
    total_shots_neg = 2136
    total_shots_mag = 2422
    total_shots_fam = 2746
    total_shots_dea = 3241
    total_shots_ssg = 359
    total_shots_ump = 3600
    total_shots_aug = 3748
    total_shots_xm1 = 4302
    total_shots_mp7 = 4425
    total_shots_fis = 453
    total_shots_gal = 4543
    total_shots_biz = 4766
    total_shots_g3s = 502
    total_shots_nov = 5146
    total_shots_m4a = 53806
    total_shots_heg = 53
    total_shots_a47 = 58076
    total_shots_sca = 596
    total_shots_awp = 6069
    total_shots_tec = 767

  • Zahlen sortieren

    • vism
    • 20. November 2014 um 04:04

    Danke erstmal an alle!

    Habe mir das Beispiel von Bugfix genommen, funktioniert auch, sortiert aber leider falsch.

    Hier die Ausgabe:

    102
    102
    107
    110
    111
    115
    117
    12
    126
    126
    127
    143
    179
    180
    194
    220
    2230
    2720
    275
    2751
    276
    284
    288
    518
    52
    54
    558
    583
    88
    911

    gibt es eine Möglichkeit die ganze Zahl zu vergleichen? Nicht nur die Stellen? Es müsste wirklich genau die Reihenfolge sein, oder evtl. ein Workaround? Womit man dann nachträglich die Position verändert? =(
    Danke im Voraus!

    btw. Wie sortiere ich von groß nach klein? =(

  • Zahlen sortieren

    • vism
    • 19. November 2014 um 17:40

    Hallo alle zusammen,

    ich hoffe ihr könnt mir weiterhelfen, ich würde gerne Zahlen sortieren, diese sind nicht random.
    Ich weis leider nicht wie ich eine Sortierung hinbekomme, bspw Zahlen

    45
    2
    9
    413

    Wie kann ich die nun der größe nach sortieren? Habe bereits rumprobiert, kriege aber nichts zustande, was auch nur annähernd in die Richtung geht.
    Mit Arraysort geht es zwar, aber ich müsste die Daten in eine Datei speichern, nacheinander, das geht aber nicht, zumindest weist ich nicht wie ich diese aus dem Array rauskriege, so dass ich die Zahlen "aufschreiben" kann.

    Danke im Voraus!

  • GUICtrlCreateGraphic transparenter Hintergrund vor GUICtrlCreatePic

    • vism
    • 16. November 2014 um 05:04

    Hallo zusammen,

    ich würde gerne mit Hilfe von GUICtrlCreateGraphic eine Grafik (bzw. einen Rahmen) erstellen, der "Hintergrund", also das im Rahmen, soll transparent sein.
    Das funktioniert auch soweit ganz gut. Beispiel:

    [autoit]

    $test = GUICtrlCreateGraphic($10, 10, 50, 50)
    GUICtrlSetColor(-1, 0x66CD00)

    [/autoit]

    Wenn ich im Hintergrund aber ein Bild mit GUICtrlCreatePic eingebunden habe, wird die Grafik nur displayed, wenn der Code als TOP gesetzt wird, also

    [autoit]

    GUISetBkColor(0x042F66)
    $Bg = GUICtrlCreatePic("bg.jpg", 0, 0, 500, 500)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit][autoit][/autoit][autoit]

    $test = GUICtrlCreateGraphic($10, 10, 50, 50)
    GUICtrlSetColor(-1, 0x66CD00)
    GuiCtrlSetState($test ,$GUI_ONTOP)]

    [/autoit]

    Nun wird die Grafik transparent, allerdings wird nun nicht das Bild welches als Background fungiert angezeigt, sondern was darunter ist, also die GUIBkColor.

    Gibt es eine Möglichkeit, die Grafik transparent zu schalten? Also so, dass nur der Rahmen angezeigt wird, ohne Inhalt?

    Vielen Dank im Voraus!
    Vism

  • Eigene Variable bzw. Wert anzeigen (Button, Array)

    • vism
    • 23. September 2014 um 06:19

    Guten Morgen!

    Ich hätte gerne gewusst ob es möglich ist, mir die eigene Variable bzw. dessen Wert (Array) anzeigen zu lassen.

    Spoiler anzeigen
    [autoit]

    Local $Test[3]

    [/autoit] [autoit][/autoit] [autoit]

    $Test[0] = GUICtrlCreateButton("Variable Test[0]", 10, 10)
    $Test[1] = GUICtrlCreateButton("Variable Test[1]", 10, 50)
    $Test[2] = GUICtrlCreateButton("Variable Test[2]", 10, 90)

    [/autoit]

    Es soll also auf dem Button oder beim Klick auf diesen soll der Wert des Buttonsangezeigt werden, bei 0 also "0", bei 1 "1" usw.

    Vielen Dank im Voraus!

  • Mit mehreren Arrays gleichen Case/Funktion etc. auslösen

    • vism
    • 28. August 2014 um 16:45
    Zitat von Kanashius

    So könnte man es mit guisetoneventmode lösen!

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1);Hier (statt guigetmsg)

    [/autoit] [autoit][/autoit] [autoit]

    $MACountGUIDay = GUICtrlCreateLabel("", -100, -100)
    GUICtrlSetData($MACountGUIDay, _FileCountLines(@ScriptDir & "\MA.ini"))
    $MACountPosDay = GUICtrlCreateLabel("160", -100, -100)
    $MACountPosDayY = GUICtrlCreateLabel("100", -100, -100)
    For $i = 1 To GUICtrlRead($MACountGUI)-3 Step 1
    GUICtrlSetData($MACountPos, "0")
    For $j = 1 To 31 Step 1
    $MAWord[$i][$j] = GUICtrlCreateLabel("-", GUICtrlRead($MACountPosDay), GUICtrlRead($MACountPosDayY), 25, 25, $SS_SUNKEN)
    GUICtrlSetOnEvent(-1,"_LabelPressed") ;HIER
    GUICtrlSetFont(-1, 13)
    If mod($i, 2) <> 0 Then GUICtrlSetBkColor(-1, 0xccc7c7)
    GUICtrlSetData($MACountPosDay, GUICtrlRead($MACountPosDay) + 25)
    Next
    GUICtrlSetData($MACountPosDayY, GUICtrlRead($MACountPosDayY) + 25)
    GUICtrlSetData($MACountPosDay, "160")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ;ab hier
    Func _LabelPressed()
    local $x,$y
    for $i=0 to UBound($MAWord)-1 step 1
    for $j=0 to UBound($MAWord,0)-1 step 1
    if $MAWord[$i][$j]=@GUI_CtrlId then
    $x=$i
    $y=$j
    ExitLoop 2
    endif
    next
    next
    msgbox(48,"","Label "&$x&":"&$y&" geklickt!")
    EndFunc

    [/autoit]
    Alles anzeigen

    Vielen Dank, funktioniert leider nicht. Es kommt zwar kein Fehler, aber auch keine MsgBox =(

  • Mit mehreren Arrays gleichen Case/Funktion etc. auslösen

    • vism
    • 28. August 2014 um 15:52
    Zitat von AspirinJunkie

    Na was stehen denn für Werte im Array drin?
    Die Frage musst du dir stellen - ob das nun ein 2D-Array ist. ist schlicht wurscht.

    Du kannst mit Case Fälle in Bereiche von Ganzzahlen zusammenfassen.
    Nicht mehr und nicht weniger.


    Also als Beispiel:

    Spoiler anzeigen
    [autoit]

    $MACountGUIDay = GUICtrlCreateLabel("", -100, -100)
    GUICtrlSetData($MACountGUIDay, _FileCountLines(@ScriptDir & "\MA.ini"))
    $MACountPosDay = GUICtrlCreateLabel("160", -100, -100)
    $MACountPosDayY = GUICtrlCreateLabel("100", -100, -100)
    For $i = 1 To GUICtrlRead($MACountGUI)-3 Step 1
    GUICtrlSetData($MACountPos, "0")
    For $j = 1 To 31 Step 1
    $MAWord[$i][$j] = GUICtrlCreateLabel("-", GUICtrlRead($MACountPosDay), GUICtrlRead($MACountPosDayY), 25, 25, $SS_SUNKEN)
    GUICtrlSetFont(-1, 13)
    If mod($i, 2) <> 0 Then GUICtrlSetBkColor(-1, 0xccc7c7)
    GUICtrlSetData($MACountPosDay, GUICtrlRead($MACountPosDay) + 25)
    Next
    GUICtrlSetData($MACountPosDayY, GUICtrlRead($MACountPosDayY) + 25)
    GUICtrlSetData($MACountPosDay, "160")
    Next

    [/autoit]

    Hier wird ein etwa 80x30 Felder (jw. 25x25 Px) erzeugt. Jedes dieser 240 Felder hat einen wert angegeben in $MA[1-80][1-31] und egal auf welches Label man nun Klickt, soll eine MsgBox mit dem jeweiligen Wert erscheinen. Dies kriege ich nicht realisiert.

  • Mit mehreren Arrays gleichen Case/Funktion etc. auslösen

    • vism
    • 28. August 2014 um 15:30
    Zitat von AspirinJunkie

    Das hat mit Arrays nichts zu tun sondern lediglich mit den Werten die du dort angibst.

    Ein Case 1 To 5 deckt z.B. die Fälle 1,2,3,4,5 ab.
    Blume nutzt in seinem Beispiel aus, dass die Control-IDs Ganzzahlen sind und nacheinander aufsteigend, nach dem Zeitpunkt ihrer Erstellung, sortiert sind.
    Wenn $MA[0] z.b. den Wert 3 bekommen hat, dann hat $MA[1] den Wert 4 bekommen und $MA[2] den Wert 5.

    Es kommt also nicht darauf an ob du die beiden Grenzwert für Case aus einem 1D oder 2D-Array holst, sondern schlicht nur welchen Wert sie besitzen.


    Achso, verstehe, wie gehe ich dann mit der Mehrdimensionalität um? also kann ich die dann einfach ohne zweiten Wert erfassen? =/

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™