WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   XML Stringoperationen (http://www.wcm.at/forum/showthread.php?t=169601)

EduHir 10.07.2005 20:10

XML Stringoperationen
 
Hat da jemand Erfahrung. SDK gibt nichts her:mad:

Wie kann ich einen String einer L: Variablen zuordnen? Welche Unit?

'Red' (>L:Farbe,number)

Und wie kann ich den String wiederausgeben?

Dann:
<Text X="24" Y="14" Length="13" Font="Arial" Color=(L:Farbe,....) ....

Ist soetwas möglich??

Für praktische Beispiele wäre ich dankbar!!

edi

harry3 10.07.2005 20:16

Du brauchst den Datentyp string:
(L:Variable, string)


Grüße,
Harri

EduHir 10.07.2005 20:31

Ja, habe ich probiert!!!
Und Symbol auch!!

String steht nicht in der Unit.txt vom Arne Bartels. Und in die util.dll
habe ich auch kurz reingeschaut!

edi

harry3 10.07.2005 20:42

Funktionierts also nicht!?

So etwas in der Art wäre mir nämlich logisch vorgekommen:
'string'(&gt;L:Variable, string)

Probier mal einen Bsp. Text in die Variable reinschreiben und dann wieder auszugeben auf einem Gauge. Müsste doch eigentlich funktionieren!?

Wenns nicht funktioniert dann probier ichs aus, weils mich selber interessieren tät'.

Grüße,
Harri

EduHir 10.07.2005 22:40

Harri,
tue das bitte !!!!

Ich habe ein Gau für solche Zwecke!!
Wenn etwas unklar ist, dann probiere ich damit den Code aus, bis das richtige rauskommt!!

Und das SDK dazu ist typische MS Qualität!!!

Ausgabezeile :
<String>VRef: %(000 (L:SPD_diff_vs1,number) )%!06.2f!</String>

Eingabezeile:
'Red' (&gt;L:SPD_diff_vs1,number)

Statt number habe ich auch string(logisch) und symbol(aus einer anderen Sprache) probiert!! Integer funktioniert!

edi

harry3 10.07.2005 22:55

ICh muss mal schauen wann ich dazukomm.
Derzeit muss ich nämlich Führerschein üben.

Aber was willst du denn genau machen? Den Text "Rot" ausgeben oder einfach einen Text rot erscheinen lassen? Also dass er z.b. zwischen Rot und grün wechselt? Wenn du das tun willst dann gibts eine bessere Lösung.


Grüße,
Harri

EduHir 10.07.2005 23:17

Führerschein:confused:
Der Flusi ruft!

Genau! Das wäre das Entziel!!

Aber ich dachte, ich spiele erst ein bisserl mit dem String und schau wie das
funktioniert.
Ich berechne mir den max. Thrust für TOGA,CL,CR und MCT. Und den Wert gebe ich im Panel aus. Und jetzt möchte ich mein N1 - Setting überwachen und wenn ich jetzt den berechneten Wert überschreite, wird die Ausgabe ROT.
Ich schreibe also in die Var den Wert "GRÜN" oder "ROT". Die Ausgabe ist dann halt grün oder rot!
Statt Color="#FFFFE6" steht dann Color=(L:Farbe).
Das war meine erste Idee. Ansonst muss man das halt anders machen.

EinTeil stimmt laut SDK:
To push a string into the stack, put the string between apostrophes (for example: ‘LeftSingle’).


edi

EduHir 10.07.2005 23:23

Noch was..
Kann man Wurzelziehen??
Könntest du dir die Funktionen im SDK anschauen. Cos gibt es.

edi

harry3 10.07.2005 23:24

So, ich hab jetzt doch noch schnell was probiert:
Geht aber nicht. Aber ich kann nicht ganz glauben dass man in XML nicht mit Strings arbeiten kann. Muss ich mal bei Avsim nachfragen.

PHP-Code:

<Gauge Name="string" Version="1.0">
<
Size X="50" Y="50"/>


<
Element>
<
Select>
<
Value'hs' (&gt;L:Var,string) </Value>
</
Select>
</
Element>


<
Element>
<
Text X="50" Y="20" Bright="yes" VerticalAdjust="Center" Adjust="Center" Font="Glass Gauge" Fixed="yes" Color="red" Length="5" >
<
String>:%( (L:Var,string) )%!s!:</String>
</
Text>
</
Element>
</
Gauge

Also, so gehts nicht.


Jetzt zu der Variante wie's geht:

Schau dir in folgendem Code das Attribut Color="" genau an. Von der Variable Overspeed Warning hängt die Farbe ab. Du kannst also zwischen den 2 Werten grün und rot wechseln. Die Anweisung ? ist ähnlich einem if - else Statement.

PHP-Code:

  <Element>
<
Position X="-10" Y="-8"/>
 <
Text X="14" Y="16" Bright="YES" VerticalAdjust="Center" Adjust="LeftAdjust" Font="Quartz" Fixed="YES" Length="2" Color="%('#FF1C11' '#00FF00' (A:OVERSPEED WARNING,bool) ?">
   <
String>%((A:Airspeed indicatedknots10 int)%!2.0d!</String>
   </
Text>
   </
Element>
 </
Element

Also, viele Wege führen nach Rom...diese Variante funkioniert totsicher.
Aber trotzdem werde ich mich wegen den Strings erkundigen.



Grüße,
Harri

EduHir 10.07.2005 23:41

Danke für's erste!

Die zweite Lösungsmöglichkeit verstehe ich schon. So ähnliche habe ich schon gesehen.
Aber das da auch funktioniert:confused: So weit bin ich noch nicht. So verdreht denken kann ich noch nicht:(

Wegen die String, das wäre schon interessant!! Und könntest du auch ev. so Stringoperationen probieren wie sie im SDK beschrieben sind. Mit Substring usw.
Siehe Seite 82 oben.

Und wegen dem Wurzelziehen??

Und muss nicht heute sein...:cool:

edi

harry3 10.07.2005 23:52

Zitat:

So weit bin ich noch nicht. So verdreht denken kann ich noch nicht
Edi, denk dir blos keine Knoten ins Gehirn:D

Ich probiers dir mal zu erklären(da meine Lehrerqualitäten aber ziemlich schlecht sind weiß ich nicht obs dir danach klarer wird;))

Color="%('#FF1C11' '#00FF00' (A:OVERSPEED WARNING,bool) ?"

1.) Das Color, =, % dürfte klar sein.

2.) '#FF1C11' und '#00FF00' sind 2 benutzerdefinierte Farben. Nennen wir sie der Einfachkeit halber rot und grün.

3.) (A:OVERSPEED WARNING,bool) ist die bestimmede Variable. Sie ist entweder 0 oder 1, da vom Typ bool. Sie kann bei dir ja auch eine eigene Variable sein: (L:meineVar, bool)

4.) ? ist ein short if statment. Zitat Arne Bartels: : ”short if-statement”, if the last entry is 1, the forelast entry is used, else the fore-forelast (or the other way round. Try it, see it)
Der Aufbau sieht so aus:
Stelle1 Stelle2 entscheidende_Variable short_if_statement
Also wenn jetzt die entscheidene Variable 1 ist, so wird die Farbe an Stelle 2 übernommen. Wenn die Variable 0 ist, so wird die Farbe an Stelle 1 übernommen.


5.) Wenn 0:
rot grün 0?==>rot

6.) Wenn 1:
rot grün 1?==>grün


So, alle Unklarheiten beseitigt!?:D


Grüße,
Harri

harry3 11.07.2005 11:43

Avsim hat immer eine Lösung parat:

http://forums.avsim.net/dcboard.php?...id=23302#23310

http://forums.avsim.net/dcboard.php?...ng_type=search


Grüße,
Harri

EduHir 11.07.2005 14:20

Danke, Harri!

Ich will nur ganz einfache Stringoperationen machen:confused:

Ich baue jetzt mal deine Lösung ein.
Und dann schaue ich mir deine Links genauer an! Der 2. ist ja furchtbar:heul:

edi

EduHir 11.07.2005 16:52

Harri, deine Lösung habe ich gleich richtig implementiert:D

Und weil das so schön ist, würde ich gern von grün über gelb auf rot wechseln!
Probiert habe ich mit case. Habe ich in diversen Gau beim String gesehen. Ich bin da total überfordert.
Hättest mal Zeit? So zwischendurch?

Color="%(G:Var9)%{case}%{:0}#00FF00%{:1}#FF1C11%{: 2}#FF0C11%{end}"

Ich habe da herum probiert. Bringt nix
:heul:

Wie bestimme ich am einfachsten die HEX-Werte der Farben?

edi

harry3 11.07.2005 20:18

Zu den Farben hier ein Link:
http://www.gif-bilder.de/html-tips19.html

Wegen dem Code hab ich leider heute keine Zeit mehr.


Grüße,
Harri

EduHir 11.07.2005 23:09

Ja, danke!

Ist ja nicht sooo wichtig!

Könntest auch im andern Thread wegen dem Cos schauen???

edi

harry3 12.07.2005 15:00

Hallo!

Schau dir folgenden Cod an. Das hab ich jetzt ausprobiert und funktioniert.

PHP-Code:

<Gauge Name="string" Version="1.0">
<
Size X="50" Y="50"/>


<
Element>
<
Text X="50" Y="20" Bright="yes" VerticalAdjust="Center" Adjust="Center" Font="Glass Gauge" Fixed="yes" 
Color="%( (L:farbe, enum) 0 == if{ 'white' } (L:farbe, enum) 1 == if{ 'green' } (L:farbe, enum) 2 == if{ 'yellow' } (L:farbe, enum) 3 == if{ 'red' }   " 
Length="7" >
<
String>TEST:%((L:farbeenum))%!d!</String>
</
Text>
</
Element>




<
Mouse>
<
Click>
(
L:farbeenum== if{ (&gt;L:farbeenum) }
els{ (L:farbeenum+ (&gt;L:farbeenum) }
</
Click>
</
Mouse>


</
Gauge



Grüße,
Harri

EduHir 12.07.2005 17:34

Super, Harri!!

Einbaut und funktioniert schon!!!
Alle momentanen Probleme erledigt!!

War ein guter Tag heute :bier:

Gruß

edi

EduHir 12.07.2005 22:30

Du, Harri,
Post in AVsim habe ich gelesen.
Beruhigend, das auch Experten über die SDK jammern..

edi


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag