Variable Variabelnamen
Fleit
- perl
0 Alexander (HH)0 hotti
Hallo,
ich möchte mit TCL/TK eine Liste erstellen. Diese liste besteht immer aus "Label + Entry". Wie viele Einträge es sind weiß ich vorher nicht ich möchte die Liste dynamisch aus einer Datei erstellen. Also in der Datei sind Einträge, nachdem ich die Datei eingelesen hab möchte ich darüber iterieren und dann eine wie oben beschriebene Liste erstellen.
z.b.:
my $mw = new MainWindow;
foreach my $line (@inputfile)
{
my $label_XXX = $mw -> Label(-text=>"$line")
my $entry_XXX = $mw -> Entry();
$label_XXX -> grid(-row=>XXX,-column=>1);
$entry_XXX -> grid(-row=>XXX,-column=>2);
}
was und wie die Elemente jetzt aussehen ist denke ich mal für die Lösung egal. Ich will XXX mit einem Index ersetzen. Also einfach eine Variable $i hinzufügen die hochgezählt wird. So dass das Label beim ersten Schleifendurchlauf $label_1 heißt, dann $label_2, $label_3.. usw. für Entry das gleiche.
Wenn ich die Variabelnamen nicht dynamisch wählen kann, kann ich die einzelnen Elemente später nicht mehr ansprechen.
Schon mal danke falls jemand eine Idee hat!
gruß
Moin Moin!
Du suchst Hashes (Asssoziative Arrays). Variable Variablennamen sind nur kaputt.
Alexander
und wie stell ich das an damit ich das Ergebnis bekomme was ich mir wünsche? :)
Die Idee kam mir ganz zu Anfang auch aber ich hatte keine Ahnung wie ich es dann genau umsetzten sollte.
Aber danke schonmal!
my (%label, %entry);
⋮
$label{$index} = …
$entry{$index} = …
$label{$index}->method(…)
Das ist so banal, das hättest du auch mit Hilfe der Lehrmaterialien oder durch bloßes Ausprobieren alleine zusammengekriegt.
Vielen Dank es klappt.
Ich hoffe du kannst es mir verzeihen dass ich nicht selbst drauf kam, manchmal steht man eben auf dem Schlauch. Mein Denkansatz war vollkommen anders und da hatte ich mich irgendwie fest gefahren. ;)
hi,
Wenn ich die Variabelnamen nicht dynamisch wählen kann, kann ich die einzelnen Elemente später nicht mehr ansprechen.
Siehe Alexander(HH)s Anschreiben. Ich würde hier auch anders ansetzen, auf variable Variablennamen verzichten und mir eine passende Datenstruktur fürs Vorhaben überlegen. Die Struktur läuft auf einen hash hinaus, der fix und fertig bereits beim Einlesen der Datei erstellt wird, z.B. so:
$ref = {
obj01 => { Label => '', Entry => ''},
obj02 => { Label => 'foo', Entry => 'bar'}
};
Die Objekte, über die der Index läuft können beliebig viele sein und die Namen sowie Anzahl der Attribute kann bei jedem Objekt anders aussehen. Soll eine Sortierung erfolgen, kein Problem, Attribut 'order' hinzufügen und für einen etwaigen Einbau der Schwartz'schn Transformation sind die Referenzen schon vorhanden.
Hotti