a) Textlänge und b) jeweils 4 Arrays .....

  • Moin MOin am Mittwochmorgen.

    a) Textlänge
    Ich möchte das bei betätigen des Buttons 1 geprüft wird ob die Textlänge von $Input1 ohne Rest durch 4 teilbar ist. Wenn nicht, soll mit " " (leer) aufgefüllt werden.

    b) 4 Arrays
    Wie man ab Zeile 21 sieht, versuche ich immer 4 Werte aus dem Array zu ziehen. Das würde so auch passen und ich könnte es so weiter machen. Jedoch ist die Länge vom Klartext in der Gesamtlänge nicht eingeschränkt und bei z. B. 240 Buchstaben oder mehr, würde das Script viel zu lang werden.

    Sagt mir einer, wie es einfacher/sinnvoller ist? Ich kenne Euch und Ihr habt da bestimmt andere Gedankenlösungen wie ich.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi Alina

    zu a.) :

    Das könnte man z.B. so machen :

    zu b.) :

    Was Du hier erreichen möchtest, ist mir nicht ganz klar.

    Außerdem läuft dein Skript in der Regel auf den Fehler :

    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded

    da Elemente angesprochen werden, die es gar nicht gibt.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • a) If not Mod(StringLen($Text), 4) = 0 then bzw.

    Code
    While Mod(StringLen($Text), 4) <> 0
      $Text &= Chr(32)
    WEnd

    b) Nicht getestet aber das Prinzip müsste passen, wenn ich auch den Sinn noch nicht verstanden habe...

    Code
    $Row = 1
    While $Row <= 20
    For $i = $Row To $Row + 3 ;$aArray_1[0]
        MsgBox(0, "", $Row & "-" & $Row+3 & " $aArray_1[" & $i & "] - " & $aArray_1[$i] & "    Später mit arbeiten und Resultat in Datei-X speichern.")
    Next
    $Row += 4
    //nächster Durchlauf
    WEnd

    Musashi war schneller XD

  • Musashi war schneller XD

    Nur unwesentlich ;) .

    zu b.) :

    ... wenn ich auch den Sinn noch nicht verstanden habe...

    Dann bin ich zum Glück nicht der Einzige, dem das so geht ^^

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Musashi  Moombas
    Danke, mit der Textlänge klappt !

    zu b)
    Ich möchte erst mit den ersten vier Zahlen arbeiten (*) und das Resultat dann in eine Textdatei schreiben.
    Danach möchte ich mit den nächsten vier Zahlen arbeiten und das Resultat in die gleiche Textdatei speichern.
    Immer vier Zahlen mit den ich arbeite und wenn ich fertig bin mit den nächsten vier Zahlen arbeiten. Nach den ersten

    16 Zahlen wiederholt sich die
    Die MsgBox, war nur dafür da, das auch was passiert und ich sehe wie die Ausgabe ist. Später werden dort statt den MsgBox

    Berechnungen erfolgen, deren Ergebnisse ich speichere.

    arbeiten = rechnenIch hoffe jetzt habe ich es verständlich dargestellt.


    Evtl. ist es so verständlicher im Script dargestellt.
    Das sind jetzt Beispielaufgaben. Da rechne ich später mehr als nur zwei Aufgaben mit den vier Zahlen. Es demontriert nur,

    das dort u. a. gerechnet wird.
    Mit den ersten vier Zahlen wird anders gerechnet als mit den nächsten vier Zahlen, usw. bis 16 Zahlen durch sind. Dann fangen

    die formeln wieder von vorne an, nur das ja andere Zahlen aus dem Array kommen. Ich habe mal bis zum $aArray_1[32], also

    die ersten 32 Zahlen genommen.

    Musashi Das mit dem Fehler auf den Du in Beitrag 2 hinweist muss ich auch noch beheben. Aber da bin ich noch auf Lösungssuche.


    Musashi war schneller XD

    Dafür hast Du etwas länger geschlafen. ;) (SPASS)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    2 Mal editiert, zuletzt von Alina (20. April 2022 um 09:34)

  • Alina

    Moin,

    jetzt hast Du geantwortet, während ich noch 'verfeinert' habe. Es gibt von mir trotzdem zwei Antworten:

    zu a)

    AutoIt
    $Str = "1234567890123456789012345678901"
    $Mod = Mod(StringLen($Str), 4)
    If $Mod Then $Str &= StringLeft("   ", 4 - $Mod)
    MsgBox(0, "StringLen", StringLen($Str) & " - " & $Mod)

    zu b)

    AutoIt
    $Str = "1234567890123456789012345678901"
    $Len = StringLen($Str)
    For $I = 1 To $Len Step 4
        MsgBox(0, "Zeichen " & $I & " bis " & $I + 3, StringMid($Str, $I, 4))
    Next
  • Velted
    Erst einmal Danke !

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (20. April 2022 um 13:23)

  • Als Beispiel was bei mir funktionierte (kürzeste Versionen die ich hinbekomme):

    Für a)

    AutoIt
    While Mod(StringLen($Text), 4) <> 0
      $Text &= Chr(32)
    WEnd

    Für b)

    2 Mal editiert, zuletzt von Moombas (20. April 2022 um 13:12)

  • Moombas

    a) ist gelöst

    b) muss ich wie folgt machen, damit er alle 40 Zahlen nimmt:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Alina 20. April 2022 um 13:31

    Hat den Titel des Themas von „a) Textläng b)jeweils 4 Arrays .....“ zu „a) Textläng und b) jeweils 4 Arrays .....“ geändert.
  • Dann würde er aber bei Row = 40 auf Fehler laufen, da 40 + 1 = 41 und somit einen Bereich ansprechen würde der im Array nicht definiert ist.

    Prüfe mal statt dessen: if ($Row + 1) > $aArray_1[0] then Exit

    Ich mag halt ungern mögliche Fehlerquellen stehen lassen wenn sie offensichtlich sind, auch wenn diese in deiner anwendung wohl nicht vorkommen werden ;)

    OT:

    Wenn du schon den Titel änderst, hättest du auch das fehlende "e" hinzufügen können :P

  • Musashi 20. April 2022 um 15:50

    Hat den Titel des Themas von „a) Textläng und b) jeweils 4 Arrays .....“ zu „a) Textlänge und b) jeweils 4 Arrays .....“ geändert.
  • Zu früh gefreut. Habe eines nicht beachtet. Mit jeweils 4 Zahlen sollen 4 Rechnungen durchgeführt werden und es kommen 4 Ergebnisse raus.

    Es geht um die Nutzung der Variable $aArray_1.

    Ich habe im Script ein IST / Soll erstellt.
    Unter "Soll" sind noch paar worte beigefügt.
    Am besten seht ihr es in der Consolenausgabe bei den ersten vier Rechnungen.

    Das $aArray_1 beinhaltet ja die eingelesenen Werte (hier Zahlen).
    Muss man da ein weiteres Array ($aArray_2) erstellen?, das ja dann doppelt so viele Zahlen haben müsste. So ich mich nun nicht irre.

    In bin sehr :( auf mich selber !

    Ich brauch jetzt eine frische Pizza. ;(:cursing:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    7 Mal editiert, zuletzt von Alina (21. April 2022 um 00:57) aus folgendem Grund: ConsoleWrite eingefügt damit man die Rechnung und die Ergebnisse in der Console übersichtlich sieht. Habe an eines nicht beachtet.

  • Wenn du schon den Titel änderst, hättest du auch das fehlende "e" hinzufügen können :P

    Frauenausrede: Ich wollte schon ein "e" kaufen, nur war ich noch nicht am Glücksrad an der Reihe. Musashi war vor mir dran.
    Ich möchte hier erwähnen, das ich früher immer sagte bekam, wenn ich so "kleinlich" war: "Mein liebes Kind, das ist Korinthen-Kakarei". (Sinn gemäß übersetzt).
    Ein Pastor würde bei uns nur sagen "Apostengesichte 3 Vers 1".
    .
    Ach paar hätte ich noch ! Nee, bin jetzt artig und schweige wie mein Schatten es macht. :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    2 Mal editiert, zuletzt von Alina (20. April 2022 um 19:47)

  • edit:

    Gelöscht, siehe Beitrag 11.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    2 Mal editiert, zuletzt von Alina (21. April 2022 um 00:51)

  • Ich stehe da gerade wieder wie in Ox vorm Berg . Brauche einen Alina-Translator:rofl:

    Ich denke du musst damit 2 Funktionen oder Schleifen bauen.

    Ich verstehe dich so: Bei den ersten 8 wird zweimal diese Abfolge gemacht: '+', '+', '*', '-'

    Danach die 16er Folge wie vorher bis zum Ende. Richtig?

  • Moin,

    ich verstehe das jetzt so:

    Aus einem ASCII-Array werden Gruppen von vier Werten abgegriffen. Nennen wir die 4 Werte mal W1, W2, W3 und W4.

    Mit den 4 Werten wird nach konstanten Regeln gerechnet.

    Für die erste Gruppe sieht das so aus:

    W1 + W2

    W3 + W4

    W1 * W3

    W2 - W4

    Für die folgenden Gruppem wiederholt sich das mit denselben oder anderen konstanten Operatoren (die noch konkret zu benennen wären).

    So weit, so gut?

  • Moombas

    Bisher sehe ich nur Lösungsansätze, die zwei aufeinanderfolgende Zahlenwerte in einer Operation mit einem Operator behandeln:

    W1 + W2

    W3 + W4

    W5 * W6

    W7 - W8

    Aus der letzten Änderung ergibt sich für mich, dass für vier aufeinanderfolgende Zahlenwerte vier Berechnungen mit jeweils zwei Zahlenwerten ausgeführt werden sollen.

    Für mich ist das schon ein Unterschied.

  • Ersten 4 Zahlen aus dem Array nehmen: 20, 6, 19, 75
    Mit diesen vier Zahlen die 4 Rechnungen durch führen mit den ersten 4 Operatoren wie in den Beitrag von Dir mit W1 ... aufgelistet.
    Dann habe ich vier Ergebnisse !

    Nächsten 4 Zahlen aus dem Array nehmen und mit den nächsten 4 Operatoren. Die nächsten vier Zahlen währen dann 4 neue W1's ...

    und führen zu den nächsten vier Ergebnisse.

    Wenn iih die ersten 16 Zahlen verwendet habe,wurden alle 16 Operatoren aus dem Operatoren-Array einmal verwendet und das sind

    16 Ergebnisse raus.

    Danach beginnt mit den nächsten Zahlen und die Nutzung des Operatoren-Array beginnt von vorne.
    Die Operatoren-Array muss nicht verändert werden, da sie ja immer von li. nach ree. abgearbeitetet wird und dann von vorne beginnt.
    Die Operatoren ändern sich nie, die Reihenfolge ist gleich bleibend. Das zeigt ja das Script aus Post #11.

    "4 Zahlenwert ; 4 Operatoren ; 4 Rechnungen ; 4 Ergebnisse"
    Zahlenwert = W
    Operator = O
    Ergebnis = E

    1. Gruppe : W1 , W2 , W3 , W4 = O1 , O2 , O3 , O4 = E1 , E2 , E3 , E4
    2. Gruppe :W5 , W6 , W7 , W8 = O5 , O6 , O7 , O8= E5 , E6 , E7 , E8

    3. Gruppe :W9 , W10 , W11 , W12 = O9 , O10 , O11 , O12= E9 , E10 , E11 , E12

    4. Gruppe :W13 , W14, W15 , W16 = O13 , O14 , O15 , O16= E13 , E14 , E15 , E16

    5. Gruppe :W17 , W18 , W19 , W20 = O1 , O2 , O3 , O4= E17 , E18 , E19 , E20

    6. Gruppe :W21 , W22 , W23 , W24 = O5 , O6 , O7 , O8= E21 , E22 , E23 , E2

    7. Gruppe :W25 , W26 , W27 , W28 = O9 , O10 , O11 , O12= E25 , E26 , E27 , E28

    8. Gruppe :W29, W30, W31 , W32 = O13 , O14 , O15 , O16= E29 , E30 , E31 , E32

    Und das ganze dann solange, bis keine Werte mehr zum rechnen da sind.
    Da der String immer ohne Rest durch 4 teilbar ist, ist immer eine "Gruppe" vollständig
    zum rechnen da.


    Ich meine wenn ich das jetzt richtig gesehen habe, das Velted genau richtig gelistet hat.

    Moombas :
    Velted hat schon den "Alina-Translater" verwendet. Wo immer er ihn her hat. :Face:


    Und noch mal ein dickes SORRY, das war mir jetzt echt peinlich.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Alina,

    hier ist (m)ein Versuch einer Lösung. Ich habe das 'nach guter alter Art' hart kodiert. Ich finde das nach wie vor oft übersichtlicher.

    Vielleicht ist das ja ein Weg für Dich.

  • Ja WOW ! Da muss ich erst einmal händisch (per Blatt & Bleistift) die ersten Werte nachrechnen.

    Ich brauch auch etwas Zeit nun, das zu verstehen, was da passiert. Ich benötige einen Lernerfolg dabei.

    Ich habe ein deutsches Lieblingsgedicht. Es ist das Gedicht über den Herr von Rebbeck auf Rebbeck vom Havelland.
    Ich habe es mir als KInd mal vorlesen lassen und nichts verstanden. Dann einige Worte erklärt bekommen. Das ist
    Flachland-Deutsch, jedes vierte Wort versteht mal nicht. Aber es geviel mir damals und heute noch sehr.

    Ich habe das Gedicht mal als Variable "$s_Test" eingesetzt.

    Um alle Zahlen anzeigen zu lassen reichte erst ein GUI von 810 x 820

    Berechnet wurden 1623 Bereiche.

    Ich teste noch, aber es sieht sehhhhhr gut ! ! ! Bis jetzt nichts entdeckt.

    Nur die vorletzte Zeile habe ich verändert, weil ich beim umkehren später das Trennungszeichen "|" nutzen würde.

    Spoiler anzeigen

    ;ConsoleWrite("==> Bereich " & $I & " bis " & ($I + 3) & @CRLF & $A[0] & " - " & $A[1] & " - " & $A[2] & " - " & $A[3] & @CRLF)

    ConsoleWrite($A[0] & "|" & $A[1] & "|" & $A[2] & "|" & $A[3] & "|" & @CRLF)

    Habe noch eine Frage bezüglich der Funktion "ConsoleOut".
    Könnte man die Ausgabe so machen, das immer 16 Ergebnisse (4 Bereiche) pro Zeile ausgegeben werden, bevor der Umbruch ( @CRLF ) erfolgt?

    Ansonsten beide Daumen HOCH ! ! !

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl