![]() |
Konvertierungsproblem zwischen string und integer
Hallo Leute!
ich mache da irgendwo irgendwie einen mehr als dämlichen Fehler, finde ihn aber nicht... Ich setze nach einer Combobox-Bedienung in einem anderen Edit einen Preis ein. Dies geschieht hier:
Delphi-Quellcode:
In dem Edit löse ich im OnChange-Ereignis eine Berechnung aus. Natürlich ist das doof, dass ich dafür immer alles noch von string nach integer konvertieren muss, aber ich weiss nichts besseres. Jedenfalls hier die Routine, die dann den EditInhalt und den von 10 weiteren nimmt und alles zusammenrechnen soll. Hier schmiert aber die Routine ab. Die Messagebox bekomme ich noch und dann die Meldung, dass 4,40 kein Integerwert ist.
procedure TForm1.cmb_geb_nr1Change(Sender: TObject);
begin if cmb_geb_nr1.Text='1' then ed_geb_nr1.Text:='4,40'; if cmb_geb_nr1.Text='1200' then ed_geb_nr1.Text:='3,60'; if cmb_geb_nr1.Text='1216' then ed_geb_nr1.Text:='5,55'; if cmb_geb_nr1.Text='1229' then ed_geb_nr1.Text:='11,11'; if cmb_geb_nr1.Text='Dokumentation' then ed_geb_nr1.Text:='6,15'; if cmb_geb_nr1.Text='' then ed_geb_nr1.Text:=''; //ShowMessage('nach dem zuweisen'); end;
Delphi-Quellcode:
procedure TForm1.ed_geb_nr1Change(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:integer; begin ShowMessage('vorm rechnen'); if ed_geb_nr1.text >'' then a:=StrToInt(ed_geb_nr1.text) else a:=0; if ed_geb_nr2.text >'' then b:=strtoint(ed_geb_nr2.text) else b:=0; if ed_geb_nr3.text >'' then c:=strtoint(ed_geb_nr3.text) else c:=0; if ed_geb_nr4.text >'' then d:=strtoint(ed_geb_nr4.text) else d:=0; if ed_geb_nr5.text >'' then e:=strtoint(ed_geb_nr5.text) else e:=0; if ed_geb_nr6.text >'' then f:=strtoint(ed_geb_nr6.text) else f:=0; if ed_geb_nr7.text >'' then g:=strtoint(ed_geb_nr7.text) else g:=0; if ed_geb_nr8.text >'' then h:=strtoint(ed_geb_nr8.text) else h:=0; if ed_geb_nr9.text >'' then i:=strtoint(ed_geb_nr9.text) else i:=0; if ed_geb_nr10.text >'' then j:=strtoint(ed_geb_nr10.text) else j:=0; ed_ges1.Text:=inttostr(a+b+c+d+e+f+g+h+i+j); end; Wer weiss Rat oder hat eine bessere Idee??? |
Re: Konvertierungsproblem zwischen string und integer
Hi,
wie wars mit real anstatt integer? Integer kann nur ganze Zahlen und 4,40 ist nunmal keine ganze Zahl. Du musst zum Umrechnen dann floattostr() benutzen. Ratte |
Re: Konvertierungsproblem zwischen string und integer
Hi,
4,40 ist kein Integer, sondern höchstens ein Fließkommawert ( ![]() Jedoch ist der Dezimalseperator kein Komma, sondern ein Punkt. Wenn Du einen Punkt benutzt (bzw. den Dezimalseperator änderst), kannst Du ![]() ![]() Falls Du für die Weiterverarbeitung Integers benötigst, schau dir mal ![]() ![]() Außerdem, musst Du schreiben:
Delphi-Quellcode:
Mit <> prüfst Du, ob dein Text im Edit ungleich "leer" ist.
if ed_geb_nr1.text <> ''
mfG mirage228 |
Re: Konvertierungsproblem zwischen string und integer
danke euch!!!
da kommt doch glatt wieder mein gefährliches halbwissen zum vorschein!!! |
Re: Konvertierungsproblem zwischen string und integer
ARGH! Aus! Stop! Mach Sitz! :mrgreen:
Nehmt doch bitte kein real. Real ist nur noch aus Kompatibiliätsgründen vorhanden. Nehmt besser single, double oder extended, die liegen dem Prozessor viel mehr und werden schneller verarbeitet ;-) |
Re: Konvertierungsproblem zwischen string und integer
Zitat:
Jedoch ist der Flag [oh]$REALCOMPATIBILITY[/oh], standardmäßig "off". Das heisst: Zitat:
![]() mfG mirage228 |
Re: Konvertierungsproblem zwischen string und integer
kann einer von euch die vorher gemachten aussagen nochmal für mich kurz ummüntzen???
|
Re: Konvertierungsproblem zwischen string und integer
achso und bevor ich es vergesse.
1. es läuft jetzt 2. das ergebnis benötige ich aber in dieser formtaierung 4,40 und NICHT 4,4 was muss ich tun?? |
Re: Konvertierungsproblem zwischen string und integer
Zitat:
dafür gibt es ![]()
Delphi-Quellcode:
Wichtig ist der Parameter "Precision", der die Anzahl der Nachkommastellen festlegt, sowie das Format. Hier ist es ffFixed, weil eine feste Anzahl an Nachkommastellen gebraucht wird.
var
S: String; F: Extended; begin F := 4.4; S := FloatToStrF(F, ffFixed, 15, 2); ShowMessage(S); end; Das Beispiel gibt "4,40" aus. mfG mirage228 |
Re: Konvertierungsproblem zwischen string und integer
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz