Entwickler-Ecke

Sonstiges (Delphi) - Probleme beim beschreiben des Labels einer anderen Unit


mhxcm - Mi 06.02.08 09:40
Titel: Probleme beim beschreiben des Labels einer anderen Unit
Moin mal wieder...

In meinem Mathe-Lern-Programm wird mir nach der Berechnung der Aufgaben innerhalb von zwei Labels angezeigt, wieviele richtig und wieviele falsch gelöst wurden. Jetzt möchte ich zu Statistik - Zwecken die Anzahl der insgesamt richtig und falsch gelösten Aufgaben in meinem Hauptmenü anzeigen lassen. Hier der kleine Quellcode wo dies an die Unit Hauptmenue übergeben werden soll:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
              edtergebnis.enabled:=false;
              btnnaechsteaufgabe.Enabled := false;
              lblrichtig.caption := 'Richtig gelöst: '+inttostr(richtig); //Anzeige der Anzahl der richtigen Aufgaben
              lblfalsch.caption := 'Falsch gelöst: '+inttostr(falsch);    // Anzeige der Anzahl der falschen Aufgaben
              //Hauptmenue.lblstatrichtig.caption:= 'Richtig gelöst: ' + inttostr((strtoint(Hauptmenue.lblstatrichtig.caption)) + richtig); //<-- mein Problem
              lblrichtig.visible := true;
              lblfalsch.visible := true;
         end;


Laufe leider dann in dem Bereich den ich einfach mal als "Comment" rausgenommen hab auf einen Fehler, wenn ich ihn halt im Prog laufen lasse. Das Programm läuft bis zu dem Zeitpunkt wo diese Werte übergeben werden sollen. Nehme ich den "Ausgegrenzten" Teil raus läuft es ohne Probleme.

Kann mir jemand helfen?

mfg Markus


Keldorn - Mi 06.02.08 09:45

Hallo

Du willst uns den genauen Fehler nicht zufälligerweise auch verraten :-)?

Gruß Frank


mhxcm - Mi 06.02.08 09:49

Na klar doch^^ voll verpeilt....


Also nach dem Aufgabenblock, wo das was im obigen Quellcode druchgeführt werden soll, bekommme ich folgende Meldung:

"Im Projekt.... ist eine Exception der Klasse EConvertError aufgetreten. Meldung: "" ist kein gültiger Integerwert.

Weiß nicht warum... dachte hätte alles richtig konvertiert....??? :?


Miri - Mi 06.02.08 09:49


Delphi-Quelltext
1:
2:
Hauptmenue.lblstatrichtig.caption:= 'Richtig gelöst: ' + 
inttostr((strtoint(Hauptmenue.lblstatrichtig.caption)) + richtig);

Die eine Klammer könnte zu viel sein...
Sonst wäre halt echt der Fehler mal interessant...

Edit:
Sorry, stimmt nicht, hast ja vorne zwei... das hatte ich übersehen...


mhxcm - Mi 06.02.08 09:52

user profile iconMiri hat folgendes geschrieben:


Die eine Klammer könnte zu viel sein...


Moin, wenn ich die Klammer entferne meckert Delphi direkt beim Compiler das ne Klammer fehlen würde :" ( erwartet aber ; gefunden"


Miri - Mi 06.02.08 09:53

user profile iconmhxcm hat folgendes geschrieben:

"Im Projekt.... ist eine Exception der Klasse EConvertError aufgetreten. Meldung: "" ist kein gültiger Integerwert.


Dann steht zu der Zeit in der Caption nichts drin... und "", also nix, ist halt auch nix, was man in Integer konvertieren könnte...
Versuch's mit TryStrToInt oder StrToIntDef...


Christian S. - Mi 06.02.08 09:54

Dann wird wohl in Hauptmenue.lblstatrichtig.caption einfach kein gültiger Integer-Wert, sondern "" drin stehen :nixweiss:


FSS - Mi 06.02.08 09:54

Kann es sein, dass in dem Label schon etwas steht wie "Richtig gelöst: 25"?

Wenn du dann versuchst das mit StrToInt() umzuwandeln geht das nicht, da der Teil "Rictig gelöst: " kein gültiger Integerwert ist.


Keldorn - Mi 06.02.08 09:55

kann ja auch nicht gehen:

Delphi-Quelltext
1:
Hauptmenue.lblstatrichtig.caption := 'richtig' + Zahl;                    

Das ist nunmal durhc den String am Anfang keine zahl, die du mit strtoint wandeln kannst.

Leg dir eine public-Var an, die nur deine Gesamtanzhal der richtigen Elemente enthält, mit der kannst du dann problemlos rechnen und zusammen mit einem Text in ein Label schreiben.


mhxcm - Mi 06.02.08 09:59

@FSS: Ja steht es wenn ich den zweiten Block löse.... bin ja auch doof^^
@Keldorn: das werde ich dann jetzt mal versuchen.... was man alles so übersehen kann....


mhxcm - Mi 06.02.08 10:13

Danke für eure Antworten, da war der nötige Denkanstoß dabei ^^

habs jetzt so gelöst.... in meiner unit wo die berechnungen stattfinden hab ich eine variable "statrichtig" und eine "statfalsch":


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 begin
              edtergebnis.enabled:=false;
              btnnaechsteaufgabe.Enabled := false;
              lblrichtig.caption := 'Richtig gelöst: '+inttostr(richtig);
              lblfalsch.caption := 'Falsch gelöst: '+inttostr(falsch);
             [b] statrichtig:= statrichtig + richtig;
              statfalsch:= statfalsch + falsch;[/b]


dort gebe ich dann die werte rein.... also anzahl richtig anzahl falsch und im Hauptmenü dann wieder aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure THauptmenue.btnstatClick(Sender: TObject);
begin
     [b]lblstatrichtig.Caption := '0';  //zuerst nochmal löschen dann neu schreiben
     lblstatrichtig.caption := 'Richtig gelöst: ' + inttostr(statrichtig);[/b]
     lblstatrichtig.visible := true;
     lblstatfalsch.visible :=true;
end;



weiß zwar nicht ob das eine Elegante lösung ist, aber mit TryStrToInt oder StrToIntDef kann ich leider nichts anfangen....

mfg


Miri - Mi 06.02.08 10:42

user profile iconmhxcm hat folgendes geschrieben:

weiß zwar nicht ob das eine Elegante lösung ist, aber mit TryStrToInt oder StrToIntDef kann ich leider nichts anfangen....


Na, jetzt hast du ja eine Lösung... aber als Hinweis für die Zukunft: Befehle eintippen und F1 drücken... alternativ hier im Forum suchen, die Begriffe tauchen ständig auf ;-)


mhxcm - Mi 06.02.08 10:54

ok, ich werde es mir merken.... die F1 Taste steht ja schließlich nicht unter "vom aussterben bedrohte Tasten" oder wie war das noch?^^