Konstanten ausführen
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Konstanten ausführen
Ich lese mit aFileReadEx (ist ne Xclass-Funktion), die Dateien in ein Array einliest) eine Datei ein. Dort steht nun eine Konstante drin.
Im Programm Konstante C_CR.
Nach dem Einlesen bekomme ich "C_CR" in einer Variable.
Jetzt hatte ich versucht mit & die Konstante auszuwerten, dann kam der Fehler unbekannte Variable, obwohl die Konstante einwandfrei definiert ist.
In der Konstante kann Text stehen, aber auch Chr(nAscii).
Am Ende will ich dann eben "Text"+ausgewertete Konstante zusammenfügen.
Bsp: #define C_CR "Text2"
cKonstante:="C_CR"
cText:="Text"
cGes:=cText+cKonstante
Ausgabe: cGes="TextText2"
Im Programm Konstante C_CR.
Nach dem Einlesen bekomme ich "C_CR" in einer Variable.
Jetzt hatte ich versucht mit & die Konstante auszuwerten, dann kam der Fehler unbekannte Variable, obwohl die Konstante einwandfrei definiert ist.
In der Konstante kann Text stehen, aber auch Chr(nAscii).
Am Ende will ich dann eben "Text"+ausgewertete Konstante zusammenfügen.
Bsp: #define C_CR "Text2"
cKonstante:="C_CR"
cText:="Text"
cGes:=cText+cKonstante
Ausgabe: cGes="TextText2"
Viele Grüße
Stevie
Stevie
Hi Stevie,
nach der Hilfe kann der Makro-Operator nur auf PUBLIC- und PRIVATE-Variablen angewendet werden.
Versuch doch folgendes Beispiel (geht davon aus, dass in der define-Konstanten cFunc ein Funktionsname ohne Klammern () als String definiert ist) :
Grüße
Heinz
nach der Hilfe kann der Makro-Operator nur auf PUBLIC- und PRIVATE-Variablen angewendet werden.
Versuch doch folgendes Beispiel (geht davon aus, dass in der define-Konstanten cFunc ein Funktionsname ohne Klammern () als String definiert ist) :
Code: Alles auswählen
EVAL( &("{ || "+cFunc+"() } ") )
Heinz
Das einzige, was ich weiß ist, dass ich nichts weiß, Sokrates
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Habe mal die Variablen public geschaltet, bleibt aber weiterhin unbekannt.henxl hat geschrieben:Hi Stevie,
nach der Hilfe kann der Makro-Operator nur auf PUBLIC- und PRIVATE-Variablen angewendet werden.
Versuch doch folgendes Beispiel (geht davon aus, dass in der define-Konstanten cFunc ein Funktionsname ohne Klammern () als String definiert ist) :
GrüßeCode: Alles auswählen
EVAL( &("{ || "+cFunc+"() } ") )
Heinz
In der Variable steht übrigens keine Funktion, sondern nur ein einfacher Konstantenname mit Funktionen ist das ja kein Problem.
Konstante C_CR = "OK" definiert im Programm.
Konstante kommt als C in Variable an.
Jetzt Variable ausführen.
Ergebnis: "OK"
Viele Grüße
Stevie
Stevie
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
war ja auch nur ein Beispiel
für cKonstante ist natürlich der Variablenname anzugeben, die den Funktionsnamen enthält.
Bei mir funktioniert das so, ich kann alle Funktionen / Proceduren in eine Variable packen z.B.
cKonstante := "plz() + rtrim(cOrt)"
Bitte beachten: Natürlich dürfen die Funktionen / Proceduren nicht als local deklariert sein wenn die in einer anderen PRG stecken aber das dürfte ja bekannt sein
für cKonstante ist natürlich der Variablenname anzugeben, die den Funktionsnamen enthält.
Bei mir funktioniert das so, ich kann alle Funktionen / Proceduren in eine Variable packen z.B.
cKonstante := "plz() + rtrim(cOrt)"
Bitte beachten: Natürlich dürfen die Funktionen / Proceduren nicht als local deklariert sein wenn die in einer anderen PRG stecken aber das dürfte ja bekannt sein
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Das weiß ich auch.Koverhage hat geschrieben:war ja auch nur ein Beispiel
für cKonstante ist natürlich der Variablenname anzugeben, die den Funktionsnamen enthält.
Bei mir funktioniert das so, ich kann alle Funktionen / Proceduren in eine Variable packen z.B.
cKonstante := "plz() + rtrim(cOrt)"
Bitte beachten: Natürlich dürfen die Funktionen / Proceduren nicht als local deklariert sein wenn die in einer anderen PRG stecken aber das dürfte ja bekannt sein
nur das bei mir in der define Konstante Text drinsteht, der keine Funktion repräsentiert / starten soll.
Viele Grüße
Stevie
Stevie
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Hallo Stevie,
bei Deinem Ansatz gibt es keine "Konstante" bzw. Variable "C_CR". Mittels der Präprossesor-Anweisung "#DEFINE C_CR "TEXT2" wird lediglich beim Compiler-Lauf das Literal C_CR nach "Text2" konvertiert. Wenn Du Dir den entsprechenden Präpressor-Code anschaust, wirst Du feststellen, dass das Literal C_CR durch "Text2" ersetzt wurde. Somit existiert auch keine Variable C_CR.
Eine Lösung besteht darin, dass in Deiner externen Datei, die Du über aFileReadEx einliest, eine entsprechende Funktion deklarierst, die wiederum im Programm existiert und das entsprechende Ergebnis liefert. Innerhalb der Programmfunktionen werden #DEFINE-Anweisungen berücksicht.
Gruß, Olaf
bei Deinem Ansatz gibt es keine "Konstante" bzw. Variable "C_CR". Mittels der Präprossesor-Anweisung "#DEFINE C_CR "TEXT2" wird lediglich beim Compiler-Lauf das Literal C_CR nach "Text2" konvertiert. Wenn Du Dir den entsprechenden Präpressor-Code anschaust, wirst Du feststellen, dass das Literal C_CR durch "Text2" ersetzt wurde. Somit existiert auch keine Variable C_CR.
Eine Lösung besteht darin, dass in Deiner externen Datei, die Du über aFileReadEx einliest, eine entsprechende Funktion deklarierst, die wiederum im Programm existiert und das entsprechende Ergebnis liefert. Innerhalb der Programmfunktionen werden #DEFINE-Anweisungen berücksicht.
Gruß, Olaf