Hallo, ich habe ein kleines Problem.
Es ist so, per Random erzeuge ich "Zufallszahlen" und packe die in ein String.
ifnotinstring,liste, % zahl
Liste := Liste Zahl " "
läuft soweit ganz gut aber, wenn z.B als erstes 56 kam und danach die 5 oder 6, dann verwirft er die 5 oder 6.
genau das selbe spiel mit dem Parsen
If InStr(A_LoopField, zahlen)
wenn die 1 oder die 6 kam aber in der liste z.B die 16 ist, dann sagt er mir das er es gefunden hätte..
Und noch ein Komfortproblem
Loop
{
Random, Zahl , 1, %bereich%
ifnotinstring,liste, % zahl
{
Liste := Liste Zahl " "
GuiControl,, Display, % Liste
eintrag += 1
Zahlen%Eintrag% := Zahl
}
if eintrag = %Anzahl%
{
eintrag = 0
break
}
}
Um die generierten Zahlen zu Parsen, verwende ich " Zahlen%Eintrag% := Zahl "
und dann muss ich Loopen
Loop, %Anzahl%
{
Zahlen := Zahlen%A_index%
If InStr(A_LoopField, zahlen)
Zaehlen++
}
Ich möchte wenn es geht die Liste mit dem A_loopfield vergleichen.
mache ich das, dann müssen die Generierten zahlen auch exakt in der selben Reihenfolge generiert worden sein...
z.B
1 4 9 15
ist die Reihenfolge nicht exakt
4 1 9 15
dann findet er nämlich Garnichts.
Mfg
Zahlen vergleichen
Moderator: jNizM
Re: Zahlen vergleichen
Bin nicht sicher ob ich dein Problem verstanden habe ...
PS. wenn du im forum-editor die code-tags benutzt, lässt sich dein code besser lesen. Danke
Scheint mir logisch, da in dem string 16 die zahlen 1 als auch 6 jeweils vorkommen.wenn die 1 oder die 6 kam aber in der liste z.B die 16 ist, dann sagt er mir das er es gefunden hätte..
Code: Select all
FoundPos := InStr(16, 6) ; sucht die 6 im string 16
MsgBox % FoundPos ; ergebnis = 2, hat eine 6 an position 2 im string 16 gefunden
Hier soll er die 56 in der 5 oder der 6 suchen, welche er so jeweils nicht finden kann. Was wäre daran falsch?läuft soweit ganz gut aber, wenn z.B als erstes 56 kam und danach die 5 oder 6, dann verwirft er die 5 oder 6.
Code: Select all
FoundPos := InStr(5, 56) ; sucht 56 im "string" 5
MsgBox % FoundPos ; ergebnis = 0, konnte 56 an keiner position im string 5 finden
Soll das tatsächlich ein string (hier eine fortlaufende zahlenkette) sein oder ein array in welchem alle ermittelten/deponierten werte einzeln abgefragt und verglichen werden können?Es ist so, per Random erzeuge ich "Zufallszahlen" und packe die in ein String.
PS. wenn du im forum-editor die code-tags benutzt, lässt sich dein code besser lesen. Danke
Re: Zahlen vergleichen
Code: Select all
FoundPos := InStr(16, 6) ; sucht die 6 im string 16
MsgBox % FoundPos ; ergebnis = 2, hat eine 6 an position 2 im string 16 gefunden
Hier soll er die 56 in der 5 oder der 6 suchen, welche er so jeweils nicht finden kann. Was wäre daran falsch?läuft soweit ganz gut aber, wenn z.B als erstes 56 kam und danach die 5 oder 6, dann verwirft er die 5 oder 6.
Genau das Gegenteil. er soll nicht die 5 oder 6 in der 56 finden. nur wenn die 5 oder 6 auch tatsächlich vorhanden ist.
Code: Select all
FoundPos := InStr(5, 56) ; sucht 56 im "string" 5
MsgBox % FoundPos ; ergebnis = 0, konnte 56 an keiner position im string 5 finden
Soll das tatsächlich ein string (hier eine fortlaufende zahlenkette) sein oder ein array in welchem alle ermittelten/deponierten werte einzeln abgefragt und verglichen werden können?Es ist so, per Random erzeuge ich "Zufallszahlen" und packe die in ein String.
wohl ein Array.
kenne auch leider den unterschied nicht zwischen String und Array.
Re: Zahlen vergleichen
Ein Array ist eine Liste von Werten. Ein String ist ein einzelner langer Textwert.
Bei dem String kannst du mit viel Arbeit und Code etwas wie einen Array erzeugen. Es lohnt sich jedoch eher direkt auf Arrays umzusteigen, da diese sich oftmals einfacher an die Problemstellung anpassen lassen.
Dein ( Zahlen%A_Index% ist z.B. ein Array jedoch kein echter Array im eigentlichen Sinne. )
In der deutschen Hilfe findest du unter Ausdrücke ( Expressions ) eine andere Form wie man mit AutoHotkey Code schreibt.
Man findet dort auch eine andere Form des Ifs, Vergleichsoperatoren und viele andere Dinge die dir sehr nützlich sein könnten.
Bei dem String kannst du mit viel Arbeit und Code etwas wie einen Array erzeugen. Es lohnt sich jedoch eher direkt auf Arrays umzusteigen, da diese sich oftmals einfacher an die Problemstellung anpassen lassen.
Dein ( Zahlen%A_Index% ist z.B. ein Array jedoch kein echter Array im eigentlichen Sinne. )
In der deutschen Hilfe findest du unter Ausdrücke ( Expressions ) eine andere Form wie man mit AutoHotkey Code schreibt.
Man findet dort auch eine andere Form des Ifs, Vergleichsoperatoren und viele andere Dinge die dir sehr nützlich sein könnten.
Recommends AHK Studio
Re: Zahlen vergleichen
Genau andersrum. er soll die 6 NICHT in 16 finden. Nur wenn auch wirklich die 6 in Array ist.
Hier liegt dein problem. Eine zeichenkette besteht aus aneinandergereihten zeichen ohne jegliche separierung.kenne auch leider den unterschied nicht zwischen String und Array.
Ein (echtes) array speichert jeden wert (an einer definierten position im speicher) separat ab - vergleichbar einer zelle in Microsoft Excel.
Diese position ist fix, lässt sich also ohne problem ansprechen, und die darin gespeicherten werte auswerten.
Code: Select all
#SingleInstance, Force
createArray(1,100,9) ; aufruf einer funktion zum erstellen eines arrays, welches genau 9 elemente/werte enthält. Der wertebereich liegt zw 1-100.
Sleep, 1000 ; pause vor ...
ToolTip ; schließen des tooltips
Return
createArray(minNo,maxNo,arrayLength){ ; funktion zur erstellung des arrays
Global ; variablen zur weiteren verwendung "Global" setzen
Loop, %arrayLength% { ; schleifendurchlauf nach anzahl der gewünschten elemente
Random, randomNo, %minNo%, %maxNo% ; zufallswert ermitteln
array%A_Index% := randomNo ; zufallswert im array ablegen. Elemente sind als einzelne variablen abfragbar: array1, array2, ...
; ------------------------------------------------------------------------------------------------------------------------------
If (A_Index != 1) ; dies dient nur für die anzeige im tooltip ...
separator := "|" ; und ...
string := string separator array%A_Index% ; könnte ...
ToolTip %string% ; problemlos ...
Sleep, 500 ; entfernt werden.
; ------------------------------------------------------------------------------------------------------------------------------
}
Return ; zurück auf los
}
getArray(Position){ ; abfrage der elemente des arrays über die tasten 1-9 der tastatur
MsgBox % "Im array an position " Position " steht der Wert: " array%Position% ; ausgabe
}
1::getArray(A_ThisHotkey) ; die taste 1 der tastatur liefert den 1. wert des arrays
3::getArray(A_ThisHotkey) ; und so weiter ...
4::getArray(A_ThisHotkey)
5::getArray(A_ThisHotkey)
6::getArray(A_ThisHotkey)
7::getArray(A_ThisHotkey)
8::getArray(A_ThisHotkey)
9::getArray(A_ThisHotkey)
!s::Suspend, Toggle ; WICHTIG ! Durch drücken von Alt+s lassen sich die gerade zur Abfrage des arrays benutzten Hotkeys wieder zurücksetzen !!
!x::ExitApp ; Notausgang: Script beenden.
Falls du ein zeichenkettenjunkie bist wäre noch die csv-krücke eine alternative.
Good luck.
Re: Zahlen vergleichen
Vielen dank erstmal. ich versuche das erstmal zu kapieren. lg
Re: Zahlen vergleichen
Ok, ich habe es wohl verstanden, zu 50%. Zumindest Konnte ich mit dem Script was anfangen.
Habe mir natürlich paar Tage vorher schon die Deutsche Dokumentation von den Arrays durchgelesen, aber so wie Du es gelöst hast, ist nirgends zu lesen...
Habe nur noch das Problem mit dem Zahlen beim vergleichen und ausschließen..
Wenn Du dafür noch eine einfache Lösung für mich hättest dann wäre alles perfekt.
lg
Habe mir natürlich paar Tage vorher schon die Deutsche Dokumentation von den Arrays durchgelesen, aber so wie Du es gelöst hast, ist nirgends zu lesen...
Habe nur noch das Problem mit dem Zahlen beim vergleichen und ausschließen..
Wenn Du dafür noch eine einfache Lösung für mich hättest dann wäre alles perfekt.
lg
Re: Zahlen vergleichen
Mir ist im Moment nicht ganz klar, wo die zahlen, welche du gegen die werte im array vergleichen möchtest, herkommen?
Datei/ebenfalls frisch generiert/manuelle eingabe (stichwort: input) ??
Wenn gefunden/verglichen, was dann - wohin mit dieser erkenntnis (stichwort:output) ?
In welchem kontext/zusammenhang steht denn die ganze aktion?? (persönliches interesse bzgl sinnhaftigkeit)
PS.
a) sollen die werte im array eigentlich einzigartig sein, oder darf ein wert auch mehrfach vergeben werden (wie aktuell im script der fall)?
b) wenn mehrfachvergabe, soll nach dem ersten treffer weitergesucht werden oder nicht?
Datei/ebenfalls frisch generiert/manuelle eingabe (stichwort: input) ??
Wenn gefunden/verglichen, was dann - wohin mit dieser erkenntnis (stichwort:output) ?
In welchem kontext/zusammenhang steht denn die ganze aktion?? (persönliches interesse bzgl sinnhaftigkeit)
PS.
a) sollen die werte im array eigentlich einzigartig sein, oder darf ein wert auch mehrfach vergeben werden (wie aktuell im script der fall)?
b) wenn mehrfachvergabe, soll nach dem ersten treffer weitergesucht werden oder nicht?
Re: Zahlen vergleichen
Also, ich vergleiche Randomzahlen mit einer eingelesenen txt Datei. Zeile für Zeile.
Matches werden in eine Liste gespeichert. Es muss einzigartig sein.
Läuft ja auch alles soweit ganz gut, nur eben das kleine Problem mit 1 Stelligen Zahlen. alles ab 2 Stellen läuft perfekt.
lg
Edit
So, habe das Problem mit den gleichen Zahlen gelöst. Aber nur beim generieren.
Matches werden in eine Liste gespeichert. Es muss einzigartig sein.
Läuft ja auch alles soweit ganz gut, nur eben das kleine Problem mit 1 Stelligen Zahlen. alles ab 2 Stellen läuft perfekt.
lg
Edit
So, habe das Problem mit den gleichen Zahlen gelöst. Aber nur beim generieren.
Code: Select all
Ar :=[]
i :=1
Erneuern :=0
Loop
{
Random, Zahlen,1,1000
j:=1
Loop 10
{
if (Ar[j]==Zahlen)
{
Erneuern :=1
break
}
j++
}
if (Erneuern!=1)
{
Ar[i]:=Zahlen
i++
if (i==11)
break
}
Erneuern := 0
}
i:=1
Zwischenspeicher:=""
Loop 10
{
Zwischenspeicher.=Ar[i] " "
i++
}
msgbox, % Zwischenspeicher
return
Re: Zahlen vergleichen
Kannst Du mal ein Beispiel für eine Zeile aus Deiner Textdatei einstellen und etwas genauer beschreiben, welche Bedingungen für eine Übereinstimmung mit den generierten Zufallszahlen erfüllt sein müssen? Sind die Zahlen in den Zeilen der Textdatei sortiert?
Re: Zahlen vergleichen
Dachte schon ich bin plötzlich blöd geblieben. Mir verschließt sich dieser code und die zusammenhänge. So am I totally Bahnhofjust me wrote:Kannst Du mal ein Beispiel für eine Zeile aus Deiner Textdatei einstellen und etwas genauer beschreiben, welche Bedingungen für eine Übereinstimmung mit den generierten Zufallszahlen erfüllt sein müssen? Sind die Zahlen in den Zeilen der Textdatei sortiert?
Re: Zahlen vergleichen
Im Zweifel, frag den Angeklagten!
Re: Zahlen vergleichen
habe es doch wieder mit if gemacht, ist zwar langsamer, aber es läuft... Performance habe ich durch andere Optimierung rausgeholt..just me wrote:Kannst Du mal ein Beispiel für eine Zeile aus Deiner Textdatei einstellen und etwas genauer beschreiben, welche Bedingungen für eine Übereinstimmung mit den generierten Zufallszahlen erfüllt sein müssen? Sind die Zahlen in den Zeilen der Textdatei sortiert?
Code: Select all
loop, parse, Vergleichzeile%Zeile%, %A_tab% `r ; xXx
{
if a_index > %maenge%
break
GuiControl,, Vergleichzeile2Display, % Vergleichzeile%Zeile%
if A_loopfield = %Suchen%
{
Zaehlen++
}
}
Last edited by Prototyp on 15 May 2017, 09:39, edited 1 time in total.
Re: Zahlen vergleichen
Ich habe noch das alte Problem. Ich verstehe immer noch nicht, was Du da machen willst. Kannst oder willst Du meine Frage nicht beantworten?Prototyp wrote:Habe ein neues Problem.
Re: Zahlen vergleichen
Doch natürlich. Also, ich habe ein kleines Programm erstellt, der mir automatisch meine Überweisungen mit Prioritäten versieht, je nach Kontostand und Dringlichkeit, erledigt, verwaltet und überweist. dadurch entfallen die dauerauftragsgebühren.just me wrote:Ich habe noch das alte Problem. Ich verstehe immer noch nicht, was Du da machen willst. Kannst oder willst Du meine Frage nicht beantworten?Prototyp wrote:Habe ein neues Problem.
zudem wird jede Konto Aktivität aufgezeichnet.
lg
Re: Zahlen vergleichen
Jetzt hast du zwar die frage zu seiner frage beantwortet, aber nicht seine ursprüngliche frage. Hier nochmal, weils scheinbar so schwer ist ...Prototyp wrote:Doch natürlich. Also, ich habe ein kleines Programm erstellt, der mir automatisch meine Überweisungen mit Prioritäten versieht, je nach Kontostand und Dringlichkeit, erledigt, verwaltet und überweist. dadurch entfallen die dauerauftragsgebühren.just me wrote:Ich habe noch das alte Problem. Ich verstehe immer noch nicht, was Du da machen willst. Kannst oder willst Du meine Frage nicht beantworten?Prototyp wrote:Habe ein neues Problem.
zudem wird jede Konto Aktivität aufgezeichnet.
lg
just me wrote:
Kannst Du mal ein Beispiel für eine Zeile aus Deiner Textdatei einstellen und etwas genauer beschreiben, welche Bedingungen für eine Übereinstimmung mit den generierten Zufallszahlen erfüllt sein müssen? Sind die Zahlen in den Zeilen der Textdatei sortiert?
Re: Zahlen vergleichen
Du musst die Zufallszahl für den Vergleich eindeutig machen, indem Du sie mit dem Trennzeichen der Liste umgibst:
Dein anderes Problem ist mir auch nicht klar
Hubert
Code: Select all
Liste := " "
Loop
{
Random, Zahl , 1, %bereich%
ifnotinstring,liste, % " " zahl " "
{
Liste := Liste Zahl " "
GuiControl,, Display, % Liste
eintrag += 1
Zahlen%Eintrag% := Zahl
}
if eintrag = %Anzahl%
{
eintrag = 0
break
}
}
Hubert
Who is online
Users browsing this forum: gero and 42 guests