Das Problem ist, das mir Werte in einer Datei gegeben sind, die ich jedoch zum weiteren Nutzen in einer anderen Reihenfolge benötige.
Beiträge von Alina
-
-
Wofür brauche ich das?
Ich möchte die Werte, die ich nur so voirliegen habe wie im Array $Array1_werte, in einer anderen Reihenfolge haben.
Und ja, es ist der Ansatz der richtige, da ich nur die Werte in der richtigen Reihenfolge benötige. Also das was in Col 1 dann steht benötige ich.Ist eigentlich 1-basiert.
-
Hi Alina,
ich hab das ganze mal umgesetzt, so wie ich es verstanden habe. Am Ende besteht nur das Problem, dass die letzten Werte nicht zugeordnet werden können, da das Positions-Array kein Vielfaches vom Value-Array ist...
Es geht sich also am Ende nicht aus, oder man hätte leere Zellen. In der Lösung wird das Ende erstmal weggelassen, ggf. kannst du ja klarstellen, was dann passieren soll.
Außerdem: Position <> Index? Bei mir sind die Einträge einen Wert höher, weil man beim Programmieren mit 0 anfängt, nicht mit 1.
Ansonsten hier das Script:
AutoIt
Alles anzeigen#include <Array.au3> Global $arValues = ["DK45","DK28","963","NOR17","731","575","276","679","366","NOR15","NOR58","NOR23","958","166","909","478","634","846","744","525","701","77","162","211","51DK","873","401", _ "909","717","52","552","707","327","782","705","644","47","524","596","NOR88","246","700","197","696","497","913","35","99","DK42","725","652","584","701","36","296","402", _ "483","961","NOR87","9","482","944","613","161","205","657","734","329","791","750","731","196","437","312","979","489","NOR55","787","39","FIN01","764","344","745","666", _ "733","37","273","38","784","797","109","903","340","272","742","426","127","206","623","842","DK45","DK28","963","NOR17","731","575","276","679","366","NOR15","NOR58", _ "NOR23","958","166","909","478","634","846","744","525","701","77","162","211","51DK","873","401","909","717","52","552","707","327","782","705","644","47","524","596", _ "NOR88","246","700","197","696","497","913","35","99","DK42","725","652","584","701","36","296","402","483","961","NOR87","9","482","944","613","161","205","657","734", _ "329","791","750","731","196","437","312","979","489","NOR55","787","39","FIN01","764","344","745","666","733","37","273","38","784","797","109","903","340","272","742", _ "426","127","206","623","842","39","954","99NOR","FIN2","388"] Global $iPosBegin = 55 ;,Reihenfolge,64,Werte Global $arPositions = [55,30,17,42,27,36,15,38,18,43,54,29,16,39,26,35,31,56,41,20,33,28,37,14,44,19,32,53,40,13,34,25,57,2,45,8,21,64,51,12,46,5,60,1,52,9,24,63,3,58,7,48,61,22,11,50,6,47, _ 4,59,10,49,62,23] Local $arRes = _sortByArray($arValues, $arPositions, $iPosBegin) If @error Then MsgBox(16,"Error",@error&" => "&@extended) _ArrayDisplay($arRes) ; $arValues => Values to sort ; $arPos => Positions to sort to ; $iStartValue => First position to start with; Default => Start with $arPos index 0; If $iStartValue is not in $arPos => Start with $arPos index 0; Starts with the first position found Func _sortByArray(ByRef $arValues, ByRef $arPos, $iStartValue = Default) Local $iStartIndex = 0 If $iStartValue<>Default Then For $i=0 To UBound($arPos)-1 Step 1 If $iStartValue=$arPos[$i] Then $iStartIndex = $i ExitLoop EndIf Next EndIf Local $iIndex = $iStartIndex Local $iPosCount = UBound($arPos) Local $arResult[UBound($arValues)] Local $iPassCount = 0 For $i=0 To UBound($arValues)-1 Step 1 Local $iTmpIndex = $iPassCount*$iPosCount+$arPos[$iIndex] - 1 ; -1 because positions in $arPos start with 1 and not 0 If $iTmpIndex>=UBound($arValues) Or $iTmpIndex<0 Then ;Return SetError(1, $iTmpIndex, -1) ; check if new index is in range Else $arResult[$iTmpIndex] = $arValues[$i] EndIf $iIndex+=1 If $iIndex>=UBound($arPos) Then $iIndex=0 If $iIndex=$iStartIndex Then $iPassCount+=1 Next Return $arResult EndFunc
MfG, Kanashius
Hallo Kanashius.
Das hast Du richtig verstanden. Sorry für die zu kurze Beschreibung meines Problemes.
Wieso bekomme ich das Ergebnis nicht in eine MsgBox ausgegeben. Bin ich zu übermüdet oder zu blond? -
Der Startwert ist der Wert im Array, wo die neue Reihenfolge startet.
Jetzt ist es die 55. Ist der Startwert die 18, dann soll der Wert DK45 an die 18. Stelle kommen, DK2 an Stelle 43, usw.
Ich hatte mal dieses Script gefunden:
C#include <Array.au3> #include "_ArraySortStable2D.au3" Local $aTestArray[6][2] = [[5, "Cherry"], [4, "Banana"], [3, "Cherry"], [2, "Orange"], [1, "Apple"], [0, "Test"]] _ArraySortStable2D($aTestArray, 0) _ArrayDisplay($aTestArray) _ArraySortStable2D($aTestArray, 1, Default, Default, True) _ArrayDisplay($aTestArray)
Hier ist die Position, dann das Komma und dann der Wert
dann sieht es so aus: [55, "DK45"], [30, "DK28"], [17, "963"], ....
Mit geänderten Startwert auf "18" sieht es so aus:
dann sieht es so aus: [18, "DK45"], [43, "DK28"], [54, "963"], ....
Und ja, Du hast recht und das dachte ich mir ja auch, das man ein neues Array schreiben muss.
Habe ich es nun verständlich erklärt? -
Moin zusammen.
Ich würde gerne ein Array sortieren.Die Werte stehen im Array $Array1_werte ( max. 720 Werte, was aber egal sein sollte)
Die Reihenfolge der Werte steht im Array $Array2 (sind 64 neue Positionen)
Der Startwert der Reihenfolge steht im Aray $_startwert_der_Reihenfolg
Wie bekomme ich es hin, das der erste Wert aus $Array1_werte an die Position vom ersten Wert aus dem Array Array2 steht?
Also DK45 soll auf Position 55 ; DK28 soll auf Position 30; 963 soll auf Position 17; usw.Wenn der Wert von $_startwert_der_Reihenfolge sich ändert, z. B. auf 18, dann soll bei 18 begonnen werden. Ist man beim letzten Wert der Reihenfolge angekommen, beginnt danach die Reihenfolge wieder bei 55. Also unendlich.
Spoiler anzeigen
#include <Array.au3>
Global $Array1_werte = ["DK45" "DK28" "963" "NOR17" "731" "575" "276" "679" "366" "NOR15" "NOR58" "NOR23" "958" "166" "909" "478" "634" "846" "744" "525" "701" "77" "162" "211" "51DK" "873" "401" "909" "717" "52" "552" "707" "327" "782" "705" "644" "47" "524" "596" "NOR88" "246" "700" "197" "696" "497" "913" "35" "99" "DK42" "725" "652" "584" "701" "36" "296" "402" "483" "961" "NOR87" "9" "482" "944" "613" "161" "205" "657" "734" "329" "791" "750" "731" "196" "437" "312" "979" "489" "NOR55" "787" "39" "FIN01" "764" "344" "745" "666" "733" "37" "273" "38" "784" "797" "109" "903" "340" "272" "742" "426" "127" "206" "623" "842" "DK45" "DK28" "963" "NOR17" "731" "575" "276" "679" "366" "NOR15" "NOR58" "NOR23" "958" "166" "909" "478" "634" "846" "744" "525" "701" "77" "162" "211" "51DK" "873" "401" "909" "717" "52" "552" "707" "327" "782" "705" "644" "47" "524" "596" "NOR88" "246" "700" "197" "696" "497" "913" "35" "99" "DK42" "725" "652" "584" "701" "36" "296" "402" "483" "961" "NOR87" "9" "482" "944" "613" "161" "205" "657" "734" "329" "791" "750" "731" "196" "437" "312" "979" "489" "NOR55" "787" "39" "FIN01" "764" "344" "745" "666" "733" "37" "273" "38" "784" "797" "109" "903" "340" "272" "742" "426" "127" "206" "623" "842" "39" "954" "99NOR" "FIN2" "388"]
Global $_startwert_der_Reihenfolge = 55
; Reihenfolge 64 Werte
Global $Array2 = [55 30 17 42 27 36 15 38 18 43 54 29 16 39 26 35 31 56 41 20 33 28 37 14 44 19 32 53 40 13 34 25 57 2 45 8 21 64 51 12 46 5 60 1 52 9 24 63 3 58 7 48 61 22
11 50 6 47 4 59 10 49 62 23 ]
-
Moin Mars
Moin,
bevor ich meine eigenen Skripte wieder verlege und nie wieder finde, ...
Das Problem kenne ich doch. Ich habe mich aber irgendwann (letztes Jahr) entschieden, alle Include-Dateien in einen Ordner zu sammeln.
Die Dec2Bin kommt gleich dazu.
-
Ich werde es mir bei Zeiten mal ansehen.
Sieht aus, als wenn ich das nutzen kann um die selbst erstellten PDF-Formulare automatisch zu befüllen. Würde ja doppeltes Eingeben bei einigen regelmäßigen Abläufen ersparen.
Verstehe ich das richtig, wenn das zu befüllende Feld in der PDF Datei den Namen "Feld1" hat, wird es mit "HalloText" ausgefüllt?Ja, das wäre etwas für das jüngste Kind meiner Eltern, wenn diese mal Zeit findet dafür. Aber ist "gemerkt".
-
Auch wenn ich Lernenden das gerne selber überlasse
Da gebe ich Dir recht. Es ging bei meinem Beitrag oben auch darum, das der User das Prinzip erkennt und damit arbeiten kann.
Es ersetzt auf keinen Fall die Berücksichtigung der Hilfedatei und es auch anzusehen und versucht werden diese zu verstehen.
So wie Du schriebst "learning by doing" und nicht einfach nur übernehmen. -
-
Hier noch eine Anleitung incl. den ganzen Schaltern:
https://7ziphelp.com/7zip-command-line?lang=de -
Folgendes habe ich aus einem Uni-Bereich rausgezogen.
n < 1.373.653 : es genügt, a= 2 und 3 zu testen,
n < 9.080.191 : es genügt, a = 31 und 73 zu testen,
n < 4.759.123.141 : es genügt, a = 2, 7, und 61 zu testen,
n < 2.152.302.898.747 : es genügt, a = 2, 3, 5, 7, und 11 zu testen,
n < 3.474.749.660.383 : es genügt, a = 2, 3, 5, 7, 11, und 13 zu testen,
n < 341.550.071.728.321 : es genügt, a = 2, 3, 5, 7, 11, 13, und 17 zu testen.
n < 3.825.123.056.546.413.051 : es genügt, a = 2, 3, 5, 7, 11, 13, 17, 19, und 23 zu testen.
n < 318.665.857.834.031.151.167.461 : es genügt, a = 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 zu testen.
Dabei dürfen nur solche n getestet werden, die größer sind als das jeweils größte a !!
-
EDIT:
Auch nach einem PC-Neustart ist der Wert abfragbar, aber nicht im Reg-Editor sichtbar.
BugFix, ich habe einmal eine Frage. Dein Reg.-Editor, hat der keine Suchfunktion?
Wenn ich einen Reg.-Eintrag eintragen lasse und ihn nicht dort vorfinde, wo ich ihn haben wollte, hilft mir die Suchfunktion diesen Eintrag zu finden und dem Problem, wieso er dort gelschrieben wurde auf dem Grunde zu gehen. <--- Ist der Satz verständlich???? -
Würde aus meiner Sicht so passen.
Eventuell noch eine Microsoft-Quelle zum Thema hierzu verlinken?:
https://docs.microsoft.com/de-de/troubles…-64-bit-windowsSehe ich auch so. Gut erklärt und der Link ist hilfreich.
-
Wenn Du z. B. 10 GB Daten von Ordner-A nach Ordner-B kopieren möchtest, muss ja der Ordner-B um 10 GB größer sein als (wie?) vorher. Das könnte man abfragen. Also die Ordnergröße abfragen. Bleibt die Ordnergröße gleich und ist nicht um 10 GB angestiegen, hat sich das Programm festgesetzt.
Wäre Dir damit geholfen? -
Hast Du die Kopierroutine gescriptet? Vielleicht magst Du das Script dann mal zeigen, damit man sehen kann, wo man was einarbeiten kann.
-
Nein, soll es nicht sein und allen Danke für die Antworten.
Moombas hat es richtig gesagt. Hatte ich evtl. nicht deutlich geschrieben. Die nächste mögliche Quadratzahl zur genannten Zahl. Das was BugFix gepostet hat nehme ich. -
Ich habe eine Zahl-X und suche die nächste höhere Quadratzahl ausgerechnet.
Beispiel:
Zahl: 78
Nächst höhere Quadratzahl 9, weil 9x9=81
-
Oder so prüfen:
Spoiler anzeigen
Code
Alles anzeigen$number = 13 _CheckIfPrime($number) Func _CheckIfPrime($number) $x = Sqrt($number) If IsInt($number/5) = 1 Then $prime = 0 ElseIf IsInt($x) = 0 Then $x = Floor($x) For $o = 2 To $x+1 If IsInt($number/$o) Then $prime = 0 ExitLoop Else $prime = 1 EndIf Next Else $prime = 0 EndIf If $prime = 1 Then ConsoleWrite($number & " IS A PRIME NUMBER" & @CRLF) Else ConsoleWrite($number & " IS NOT A PRIME NUMBER" & @CRLF) EndIf EndFunc
-
Hehe, da man ja mittlerweile schon so gut wie alles gescriptet hat, und nur nicht mehr weiß wo ganz genau in welchem Script der Teil ist den man sucht...da hab ich dann 20-30 Tabs offen und kopiere mir die Funktionen oder Brocken die ich brauche. Das können in Scite auch ab und zu mal 2 Reihen Tabs sein....warum auch nicht Wissen ist wissen, wo es steht!
Oh Andy, das kenne ich doch irgendwie. "Hatte ich schon mal" und in welchem Ordner bzw. untr welcher autoit-version war das noch. Habe alle Versionen, Ordner, Hilfen, Scripte, usw. jeweils den Version zugeordnet abgespeichert. Das ist schon ein große Baumstrucktur. Aber wie Du auch sagst ist: "Wissen wo es steht" und das ist bei mir echt nicht gerade einfach.Und man kann noch nicht einmal auf die Holländer zurückgreifen (lass Andere suchen wo es ist), weil es mein persönlichen "Chaos" ist. Da hilft ab und an nicht einmal die Stchwortsuche. Ordnernamen in Duetsch, englsich und dänisch, da solle mal aufgeräumt werden.
11 Tabs? Also das kenne ich nicht einmal aus meinem sonstigen Displayleben. Maximal 7 oder 8 Tabs, aber dann um die Include die gerade genutzt wird um die dortige Erklärung zu lesen. Ich arbeite lieber mit zwei bzw. drei Monitoren, das gefällt mir besser. -
Es ging darum, dass unter Windows 11 das aktive TabItem nicht oder kaum hervorgehoben wird.
Okay, das verstehe ich.