AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Konvertierungsproblem zwischen string und integer
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierungsproblem zwischen string und integer

Ein Thema von torud · begonnen am 10. Okt 2004 · letzter Beitrag vom 11. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:10
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:
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='1200then ed_geb_nr1.Text:='3,60';
    if cmb_geb_nr1.Text='1216then ed_geb_nr1.Text:='5,55';
    if cmb_geb_nr1.Text='1229then ed_geb_nr1.Text:='11,11';
    if cmb_geb_nr1.Text='Dokumentationthen ed_geb_nr1.Text:='6,15';
    if cmb_geb_nr1.Text=''     then ed_geb_nr1.Text:='';
    //ShowMessage('nach dem zuweisen');
end;
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.

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???
Danke
Tom
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:14
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
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:14
Hi,

4,40 ist kein Integer, sondern höchstens ein Fließkommawert (Delphi-Referenz durchsuchenExtended).
Jedoch ist der Dezimalseperator kein Komma, sondern ein Punkt. Wenn Du einen Punkt benutzt (bzw. den Dezimalseperator änderst), kannst Du Delphi-Referenz durchsuchenFloatToStr und Delphi-Referenz durchsuchenStrToFloat benutzen.
Falls Du für die Weiterverarbeitung Integers benötigst, schau dir mal Delphi-Referenz durchsuchenRound und Delphi-Referenz durchsuchenStrToIntDef (ab Delphi 7) an.

Außerdem, musst Du schreiben:
if ed_geb_nr1.text <> '' Mit <> prüfst Du, ob dein Text im Edit ungleich "leer" ist.


mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:15
danke euch!!!
da kommt doch glatt wieder mein gefährliches halbwissen zum vorschein!!!
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:16
ARGH! Aus! Stop! Mach Sitz!

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
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:19
Zitat von Ultimator:
ARGH! Aus! Stop! Mach Sitz!

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
Ja, da hast Du im Prinzip recht.

Jedoch ist der Flag [oh]$REALCOMPATIBILITY[/oh], standardmäßig "off".

Das heisst:
Zitat von OH:
Mit der Standardeinstellung {$REALCOMPATIBILITY OFF} entspricht der generische Typ Real dem Typ Double.
Deine Aussagen treffen jedoch auf Delphi-Referenz durchsuchenReal48 zu.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:26
kann einer von euch die vorher gemachten aussagen nochmal für mich kurz ummüntzen???
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:29
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??
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:36
Zitat von torud:
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??
Hi,

dafür gibt es Delphi-Referenz durchsuchenFloatToStrF

Delphi-Quellcode:
var
  S: String;
  F: Extended;
begin
  F := 4.4;
  S := FloatToStrF(F, ffFixed, 15, 2);
  ShowMessage(S);
end;
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.
Das Beispiel gibt "4,40" aus.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#10

Re: Konvertierungsproblem zwischen string und integer

  Alt 10. Okt 2004, 18:36
Zitat von torud:
2. das ergebnis benötige ich aber in dieser formtaierung
4,40
und NICHT
4,4

was muss ich tun??
Dir mal die Funktion Delphi-Referenz durchsuchenFormat anschauen!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz