Stringarrays

Stringarrays

Beitragvon Sanni » Do Feb 20, 2014 11:06 pm

Hallo Ihrs,

Um die Frequenz eines Radios anzuzeigen mache ich in Nasal folgendes:
Code: Alles auswählen
  var freqstr = sprintf( "%.2f", getprop( "instrumentation/comm/frequencies/selected-mhz" ) );
  var freqarr = split( ".", freqstr );

Da sich Nasal doch fast wie C verhält, müsste ich doch jetzt mit
Code: Alles auswählen
var f = freqarr[0][2]

die Zahl 0 in f eingestellt bekommen, wenn freqarr[0] den Inhalt '120' hat.
Leider bekomme ich aber nur die Zahl 48.
Was läuft hier falsch? Oder: Wie komme ich an die einzelnen Stellen der Double-Zahl heran?

LG, Sanni
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 399
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Stringarrays

Beitragvon geed » Fr Feb 21, 2014 7:23 pm

Oh du solltest einfach nur getprop(""); benutzen denn damit bekommst du den Wert der property direkt.

Ich kann folgendes machen, wenn in der property 120.5 eingestellt ist:

var t = getprop( "instrumentation/comm/frequencies/selected-mhz" );
vat s = t - 100.0;
print(s);

Ergebnis:
20.49999999999

In welchem Datentyp benoetigst du denn den Wert?
geed
 
Beiträge: 118
Registriert: Di Sep 24, 2013 9:09 am
Callsign: G-EED

Re: Stringarrays

Beitragvon Sanni » Fr Feb 21, 2014 10:36 pm

Eigentlich hatte ich an einen string/char-array gedacht.
Dann könnte ich mit array[x] direkt auf die benötigte Stelle zugreifen. Eben funktioniert es mit substr(), aber das könnte doch schneller . . .

Gibt es eigentlich eine einfache Möglichkeit der Konversion zwischen den Datentypen?
Also int<-->double, oder string<-->double oder string<-->int?
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 399
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Stringarrays

Beitragvon geed » Sa Feb 22, 2014 1:50 pm

Sanni,

ich habe mir mal den C-Sourcecode von Nasal angesehen und Folgendes gefunden:


Strings zu Nummernwerte:
Code: Alles auswählen
int(string);
erzeugt eine int-Variable aus einem String (z.B.: var str="100"; var i= int(str); ergibt einen int mit dem Wert 100)

Code: Alles auswählen
num(string);
erzeugt eine double Variable aus einem String, wenn der String einen Double repräsentiert (z.B. "120.5" wird zu einer Double Variable von 120.5)


Nummernwerte zu Strings:
Code: Alles auswählen

var foo = 100.33 ~ "foo" ~ 20;

// oder

var p = 100.33;
var e = "foo";
var t = 20;

var foo = p ~ e ~ t;


Der CAT-Operator "~" verbindet alle angegebenen Argumente, hier 100.33, "foo" und 20 als Strings miteinander. Somit erhalten wir hier den String "100.33foo20".
Den kannst Du dann wieder mittels substr() usw weiter bearbeiten.
Du musst hier ueberigens nicht zngend einen String als Argument zwischen oder vorschalten. Das geht auch, wenn du nur Zahlen angibst oder Variablen, die Zahlen enthalten.


Beste Gruesse,
geed
geed
 
Beiträge: 118
Registriert: Di Sep 24, 2013 9:09 am
Callsign: G-EED

Re: Stringarrays

Beitragvon Sanni » Sa Feb 22, 2014 7:52 pm

Prima, vielen Dank. :)
Die Nasal-Doku ist in Sachen Operatoren und Datentypen leider nicht so ausführlich.....
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 399
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni


Zurück zu Sonstiges

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast