Variable in Array-Namen möglich?

  • Ist es möglich, eine Variable innerhalb eines Array- Namens / einer Array-Bezeichnung zu nutzen?

    Natürlich ist das möglich. (Eval lautet das Stichwort).
    Verstehe aber, dass wir es für deutlich besser halten, deinen bisherigen Weg zu überdenken.
    Gerade eben weil du ja etwas lernen möchtest.

    Vertraue uns einfach mal, dass wir schon anhand der Aufgabenstellung ableiten können, dass schon einige Schritte zuvor Dinge eher unelegant gelöst wurden.
    Dass du 3 unabhängige Arrays hast die du nun zusammenbringen willst kann durchaus möglich sein.
    Ob es aber wirklich notwendig ist und dafür nicht eine deutlich bessere Lösung existiert können wir nur anhand des Beispieltextes einschätzen.
    Daher unsere Nachfrage.

    Du wirst, entgegen deinem Anspruch, nicht viel lernen, wenn du nur Hilfe zu deinem vermeintlichen Teilproblem anforderst (Stichwort X-Y-Problem).

    Oder kurz: Die stupide Antwort auf deine Frage lautet, wie oben geschrieben: Eval()

    Aber es wird dir keiner hier raten, dein eigentliches Problem mit Hilfe von Eval zu lösen.

  • Hallo Moombas,

    es geht mir nur um den Namen / Bezeichner des Arrays, Ich will kein Array im Array speichern. Ich suche nach einer Möglichkeit wie bei CheckBox($x) auch ein Array($x) mit

    einer Variablen anzusprechen. Ich kann es offensichtlich nicht verständlich genug erklären.

    Schade, dass eine klare Frage - siehe mein Titel - und mittlerweile 7 Erklärungsversuche - eine solche Diskussion und vorallem solche Unterstellungen auslöst ... !

    Das ist nichts für mich und werde ich mein Konto jetzt hier schließen. Dir persönlich nochmal vielen Dank!

  • AspirinJunkie

    Auch Dir nochmal Danke. Ich schaue mir die Funktion an. Für mich ist der Weg das Ziel. Ich weiß auch nicht, was "schon einige Schritte zuvor

    eher unelegant gelöst wurde"? Ich habe nur BEISPIEL-Schleifen For-Next erstellt, um meine Fragestellung zu verdeutlichen ... Und NEIN, ich

    möchte nicht drei Arrays zusammenführen. Ich möchte alle Daten in einem 2D Array ODER in drei separaten 1D Arrays, whichever is more

    pratical!

    Sicherlich kann ich einen Ersatz-Kotflügel montieren, weil der besser und neuer ist als der alte. Aber wenn ich in einem Forum die Frage stelle,

    wie man die Spachtelmasse zum Füllen eines Lochs im Kotflügel anrührt, ist das nicht die Antwort, die ich erwartet hatte .... und vorallem keine

    die mir hilft.

    Und auf Anspielungen "warum machst Du es so kompliziert" oder die XY-Geschichte habe ich einfach keine Lust!

    Einmal editiert, zuletzt von kilo (2. Oktober 2023 um 14:30)

  • Ich weiß auch nicht, was "schon einige Schritte zuvor

    eher unelegant gelöst wurde"? Ich habe nur BEISPIEL-Schleifen For-Next erstellt, um meine Fragestellung zu verdeutlichen ...

    Deine Beschreibung lautete, dass alle Daten aus ein und der selben Textdatei stammen (die aus einer pdf extrahiert wurde).
    Die Daten stehen also bereits in einer direkten Beziehung zueinander.
    Diese Beziehung löst du erst einmal wieder auf und hast - entsprechend deiner Beschreibung - dann auf einmal 3 unabhängige Arrays.
    Und nun versuchst du - mit Hilfe von dynamischen Variablennamen(!) - diese Daten wieder in eine Beziehung zu bringen.

    Machen wir es kurz: So ziemlich jeder mit ein bisschen fortgeschrittener Programmiererfahrung sieht sofort, dass dies definitv nicht der Königsweg sein wird.

    Aber ich bin hier auch raus weil ich noch weniger Lust habe Leute zu ihrem Glück zu zwingen.

    Ich biete lediglich Hilfe an - und diese besteht nicht lediglich daraus stupide deren Probleme bei bizarren Zwischenproblemen zu lösen.

    Für Tipps und Hinweise prinzipiell effektivere, übersichtlichere und sicherere Programme zu schreiben bist du, wie du glasklar artikuliert hast, nicht offen.
    Das habe ich akzeptiert und entsprechende User nerve ich dann auch nicht mehr mit Tipps.

  • es geht mir nur um den Namen / Bezeichner des Arrays, Ich will kein Array im Array speichern. Ich suche nach einer Möglichkeit wie bei CheckBox($x) auch ein Array($x) mit

    einer Variablen anzusprechen. Ich kann es offensichtlich nicht verständlich genug erklären.

    Du sprichst die Checkbox mit $Checkbox[$x] an und das entsprechende Array-Element mit $aArray[$x][$Preis]. Wobei $x die Zeile, also das x.te Element ist und z.B. $Preis die Spalte definiert wo die Preise zu finden sind (Basis mein bereits geposteter Aufbau).

    AutoIt
    ;Zeile 0 = Anzahl Zeilen und Spalten
    ;Zeile 1 = Überschriften
    For $x = 2 to $A_Test[0][0]
        MsgBox(0, 'Bezahlt' , 'Zeile ' & $x & ' bezahlt: '  & $A_Test[$x][$Bezahlt])
        MsgBox(0, 'Bestellt', 'Zeile ' & $x & ' bestellt: ' & $A_Test[$x][$Bestellt])
        MsgBox(0, 'Preis'   , 'Zeile ' & $x & ' Preis: '    & $A_Test[$x][$Preis])
    Next

    Was passt an dem Zugriff auf die Daten nicht? Der ist equivalent zu deinem Beispiel:

    AutoIt
    For $x = 0 To 10
        If BitAND(GUICtrlRead($Checkbox[$x]),$GUI_CHECKED) Then
        MsgBox(0,"Check on/off","CheckBox " & $x & " ist on")
    Endif

    2 Mal editiert, zuletzt von Moombas (2. Oktober 2023 um 15:30)

  • Danke Moombas,

    vorallem für die Antwort, trotzdem ich nach einigen "Unanehmlichkeiten" den Thread eigentlich geschlossen habe. Neben vielen unpassenden war doch auch

    eine gute Sache an den Auslassungen von AspirinJunkie - das Zauberwort lautet (in AutoIt) offensichtlich "dynamische Variablenamen".

    Dein Beispiel zielt auf den Inhalt des Arrays ("$x die Zeile, also das x.te Element ist und z.B. $Preis die Spalte"). Mir geht es aber erstmal nur um den Bezeichner / den

    Namens des Arrays.

    Nehmen wir an, dass $x = 1 ist, dann kann ich mit $CheckBox($x) die $CheckBox1 "ansprechen" - das gleiche möchte mit einem Arraynamen erreichen $Array($x)

    soll für den Namen / Bezeichner $Array1 stehen, nicht für die [Zeilen-] und [Spalten-] Inhalte.

    Dennoch vielen Dank für Deine Unterstützung!

    Einmal editiert, zuletzt von kilo (2. Oktober 2023 um 15:44)

  • Ja aber deine Checkbox1 sprichst du ja nicht mit Checkbox 1, sondern mit $CheckBox($x) an.

    Das Gleiche fürs Array:

    Array1 sprichst du mit $Array[$Zeile][1] an, das Array2 mit $Array[$Zeile][2] usw. wobei ich die 1 bzw. die 2 durch eine Variable ersetzt habe die für z.B. den Preis gleich die richtige Spalte anspricht. Natürlich kannst du das auch mit einer zweiten Schleiufe komplett durchgehen, das wurde aber in Beitrag #2 bereits gezeigt wie es geht.

  • AspirinJunkie #24

    genau so ist es.....

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • das Zauberwort lautet (in AutoIt) offensichtlich "dynamische Variablenamen".

    [...]

    das gleiche möchte mit einem Arraynamen erreichen $Array($x)

    soll für den Namen / Bezeichner $Array1 stehen

    Sollen wir das so deuten, dass du immer noch herumrätselt wie man dies bewerkstelligt obwohl ich dir gleich zwei mal den exakten Namen der Funktion (inklusive Verlinkung auf die Hilfe hierzu) die genau dafür existiert, benannt habe?

    Weil gelöst scheint es für dich ja noch nicht zu sein und konkrete Fragen zu Eval() hast du auch keine gestellt.

  • Ich verstehe unter einem Forum eine Plattform der "Hilfe zur Selbsthilfe" - so agieren wir (nebst eines Minimums an Höflichkeit) zumindest in den 2 Foren, die

    ich adminstriere. Da beantwortet man die Fragen oder versucht es zumindest, mögen sie einem Profi auch noch flach erscheinen. Ich erachte mich nach über
    40 Jahren Berufserfahrung mittlerweile als recht fit in meinem Fachbereich. Trotzdem / genau deswegen würde es mir nicht im Traum einfallen, jemandem zu
    erklären, dass ich effektivere, übersichtlichere und sicherere Programme schreiben kann als sie/er, dass wissen die Fragenden, sonst würde sie/er nicht fragen!

    Es geht in meinem Fall schließlich um eine "Alltags- verbessernde / vereinfachende Programmierung" und nicht um ein Betriebsprogramm für ein AKW. Da darf
    es auch mal ein wenig komplizierter und/oder holpriger sein. Mir als Antwortender ist auch immer wichtiger, dass mir der TE überhaupt folgen kann. Beim See-

    pferdchen-Schwimmabzeichenfängt man ja auch nicht gleich mit einem 2 ½ Vorwärtssalto mit 3 Schrauben gehechtet vom 10 m Turm an.

    Subsummierend hat man als Anfänger mit bizarren (XY-) Zwischenproblemen nach solchen Antworten schlichtweg keine weiteren stupiden Fragen mehr und sucht
    sich lieber dort Hilfe, wo man ein wenig distinguierter miteinander umgeht. Insofern danke - aber nein danke. Nach 13 Jahren als regelmäßig lesendes sowie hin-
    und wieder auch mal fragendes Mitglied war das hier heute ein echter "Eye-Opener" ... Super Schade! Aber zum großen Glück gilt das ja nicht alle!

  • Ich verstehe unter einem Forum eine Plattform der "Hilfe zur Selbsthilfe" - so agieren wir (nebst eines Minimums an Höflichkeit) zumindest in den 2 Foren, die

    ich adminstriere. Da beantwortet man die Fragen oder versucht es zumindest, mögen sie einem Profi auch noch flach erscheinen. Ich erachte mich nach über
    40 Jahren Berufserfahrung mittlerweile als recht fit in meinem Fachbereich. Trotzdem / genau deswegen würde es mir nicht im Traum einfallen, jemandem zu
    erklären, dass ich effektivere, übersichtlichere und sicherere Programme schreiben kann als sie/er, dass wissen die Fragenden, sonst würde sie/er nicht fragen!

    Du wirst hier im Forum selten erleben, dass ich die Contenance verliere. Aber wenn ich deine Einlassungen hier lese, bin ich kurz davor.

    Dir wäre also geholfen gewesen, wenn als erste Antwort auf deine Frage die Funktion Eval benannt worden wäre - ohne weiteren Kontext. Denn das verlangst du ja stur: Ich frage - ihr Forumvolk habt zu antworten.

    Keine Ahnung, was in deinen administrierten Foren so abgeht. Hier geht es uns um Hilfe zur Selbsthilfe. Und in 7 von 10 Fällen ist einfach das XY-Problem gegeben. Wenn du unsere Erfahrungen ignorieren willst: WARUM FRAGST DU???

  • BugFix

    Im Gegenteil!

    Lies doch bitte mal meine Beiträge von vorne. Ich war immer höflich in den Anreden, habe mich bedankt und angemerkt, dass ICH mein Problem

    für Euch Profis wahrscheinlich nicht klar genug beschreiben kann und ich ein Nicht-Profi (siehe Status) bin. Und dann lies bitte mal die Antworten ...

    Und selbst nachdem ich den Thread lange geschlossen habe, um genau das hier zu vermeiden wurde noch nachgetreten.

  • @kilo

    uns hier der Unhöflichkeit zu beschuldigen ist der Gipfel der Borniertheit! Dir würde eine Portion Selbstkritik gut zu Gesicht stehen!

    Hochachtungsvoll

    Peter S. Taler

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Moin,

    ich hoffe, wir haben uns Alle wieder beruhigt. Wenn der Fragesteller unbedingt an seinem Konzept festhalten will, kann man das nicht ändern.

    Eine Antwort gibt es schon: Eval()

    Von mir nun noch zwei Beispiele:

    zu Beitrag #1:

    zu Beitrag #3:

    AutoIt
    #include <Array.au3>
    
    Dim $aTest[0][3]
    For $I = 0 To 9
        $J = _ArrayAdd($aTest, "||")
        For $X = 0 To 2
            $aTest[$J][$X] = "TestWert " & $I & $X
        Next
    Next
    _ArrayDisplay($aTest)

    Die Anzahl der Zeileneinträge in der "0-Zeile" braucht man nicht.

    Wer immer das liest, sei glücklich damit!

    Velted

  • Hi,

    Nachtrag: Da ich viel in Excel und VBA Programmiere (wo das Zuweisen von "Variablen innerhalb einer Variablen" übrigens funktioniert) dachte ich, dass "XY-Problem" tatsächlich

    für Achsen (z.B.: innerhalb einer Matrix oder eines Arrays) steht.

    na dann...zeig doch einfach mal deine 8-10 Zeilen VBA-Code...und wenn es mehr sind....dann auch die!

    Genau wie AspirinJunkie vermute ich nämlich auch, dass hier völlig F A L S C H E "Lösungsansätze" abgefragt werden.

    @"helfende" Forianer

    Es macht wenig Sinn, reflexartig auf die "Ich weiss was! - Taste" zu hämmern und Script-"Lösungen" zu posten wenn das Problem nicht oder nur unklar definiert ist! Der TE soll ein funktionierendes Snippet, IN EGAL WELCHER PROGRAMMIERSPRACHE posten und wir versuchen dann, diese Programmlogik in AutoIt umzusetzen! Ich bin nicht der ultimative Glaskugelleser, wer von euch da entsprechende Expertisen hat, soll mir diese zukommen lassen....Ich lerne gerne jeden Tag dazu! :Glaskugel:

    Jemand "neues" der diesen Thread hier liest, verabschiedet sich mit Recht(!) sofort und sucht ein Forum, in dem einem auch geholfen wird!

    Das ist jetzt der 35. Beitrag, ich bin echt gespannt, wann die erste mit den Beispieldaten (sic!) funktionierende "Lösung" gepostet wird...

  • Andy

    jup so ises

    Velted

    es gibt nix zu beruigen... keiner von "uns" war aufgeregt... nur wie AspirinJunkie und auch Andy richtigerweise sagen ....Glaskugellesen ist nicht unser Ding. Und helfen... wie wir alle wissen geholfen wird hier - wenn möglich - immer.

    LG

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Ich bin nicht der ultimative Glaskugelleser, wer von euch da entsprechende Expertisen hat, soll mir diese zukommen lassen....Ich lerne gerne jeden Tag dazu! :Glaskugel:

    Moin Andy,

    der Griff zur Glaskugel lässt sich manches Mal vermeiden, wenn man sich die Fragen noch einmal aufmerksam durchliest. Für meine Code-Snippets brauchte ich sie nicht.

    Beitrag #1:

    ist es möglich, eine Variable innerhalb eines Array-Namens zu benutzen (wie in VBA) ? Um z.B. mit _ArrayAdd($A_Array[$x], ...) in einem For-Next-Schleifendurchlauf Daten in $Array1, $Array2, $Array3, usw. zu speichern?

    Beitrag #3:

    Wenn ich mit "_ArrayAddd" arbeite, weiß ich nicht, wie ich die "Leerzeilen" (siehe Bild) vermeide bzw. nachträglich lösche und es fehlt mir der Wert für die Anzahl der

    Zeileneinträge in der "0-Zeile".

    Für mich sind das recht klare Fragen und ich habe versucht, die zu beantworten. Solange man die echte Aufgabenstellung nicht kennt, kann man nicht mehr tun. Und es ist auch sinnlos, Vermutungen darüber anzustellen und zu behaupten, 'wie immer Du was auch immer lösen willst, ich weiß eine bessere Lösung'.

    Gut, dass wir uns nie aufregen! ;)

    Velted

  • Ach schade. Solche Themen wurden bereits in der Vergangenheit hier behandelt und die Suche hätte helfen können. Nur ein geringstes Maß an Mitarbeit des TE hätte das Problem in kürzester Zeit aus der Welt schaffen können.
    Einfach einen Beispieltext hochladen und es finden sich Leute, die einem entweder helfen oder einfach das Skript hochladen.

    Stattdessen werden teilweise Themen eines Programmierers der weiß, sein Array muss drei Elemente fassen und der dafür _ArrayAdd verwendet gefolgt, wenn es um so abseitige Dinge wie Eval geht.

    Grüße autoiter