Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Orkenzo 27 Listopadu 2011, 20:57:38

Název: přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: Orkenzo 27 Listopadu 2011, 20:57:38
Potřeboval bych přiřadit do proměnné jejichž název mám uložený v proměné třeba String1. Samozdřejmě proměnná je předem deklarovaná.

Př:
String:='Promenna';
if jinapromenna <= 10 then String1:=String+'a'
else String1:=String+'b';

Jak bych teď přiřadil něco do názvu proměnné v String1? Samozdřejmě tohle je banální situace...ale může se stát že je to docela složité. například v Object packalu mám několik editů a potřeboval bych jejich obsah dostat do arraye.
a[1]:=Edit1.Text;
a[2]:=Edit2.Text;
a[3]:=Edit3.Text;
a[4]:=Edit4.Text;
...atd.

Napadá vás jak tohle udělat bez zbytečného a dlouhého vypisování? Díky
Název: Re:přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: pacholik 27 Listopadu 2011, 21:42:27
To nelze. Můžeš mít pole editů, k těm se v cyklu dostaneš.
Název: Re:přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: Filip Dominec 27 Listopadu 2011, 22:15:51
Mimochodem, v Pythonu to jde. Nemluvě o tom, že při použití gtk.Builder se widgety označují jménem jako řetězcem.

locals()["aoeu"]="htnaoeu"

Ale je to trochu nehezké.
Název: Re:přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: GdH 27 Listopadu 2011, 23:16:12
Mimochodem, v Pythonu to jde. Nemluvě o tom, že při použití gtk.Builder se widgety označují jménem jako řetězcem.

locals()["aoeu"]="htnaoeu"

Ale je to trochu nehezké.

No vidíš, já bych to s ohledem na mé znalosti řešil v Pythonu tímto:
exec('%s = "hodnota"'  %String1)
Ovšem v Pascalu to moc nepomůže..
Název: Re:přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: Kedrigern 28 Listopadu 2011, 00:24:22
V Pascalu to, ale IMHO nejde.
Název: Re:přiřazení do ne předem známé proměnné- Pascal
Přispěvatel: donny 28 Listopadu 2011, 09:14:38
Jak bych teď přiřadil něco do názvu proměnné v String1? Samozdřejmě tohle je banální situace...ale může se stát že je to docela složité. například v Object packalu mám několik editů a potřeboval bych jejich obsah dostat do arraye.
a[1]:=Edit1.Text;
a[2]:=Edit2.Text;
a[3]:=Edit3.Text;
a[4]:=Edit4.Text;
...atd.

Napadá vás jak tohle udělat bez zbytečného a dlouhého vypisování? Díky
Ja teda Obj.Pascalu uz nijak zvlast nerozumim, ale neni mozne misto Edit1, Edit2... pouzit uz rovnou prvky pole (Edit[1]...)? Pak by to vypadalo nejak takto:

for i := 1 to Length(Edit) do
begin
    a[i] := Edit[i].Text;
end;