Zum Inhalt springen

kleine Hilfen benötigt


toppy

Empfohlene Beiträge

Du kannst ja mit der Felddefinition einen definierten Anfangszustand schaffen. (Die Definition schafft den Zustand). Dieser Zustand wird veraendert wenn in das Feld geschrieben wird. Du musst also pruefen ob sich das Feld im Ausgangszustand befindet.

char Feld[FELDLAENGE]={'\0'};

if(! (Feld[0])){

cout<<"Feld ist noch leer!";

}

Für Felder anderer Datentypen ergeben sich natürlich andere Notwendigkeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab's jetzt auf null gesetzt (edtLadeU == 0), jetzt fängt er zwar noch net das Ereignis ab, wenn gar nix drin steht aber das kann ich später noch machen.

Was anderes:

Ich möchte ganz gerne einen "Druck" - Button einbauen.

Daraufhin soll ein schon vordefinierter Text mit einer Tabelle ausgedruckt werden. In den Text soll'n aber Werte aus dem Programm übernommen werden.

Bsp:

Bei einer Ladespannung von jetzt eben der Wert den der Benutzer im Programm eingegeben hat (LadeU) beträgt die Spannung nach eingegebene Sekunden (Sekunden) und danach den berechneten Wert (Spannung) --> Bei einer Spannung von 220 beträgt die Spannung nach 6 Sekunden 3.49.

Link zu diesem Kommentar
Auf anderen Seiten teilen

edtLadeU ist also vom Typ TEdit, das solltest Du dazuschreiben. Denn dann ist edtLadeU == "" tatsächlich Unfug. Aber was sicherlich funktioniert ist folgendes:

if ( edtLadeU -> Text == "" )

//...

if ( edtLadeU == 0 ) ist auch keine tolle Idee (zumindestens in diesem Zusammenhang). Hier wird nur geschaut, ob edtLadeU kein Null-Zeiger ist. Davon darf man ruhig ausgehen, es sei denn, Du hast das TEdit zur Laufzeit erzeugt.

HTH

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe jetzt nicht ganz vor Augen, wie Dein Quelltext aussieht und was Du wann machen willst. Aber Du hast ein TEdit (edtLadeU) Dort sollen Zahlen eingegeben werden, die Du dann mit StrToFloat in eine Fließkommazahl umwandelst. Das schließe ich jetzt einfach mal aus Deiner Exception. Diese Exception wird, wie Du schon richtig bemerkt hast, geworfen wenn ein leerer String in float (StrToFloat gibt long double zurück) umgewandelt werden soll. Aber auch bei "abc" wird natürlich eine Exception geworfen, weil auch "abc" nicht in float umgewandelt werden kann. Wenn Du jetzt eine OnClick-Methode für einen Button hast, die mit der Zahl von edtLadeU Berechnungen durchführen soll, dann kannst Du folgendes tun:


if ( Edit1 -> Text == "" )

{

   Application -> MessageBox ( "Kein Wert in LadeU!", "Fehler", MB_OK );

   edtLadeU -> SetFocus ();

   return;

}

float LadeU = StrToFloat ( edtLadeU -> Text );

//...

Dies prüft wie gesagt nur, ob Du überhaupt etwas eingegeben hast. Oder Du arbeitest komplett mit Exceptions, was ja auch ganz schön ist:

float LadeU;

try

{

   LadeU = StrToFloat ( Edit1 -> Text );

}

catch ( EConvertError &e )

{

   Application -> MessageBox ( e.Message.c_str(), "Fehler", MB_OK );

   edtLadeU -> SetFocus ();

   return;

}

//keine Fehler... Berechnung kann durchgeführt werden...

HTH

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast Du zwei Möglichkeiten:

Als erstes kannst Du mit TMaskEdit im Bereich Zusätzliches arbeiten. Dort gibt es im Objektinspektor eine Eigenschaft EditMask. Dort kannst Du ein paar Sachen festlegen.

Zweite Möglichkeit:

LONG dwStyle = GetWindowLong ( Edit1->Handle, GWL_STYLE );

Hier sicherst Du die alten Style-angaben vom Edit-Feld (hier Edit1). Danach benutzt Du das logische oder um, den Style "nur Zahlen" (ES_NUMBER) hinzuzufügen.

SetWindowLong ( Edit1->Handle, GWL_STYLE, dwStyle | ES_NUMBER );

HTH

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich die zweite Möglichkeit versuch anzuwenden, kommt folgende Fehlermeldung:

Zeiger auf Struktur auf linker Seite von -> oder ->* erforderlich

Es hat doch vorher geklappt, wieso hat er jetzt damit Probleme ??

Nachtrag: Die Fehlermeldung erscheint bei

LadeU = StrToFloat(edtLadeU->Text);

und auch bei deinen beiden Codezeilen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von toppy

Ähm hüstel wo müssen die liegen !? :confused:

Das war jetzt zu fachmännisch für mich ausgedrückt, also bitte net böse sein, wenn ich nerv.....

Das Formular, auf dem dein Eingabefeld liegt, hat eine Funktion wie FormCreate (nennt sich auch konstruktor bzw constructor)...

da musst du das dann rein schreiben ;o)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Formular, auf dem dein Eingabefeld liegt, hat eine Funktion wie FormCreate (nennt sich auch konstruktor bzw constructor)...

Das ist leider nicht richtig! Die Funktion FormCreate wird auf das Ereignis OnCreate aufgerufen. Ein Konstruktor wird beim Erzeugen des Objekts aufgerufen. Es ist zwar egal, wo man es nun hineinschreibt, aber es ist nicht das Gleiche!

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...