Übergabe Variable an Anzeige
-
Hallo,
ich habe es jetzt zwischen 2 Funktionen gesetzt und die Deklaration weggelassen.
Die vorherige Meldung ist verschwunden, dafür kommt jetzt:
"Fehler in der Deklarationssystax"

Uwe
-
Ich habe jetzt mal ein minimal Beispiel:
Du brauchst:
1 TEdit
1 TLabel
2 TButton
und 1 TVrAngularMeter
alles auf die Form ziehen.
Den beiden Buttons weist du folgende OnClick Events zu :void __fastcall TForm1::Button1Click(TObject *Sender) { VrAngularMeter1->Position = StrToIntDef(Edit1->Text,0); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Label1->Caption = IntToStr(VrAngularMeter1->Position); }Beim Klick auf Button1 kommt dann der Wert der Eingabe in das VrAngularMeter und beim Klick auf Button2 kommt der Wert von VrAngularMeter in das Label.
Normalerweise verwendet man aber so eine Anzeige auch nur dazu wofür sie eigentlich gedacht ist: Zur Anzeige.
Die Werte speicherst du dir z.B. in deiner Klasse mit der du z.B. auf deinen RS232 zugreifst.
-
Ach sehe gerade TVrAngularMeter Position erwartet einen double.
Also StrToFloatDef() und FloatToStr().
-
Hallo Pfadfinder,
Danke für deine unendliche Geduld

Dieses Beispiel hat fast funktioniert

Es gab noch Stress mit StrToFloatDef(). Das hat bei mir nicht hin gehauen.Folgender Code tut seinen Dienst:
void __fastcall TForm1::Button1Click(TObject *Sender) { VrAngularMeter1->Position = StrToIntDef(Edit1->Text,0); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Label1->Caption = FloatToStr(VrAngularMeter1->Position); }Wenn ich das jetzt richtig verstehe:
- Der Anzeige muss "Position" übergeben werden
- Der String aus dem Edit1 wird in eine INT gewandelt (Was bedeutet die 0 in der KKlammer??)
- Dem Label wird die Position übergeben, vorher aber wieder in einen String gewandelt.Korrekt verstanden?
Warum meckert der Compiler rum, wenn ich StrToFloat und FloatToStr verwende?
Gruß
Uwe
-
Hallo,
die ,0 ist der default-Wert ->deswegen StrToIntDef, dieser Wert wird übergeben wenn sich der eigentliche Wert nicht in einen Integer konvertieren läßt.
Mit StrToInt hast Du halt nur Ganzzahlen zur Verfügung, ich weiß ja nicht ob das reicht oder Du genauere Werte anzeigen willst.
Was heißt Compiler meckert, nach Ziege wird er nicht klingen :-), poste doch mal sein Gemecker als Text.Gruß myerscola
-

Nix Ziege, nur "plong".
Meldung:
"Aufruf einer undefinierten Funktion StrToFloatDef"Das mit der 0 ist mir jetzt klar. Danke.
Gruß
Uwe
-
Hallo
StrToFloatDef gibt es im Gegensatz zu StrToFloat erst ab BCB6.
bis bald
akari
-
akari schrieb:
Hallo
StrToFloatDef gibt es im Gegensatz zu StrToFloat erst ab BCB6.
bis bald
akariDann macht das "Gemeckere ja auch Sinn

Ich habe da noch was anderes gefunden, um Text in Zahlen umzuwandeln.
Wert = Edit1 -> Text->ToInt();Scheint genau so zu funktionieren und ist für mich in der Syntax besser zu begreifen
Gibt es da wichtige Unterschiede? Erklärungen habe ich keine gefunden.
Gruß
Uwe
-
Hallo
Dann lies doch mal in der BCB-Hilfe nach was die Namensteile Float und Int der jeweiligen Funktionen bedeuten. Dann weist du was der Unterschied ist.
bis bald
akari
-
akari schrieb:
Hallo
Dann lies doch mal in der BCB-Hilfe nach was die Namensteile Float und Int der jeweiligen Funktionen bedeuten. Dann weist du was der Unterschied ist.
bis bald
akariWenn man blöd fragt, kriegt man auch eine blöde Antwort. Sorry, hatte mich wohl falsch ausgedrückt. DER Unterschied ist mir schon klar

Meine Frage zielte in folgende Richtung:
Was ist der Unterschied zwischenWert = Edit1 -> Text.ToInt();und
Wert = StrToInt (Edit1->Text);Ersteres scheint mir als Anfänger logischer......
Nachdem ich heute wieder einiges gelernt habe, wollte ich wieder ein paar der runtergeladenen Komponenten testen. Dies ist mir leider wieder nur zum Teil gelungen. Wie kriege ich raus, wie Werte übergeben werden und wie die Variable heißt?
Ich habe da z.B. eine Ampel-Anzeige, Rot, Gelb Grün. Diese möchte ich ansteuern, sagen wir mal mit 3 Buttons.
Im Headerfile finde ich "IsRed", "IsYellow", "IsGreen". Diese Namen fine ich auch im Objektinspektor, wenn ich die Ampel auf der Form platziere. "IsRed" z.B. kann ich über den Inspektor durch Setzen auf TRUE einschalten und die Lampe ist an.
Wie mache ich das dann im Programm? Wie kriege ich raus,
a) welche Variablen notwendig sind
b) wie die entsprechende Sysntax aussieht?Gruß
Uwe
-
Hallo,
nun müsst ihr mir aber wirklich noch mal helfen.
Mittlerweile habe ich so einige Sachen herausgefunden, z.B. das nach der Eingabe des Komponentenname und nachfolgenden -> meistens ein Popup aufgeht, wo die möglichen Befehle drinstehen.
So weit so gut.
Mein Problem besteht jetzt darin, z.B. eine Komponente aus 3 LEDs anzusteuern. Da ist nix mit Position oder Value.
Die Komponente heißt VrLights1 auf meinem Formular. Im Inspektor kann ich über LEDState per BOOL IsRed, IsGreen und IsYelloy setzen oder löschen.
Wenn ich also eingebeVrLights1->dann kommt die Auswahl, z.B.
LedState: TVrLightStates
mit Spacetaste wird LedState übernommen. Wieder -> getippt, kommt nix.
Tippe ich einen . kommt neues Fenster, zum Beispieloperator = TVrLightStates &(constTVrLightStates)Wie habe ich das zu deuten?
Gruß
Uwe
-
Hallo
Das beste ist du schaust in die Dokumentation oder den Quellcode der externen Komponente. Wir können dich nicht alle existierenden Fremdkomponenten kennen...
Ich vermute das der Datentyp TVrLightStates ein Set ist, da lohnt sich ein Blick in der FAQ hier im Forum, in den Thread "Umgang mit Set"
bis bald
akari
-
Hallo akari,
vielen Dank.
Das war genau der Tipp, den ich brauchte
Es funktioniert

War zwar noch viel Probiererei, aber ich habe es hinbekommen. Hatte was mit Set zu tun.
In der Headerdatei steht
void__fastcall SetLedState(TVrLightsStates Value);Mein Code im Builder:
VrLights1->LedState = TVrLightsStates () << lsRed;Nun sollte ich ähnliche Sachen auch hinbekommen da ich jetzt weiß, wonach ich suchen muss.
Nochmals Tausend Dank an euch alle.Ich werde euch bei Gelegenheit noch mal wieder quälen, versprochen

Gruß
Uwe