Ein Phänomen mit Combotext und StrToIntDef
-
Hallo,
ich stehe vor einem absoluten Rätsel.
Eine Combobox befülle ich mit den Werten 9,10,11,20,21,100,250,500Diese heisst frm1_cb2_Faktor und über einen Button frm1_btn2_Faktor
lese ich nach einer Auswahl in der Combobox diese mit der Funktion aus:void __fastcall TForm1::frm1_btn2_FaktorClick(TObject *Sender) {Integer i2; AnsiString z1; // Vars definieren z1=frm1_cb2_Faktor->Text; // aktueller Faktor? ShowMessage("Faktor z1: "+z1); i2=StrToIntDef(z1,100); // umwandeln in int, falls User falsche Werte eingegeben hat ShowMessage("Faktor i2: "+IntToStr(i2)); Grafiken(0,i2,0,0,"",frm1_img2_Plan,1); // und Grafik neu skalieren }Der aktuelle gewählte Wert der Combo wird ausgelesen (z1), dieser dann
in i2 (Integer) umgewandelt.
Mit Grafiken() bearbeite ich eine Grafik (Imagecontrol) neu (Funktion Grafiken).Dies funktioniert mit allen Werten hervorragend; nur mit der 10 NICHT!
Dort wird i2 immer 100, egal was ich mache. Die beiden ShowMessage zeigen
es dabei eindeutig: Alle Werte ausser 10 werden korrekt umgewandelt; nur
die 10 nicht. Also entweder liegt es an meinem Glühwein oder ich verstehe
die Welt nicht mehr..Für jeden Tipp dankbar; bin total ratlos...
Grüsse, Stefan

-
Kannst du die Implementierung von Grafiken() mal zeigen?
PS:
Oder kommentier den Aufruf von Grafiken mal aus und teste die 10 dann.
Im BCB6 hier und ohne Grafiken() kann ich das Problem jedenfalls nicht nachvollziehen, beide ShowMessages zeigen 10.
-
Hallo, Jansen
meinst Du so?
Header von Funktionen.hpp
Boolean Grafiken(int p1, int p2, int b, int h, AnsiString pt1,TObject *Sender,int pForm); // Funktion definierenDie beiden ShowMessage() zeigen mir die Verfälschung aber schon vor
dem Aufruf der Funktion Grafiken() an.Gruss, Stefan
-
Das ist die Deklaration, die Implementierung ist der eigentliche Code.
Aber probier erstmal das auskommentieren, siehe den Edit in meinem obigen Beitrag.
-
Hei, Jansen
also so
void __fastcall TForm1::frm1_btn2_FaktorClick(TObject *Sender) {Integer i2; AnsiString z1; // Vars definieren z1=frm1_cb2_Faktor->Text; // aktueller Faktor? ShowMessage("Faktor z1: "+z1); i2=StrToIntDef(z1,100); // unverändert lassen ShowMessage("Faktor i2: "+IntToStr(i2)); //Grafiken(0,i2,0,0,"",frm1_img2_Plan,1); // und Grafik neu skalieren }geht es auch nicht. Wenn das kein echtes Phänomen ist...
Habe übrigens den BCB6 PersonalGrüsse, Stefan
-
Bist du sicher, dass hinter der 10 in der ComboBox nicht noch ein oder mehrere Leerzeichen stehen, oder irgendwas anderes, das eine saubere Umwandlung verhindert?
-
...wieder Glühwein beim Programmieren; ich schwör's

Hallo, Jansen
ein Leerzeichen dahinter ist die Lösung *grmpf*Danke für den Tip! Manchmal ist man echt doooooof.
Gruss Stefan :xmas1: