AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit OnChange

Ein Thema von widowmaker2k7 · begonnen am 18. Jan 2008 · letzter Beitrag vom 18. Jan 2008
Antwort Antwort
Benutzerbild von widowmaker2k7
widowmaker2k7

Registriert seit: 18. Jan 2008
Ort: Saarbrücken
27 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit OnChange

  Alt 18. Jan 2008, 13:39
guten Tag!

finde das forum toll, nur die suchfunktion bringt mich zum verzweifeln...
hab seit 2 stunden delphi in der schule und bin noch nicht so begabt darin ^^

ich wollte ne einfache rechnung mit dem programm machen und bei einem labelededit textfeld ein onchange machen, also wenn sich die zahl im feld ändert spuckt er direkt die neue lösung raus... dürftet ihr ja kennen...

nur wenn ich die ganze zahl lösche kommt halt das problem mit
Im Projekt "blablabla" ist eine Exception der Klasse EConvertError aufgetreten. Meldung: '''ist kein gültiger Gleitkommawert'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.

ok is klar, aber wie kann ich machen dass der dann nix rechnet wenn im feld nix mehr steht?
mit "if" und son zeugs? nur habsch keine ahnung wie ich das reinbringen soll, bin doch noch ein noob

vielen dank schon mal für eure geopferte zeit

  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit OnChange

  Alt 18. Jan 2008, 13:42
genau mit if und so nem Zeug.
if labelededit1.text='' then //mache nix
else //mach etwas

oder du nimmst statt strtofloat trystrtofloat. Schau mal in der Hilfe oder hier in der Suche wie das verwendet wird.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Problem mit OnChange

  Alt 18. Jan 2008, 13:50
also per IF ließe sich dieses eine Problem schon lösen,
du brauchts nur zu prüfen ob das Property .Text deines Edits einem Leerstring entspricht und dann entsprechend reagieren...
Delphi-Quellcode:
// z.B. am Anfang der Ereignisprozedur diese wieder beenden
if LabelEdit1.Text = 'then exit;

// oder den entsprechenden Codeteil nur ausführen, wenn nich leer ist
if LabelEdit1.Text <> 'then
begin
  ...
end;
aber es gibt ja noch andere Fehler ... z.B.:
- Leerzeichen, nicht ganz leer nicht (das ließe sich mit Delphi-Referenz durchsuchenTrim umgehen)
- Buchstaben und andere Zeichen im String

Wie wandelst du denn den String (Editinhalt) in eine Zahl um?

StrToInt/StrToFloat wirf bei ungültigen Werten mit einer Exception (Fehlermeldung und Prozedurabbruch) um sich.

Delphi-Referenz durchsuchenVal, Delphi-Referenz durchsuchenTryStrToInt und Delphi-Referenz durchsuchenStrToIntDef dagegen behandeln solche Fehler oder weisen darauf hin.


ach ja: Herzlich Willkommen


[edit]
ups "ist kein gültiger Gleitkommawert" ...
Delphi-Referenz durchsuchenVal, Delphi-Referenz durchsuchenTryStrToFloat und Delphi-Referenz durchsuchenStrToFloatDef
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von widowmaker2k7
widowmaker2k7

Registriert seit: 18. Jan 2008
Ort: Saarbrücken
27 Beiträge
 
Delphi 7 Personal
 
#4

Re: Problem mit OnChange

  Alt 18. Jan 2008, 13:59
irre schnelles feedback ^^ ihr seid die besten

wie gesagt mit der suchfunktion kann ich mich nicht so anfreunden, die wirft alles mögliche wo nur das wort einmal vorkommt raus und da is meistens nicht das drin was ich brauche

hab jetzt die ganze zeit gesucht wie das mit trystrtofloat geht oder strtofloatdef und habs nit rausbekommen

da kam auch immer beim compilieren [Fehler] Unit1.pas(80): Es gibt keine überladene Version von 'TryStrToFloat', die man mit diesen Argumenten aufrufen kann

muss ich wenn ich den befehl benutze sonst noch was beachten? uses math oder sowas spezielles? soll ich vllt mal meinen code hier eintragen?

mfg

edit: zur hilfe im programm selbst----> Warum kann ich keine Hilfe von diesem Programm erhalten?

Die Hilfe für dieses Programm wurde in einem Windows-Hilfeformat erstellt, das in früheren Versionen von Windows verwendet wurde. Es wird in Windows Vista nicht unterstützt.


BLÖD ^^
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Problem mit OnChange

  Alt 18. Jan 2008, 14:06
TryStrToFloat ist in SysUtils definiert und besitzt mehrere Überladungen

Delphi-Quellcode:
function TryStrToFloat(const S: string; out Value: Extended): Boolean;

function TryStrToFloat(const S: string; out Value: Extended;const FormatSettings: TFormatSettings): Boolean;

function TryStrToFloat(const S: string; out Value: Double): Boolean;

function TryStrToFloat(const S: string; out Value: Double;
const FormatSettings: TFormatSettings): Boolean;

function TryStrToFloat(const S: string; out Value: Single): Boolean;

function TryStrToFloat(const S: string; out Value: Single;
  const FormatSettings: TFormatSettings): Boolean;

...du kannst es mit diesen Parametern benutzen, musst halt schauen, welches für dich am meisten geeignet ist.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Problem mit OnChange

  Alt 18. Jan 2008, 14:15
Zitat:
da kam auch immer beim compilieren [Fehler] Unit1.pas(80): Es gibt keine überladene Version von 'TryStrToFloat', die man mit diesen Argumenten aufrufen kann
am Besten du zeigst mal deinen Codabschnitt her
also wie du es gemacht hast, denn so könnten wir sehn was eventuell alsch ist.

Zitat von OH:
Delphi-Syntax:

function StrToFloatDef(const S: string; const Default: Extended): Extended;
function StrToFloatDef(const S: string; const Default: Extended; const FormatSettings: TFormatSettings): Extended;


function TryStrToFloat(const S: string; out Value: Extended): Boolean;
function TryStrToFloat(const S: string; out Value: Double): Boolean;
function TryStrToFloat(const S: string; out Value: Single): Boolean;
function TryStrToFloat(const S: string; out Value: Extended; const FormatSettings: TFormatSettings): Boolean;
function TryStrToFloat(const S: string; out Value: Double; const FormatSettings: TFormatSettings): Boolean;
function TryStrToFloat(const S: string; out Value: Single; const FormatSettings: TFormatSettings): Boolean;


Zitat von widowmaker2k7:
edit: zur hilfe im programm selbst----> Warum kann ich keine Hilfe von diesem Programm erhalten?
welche Delphi-Version nutzt du denn? (idealer Weise gleich im Profil angeben)

und Notfalls gesondert in der Rubrik "Die Delphi-IDE" nachfragen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von widowmaker2k7
widowmaker2k7

Registriert seit: 18. Jan 2008
Ort: Saarbrücken
27 Beiträge
 
Delphi 7 Personal
 
#7

Re: Problem mit OnChange

  Alt 18. Jan 2008, 14:21
also ich benutze delphi 7 das wir alle in der schule nutzen müssen...

mein OS is windows vista home premium 32 bit

wenn ihr mein codeabschnitt seht fallt ihr tot um, da is alles durcheinander ich bin ja nur am testen ^^

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
if labelededit1.text <> 'then
 ek := strtofloat (labelededit1.text);
 if labelededit1.Text = 'then exit;
 mwst := ek * 1.19;
 endbetrag := (ek * 1.20) * 1.19;
 labelededit2.text := floattostr (mwst);
 labelededit3.text := floattostr (endbetrag);
 proend1 := (ek * 1.10) * 1.19;
 labelededit8.text := floattostr (proend1);
 proend2 := (ek * 1.30) * 1.19;
 labelededit9.Text := floattostr (proend2);
 proend3 := (ek * 1.40) * 1.19;
 labelededit10.Text := floattostr (proend3);
end;
hab so lange rumexperimentiert wo ich eure ganzen befehle hinballern soll, dass ich manche einfach stehen gelassen hab ^^ aber es funktioniert jetzt durch das if labelededit1.text <> '' then"

boah bin ich hoffnungslos

vielen dank an euch aber über weitere tipps würd ich mich freuen, will soviel lernen wies geht

mfg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Problem mit OnChange

  Alt 18. Jan 2008, 14:26
Ungetestet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
  if TryStrToFloat(labelededit1.text,ek) then
    begin
      mwst := ek * 1.19;
      endbetrag := (ek * 1.20) * 1.19;
      labelededit2.text := floattostr (mwst);
      labelededit3.text := floattostr (endbetrag);
      proend1 := (ek * 1.10) * 1.19;
      labelededit8.text := floattostr (proend1);
      proend2 := (ek * 1.30) * 1.19;
      labelededit9.Text := floattostr (proend2);
      proend3 := (ek * 1.40) * 1.19;
      labelededit10.Text := floattostr (proend3);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Problem mit OnChange

  Alt 18. Jan 2008, 14:31
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
  if labelededit1.Text = 'then exit;
  ek := strtofloat (labelededit1.text);
  ...
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
  if labelededit1.Text <> 'then
  begin
    ek := strtofloat (labelededit1.text);
    ...
  end;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
  if labelededit1.Text <> 'then
  begin
    ek := strtofloat (labelededit1.text);
    ...
  end
  else
  begin
    //... hier eine Fehlermeldung
  end;
end;
also Möglichkeiten gibt es viele, wobei für dich wohl für den Anfang die letzen Beiden (ohne Exit) wohl besser sind.

aber da nicht nur der Leerstring eine fehlerhafte Zahl darstellen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ek, mwst, endbetrag, prozent1, prozent2, prozent3, prozent4,proend1, proend2, proend3, proend4: real;
begin
  if TryStrToFloat(labelededit1.Text, ek) then
  begin
    mwst := ek * 1.19;
    endbetrag := (ek * 1.20) * 1.19;
    proend1 := (ek * 1.10) * 1.19;
    proend2 := (ek * 1.30) * 1.19;
    proend3 := (ek * 1.40) * 1.19;

    labelededit2.text := floattostr (mwst);
    labelededit3.text := floattostr (endbetrag);
    labelededit8.text := floattostr (proend1);
    labelededit9.Text := floattostr (proend2);
    labelededit10.Text := floattostr (proend3);
  //end
  //else
  //begin
  // ... hier eine Fehlermeldung
  end;
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:13 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