Autor |
Beitrag |
kabizolis
      
Beiträge: 86
|
Verfasst: Fr 01.04.05 13:10
ich habe ein problem...
ich lasse in eine listbox befehle generieren...
diese will ich dann ausführen wie kann ich das tun?
ein beispiel dazu:
in der listbox stehen jetzt da befehle wie zum beispiel
k3.caption := 'hallo';
form3.width := 220;
...
wie kann ich diese befehle ausführen lassen? Moderiert von Gausi: Topic aus Dateizugriff verschoben am Fr 01.04.2005 um 14:05
|
|
maveric
      
Beiträge: 54
D7
|
Verfasst: Fr 01.04.05 13:42
Ist das jetzt auch ein Aprilscherz ????
Was hast du denn davon wenn du deine Anweisungen in die listbox reinschreibst??? Probiers mal mit einem button !?!? eventuell procedure ,..... !?!?
|
|
kabizolis 
      
Beiträge: 86
|
Verfasst: Fr 01.04.05 13:51
nein, das ist kein aprilscherz!
das hat schon einen sinn... meine kentnisse in delphi halten sich in grenzen.... es gäbe sicher eine bessere lösung.
ich habe buttons, die ich folgendermassen benannt habe:
b1, b2, b3, b4,....
dass ich nicht für jeden button einen eigenen roman schreiben muss, habe ich einen timer gesetzt, der je nach dem welchen knopf ich drücke eine ausgabe in eine listbox zwischenspeichert....
nun will ich diesen erzeugten text ausführen lassen und zum beispiel.
abhängig vom gedrückten knopf... soll unter anderem eine form die farbe wechseln.
die bezeichnungen der form
f1, f2, f3, f4,...
ich hoffe, du weist wie ich meine...
der erzeugte text soll nun ausgeführt werden.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 01.04.05 13:56
Eigenschaften kannst du zur Laufzeit setzen. Das ist eine einfache zuweisung. Code ausführen wird wohl nur mit einer Script-Komponente möglcih sein, es sei denn du willst das selber schreiben.
|
|
maveric
      
Beiträge: 54
D7
|
Verfasst: Fr 01.04.05 14:03
kabizolis hat folgendes geschrieben: |
nun will ich diesen erzeugten text ausführen lassen .
. |
Soll das ne Anweisung sein ??
Also, du fügt in listbox1 (listbox1.items.add ({dein Inhalt})  etwas hinzu. Richtig?
Und diesen Text z.B. k3.caption:= .... möchtest du jetzt ausgeführt haben ?
Dann schreib doch im Timer den Befehl mitrein.
Button-->timer---> 1. Anweisung ausführen (k3.caption:=...)
2. listbox1.items.add ({Anweisung als Text ??});
_________________ s´Leben ist kein Ponyhof...
|
|
kabizolis 
      
Beiträge: 86
|
Verfasst: Fr 01.04.05 14:16
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| listbox2.Items[0] := 'b' + inttostr(variable) + '.Caption := Anzeige.Text;'; listbox2.Items[1] := 'listbox1.Items['+ inttostr(5*variable-4) +'] := Anzeige.Text;'; listbox2.Items[2] := 'h'+ inttostr(variable) +'.Brush.Color := Farbe.Selected;'; listbox2.Items[3] := 'listbox1.Items['+ inttostr(5*variable-3) +'] := colortostring(Farbe.Selected);'; listbox2.Items[4] := 'listbox1.Items['+ inttostr(5*variable-2) +'] := Empfang.Text;'; listbox2.Items[5] := 'Empfang.Text := '+ chr(39) + chr(39) +';'; listbox2.Items[6] := 'Knopf.Enabled := false;'; |
so sieht der quelltext aus....
und so das ergebnis...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| b1.caption := Anzeige.Text; listbox1.Items[1] := Anzeige.Text; h1.Brush.Color := Farbe.Selected; listbox1.Items[2] := colortostring(Farbe.Selected); listbox1.Items[3] := Empfang.Text; Empfang.Text := ''; Knopf.Enabled := false;
b2.caption := Anzeige.Text; listbox1.Items[6] := Anzeige.Text; h2.Brush.Color := Farbe.Selected; listbox1.Items[7] := colortostring(Farbe.Selected); listbox1.Items[8] := Empfang.Text; Empfang.Text := ''; Knopf.Enabled := false; |
...u.s.w
das will ich dann ausführen lassen
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt und weitere hinzugefügt.
|
|
kabizolis 
      
Beiträge: 86
|
Verfasst: Fr 01.04.05 15:40
oder vielleicht einfacher....
wie kann ich das ausführen?
Delphi-Quelltext 1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
wäre wirklich sehr dankbar für eine brauchbare antwort, ich muss bis nächste woche damit fertig sein.
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt.
|
|
WeBsPaCe
      
Beiträge: 2322
Erhaltene Danke: 1
FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
|
Verfasst: Fr 01.04.05 15:48
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Fr 01.04.05 15:50
kabizolis hat folgendes geschrieben: | oder vielleicht einfacher....
wie kann ich das ausführen?
Delphi-Quelltext 1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
wäre wirklich sehr dankbar für eine brauchbare antwort, ich muss bis nächste woche damit fertig sein.
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt. |
Du kannst sowas nicht ausführen. Wie Luckie schon sagte, bräuchtest du dafür eine Scriptsprache. Delphi ist aber eine Compilersprache. Bevor du irgendwas ausführen kansnt muss es kompiliert werden, und das geht logischerweise nur mit compiler.
Die einzige Möglichkeit die dir bleibt ist die Eingabe anzuschauen und dann dementsprechend zu handeln, mit If-abfragen o.ä.
also z.B.
Delphi-Quelltext 1: 2: 3:
| begin if listbox1.items[i] = 'form1.width := 500' then form1.width := 500; end; |
Anders gehts nicht. Aber es gibt vereinfachungen. Siehe FINDCOMPONENT.
|
|
Hack Gott
      
Beiträge: 409
Windows Vista
Delphi 2005 Personal, Delphi 7
|
Verfasst: Fr 01.04.05 15:52
Titel: Nochmal?!
Also soll jetzt Beispielsweise in deiner Datei die du dann in eine Listbox lädst
timer1.enabled := true stehen. Das Programm wird gestartet, die Datei in der das steht wird in eine Listbox geladen, und der Befehl wird ausgeführt, egal was drinne steht (natürlich gültiger delphi code)??
_________________ "Je mehr Käse, desto mehr Löcher; Je mehr Löcher, desto weniger Käse. Daraus folgt: Je mehr Käse desto weniger Käse!"
|
|
kabizolis 
      
Beiträge: 86
|
Verfasst: Fr 01.04.05 16:02
erstmal dankefür die raschen und kompetenten antworten!
jetzt hab' ich mich aber wohl schlecht ausgedrückt....
mein problem, die alte version lassen wir sein, ist folgendes;
ich will diesen code einfach ausführen, diesmal ohne listbox, also ganz normal:
Delphi-Quelltext 1:
| 'b' + inttostr(variable) + '.Caption := Anzeige.Text' |
also b1, b2, b3, b4,.... sind buttons. ich will nicht jedesmal den gesamten text für jeden button schreiben wollen.
eigentlich würde es heissen müssen:
b1.Caption := Anzeige.Text;
oder
Delphi-Quelltext 1:
| b19.Caption := Anzeige.Text; |
ist das möglich?
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt, ein paar Absätze entfernt
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 01.04.05 16:05
Ja, das ist möglich. Der Tip wurde bereits gegeben FINDCOMPONENT.
_________________ We are, we were and will not be.
|
|