AGB  ·  Datenschutz  ·  Impressum  







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

Funktion für kommastelle

Ein Thema von ruffy407 · begonnen am 17. Dez 2006 · letzter Beitrag vom 19. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
ruffy407

Registriert seit: 17. Dez 2006
9 Beiträge
 
#1

Funktion für kommastelle

  Alt 17. Dez 2006, 23:26
Hey also ich hab gerade erst angefangen delphi zu lernen und muss eine große hausarbeit bald abgeben... ich bin aber echt am verzweifeln da ich mir das alles selber beibringen muss... hoffe ihr könnt mir helfen.
Also ich habe ein paar editfelder und möchte die eingegebenen daten in einer listbox widergeben.
das funktioniert auch soweit mittels der doppeltverketteten liste. Doch jetz habe ich das problem, dass ein editfeld körpergröße bestimmen soll (z.B. 1,70 m).
ich möchte dass wenn der benutzer eine ganzzahlige eingabe (z.b. 170) macht, ein warn fenster kommt mit der aufforderung es mit einem komma einzugeben.

ich habe mir gedacht ich könnte dies mit einer funktion lösen die sagt "wenn ein komma in der eingabe enthalten ist, gebe diese nachricht aus".
Es funktioniert aber noch gar nich.. vieleicht habei hc das ganze prinzip von funktionen noch nich verstanden. Naja hier der Quellcode Ausschnitt:



Delphi-Quellcode:
function kommawert(eingabe : string) : boolean;
var
i : integer;
begin
  for i:=1 to length(eingabe) do begin
    if eingabe[i]=',then begin
      result := eingabe[i]=',';
    end
    else
      result := eingabe[i]<>',';
  end;
end;

procedure TMyFriend.EintragenClick(Sender: TObject);
var
komma : string;
Neu : Tknoten;
begin
  komma:= editgroesse.Text;
  if (editname.Text <>(''))
  and (editvorname.Text <>(''))
  and (editalter.Text <>(''))
  and (editgroesse.Text <>('')) then begin
      if (kommawert(komma)) then begin
      Neu := TKnoten.Init;
      neu.name := editname.Text;
      neu.vorname := editvorname.Text;
      try
        neu.alter := (strtoint(editalter.Text));
      except
        showmessage('"Alter" muss eine Zahl sein!') ;
        editalter.Clear;
        activecontrol := editalter;
        exit;
      end;

      try
        neu.groesse := (strtofloat(editgroesse.Text));
      except
        showmessage('"Größe" muss eine Zahl sein!');
        editgroesse.Clear;
        activecontrol := editgroesse;
        exit;
      end;

      Neu.Nach := Anfang.Nach;
      Neu.Nach.Vor := Neu;
      Anfang.nach := Neu;
      Neu.Vor := Anfang;

      editname.clear;
      editvorname.Clear;
      editalter.Clear;
      editgroesse.Clear;

      activecontrol := editname;
      anzeige;
      end
      else
      showmessage('Bitte eine Zahl mit kommestelle eingeben!');

    end
  else begin
    showmessage('Felder dürfen nicht leer sein!');
  end;
end;
Ich drehe mich hier echt im kreis und komme nicht weiter... ich bin so ideenlos als anfänger.

Kann mir bitte jemand sagen was ich an diesem quellcode alles anders machen muss ?
Danke euch!

[edit=r_kerber]code- durch delphi-Tags ersetzt Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Hilfe ich komm mit der Funktion nicht weiter!!

  Alt 17. Dez 2006, 23:32
benutz true oder false als rückgabewerte wäre das nicht einfacher ? achso und deine funktion überprüft nur den letzten buchstaben

Delphi-Quellcode:
function kommawert(eingabe : string) : boolean;
var
i : integer;
begin
  result := false; //Auf false setzen kein komma vorhanden
  for i:=1 to length(eingabe) do begin
    if eingabe[i]=',then result := true; //true wenn eins kommt
  end;
end;
da bei dir der then und else teil vorhanden ist wird praktisch das ergebniss des letzten buchstabens übergeben.

mfg
Christian



[Edit]funktion hinzugefügt[/Edit]
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
ruffy407

Registriert seit: 17. Dez 2006
9 Beiträge
 
#3

Re: Hilfe ich komm mit der Funktion nicht weiter!!

  Alt 18. Dez 2006, 01:38
danke das funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#4

Re: Hilfe ich komm mit der Funktion nicht weiter!!

  Alt 18. Dez 2006, 07:17
Es wäre dennoch zuckersüß von Dir, wenn Du Deinem Beitrag auch jetzt noch einen Aussagekräftigen Titel verleihen könntest, damit auch andere ggf. bei der Suche nach dem gleichen Problem diese Lösung finden könnten.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#5

Re: Hilfe ich komm mit der Funktion nicht weiter!!

  Alt 18. Dez 2006, 08:55
Zitat von ruffy407:
danke das funktioniert
Wie schön für dich dann sei aber auch so lieb und sage es auch hier
  Mit Zitat antworten Zitat
ruffy407

Registriert seit: 17. Dez 2006
9 Beiträge
 
#6

Re: Hilfe ich komm mit der Funktion nicht weiter!!

  Alt 18. Dez 2006, 14:51
Danke für den hinweis raiguen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Funktion für kommastelle

  Alt 18. Dez 2006, 17:43
Moin ruffy,

zwei Fälle deckt diese Prüfung allerdings noch nicht ab:
Das Komma steht am Anfang.
Das Komma steht am Ende.

Die Prüfung, ob ein Komma enthalten ist, kannst Du übrigens auch mit pos erledigen, und musst nicht jedes Zeichen in eine Schleife durchgehen.

Besonders "elegant" könntest Du das Problem lösen, indem Du erst einmal Werte ohne Komma zulässt, und dann anhand eines Wertebereiches prüfst, ob der Wert evtl. noch durch 100 geteilt werden muss, wenn er in cm angegeben wurde.

Die Angabe von 2 wäre ja beispielsweise ohne Komma, aber wohl nicht verkehrt (Du würdest dann 2,00 oder 2,0 erwarten).

Um das mit dem Teilen noch einmal zu verdeutlichen:
Der gültige Wertebereich wäre, z.b, 0,30m bis 2,80m.
Jetzt wandelst Du die Eingabe in einen numerischen Wert und stellst fest, dass er > 2,80m ist, beispielsweise 170.
Dann muss der Wert noch durch 100 geteilt werden => 1,70 => liegt im Wertebereich.
Das könntest Du dann, korrigiert, im Eingabefeld wieder ausgeben.

Eine Prüfung des Wertebereiches solltest Du eh machen, denn wenn jemand 170,0 eingibt, wäre das ja auch nicht richtig.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
ruffy407

Registriert seit: 17. Dez 2006
9 Beiträge
 
#8

Re: Funktion für kommastelle

  Alt 18. Dez 2006, 21:11
Hi christian!
An diese fälle hab ich natürliich nicht gedacht .. aber wie gesagt ich habe gerade erst angefangen delphi zu lernen und mein lehrer stetzt das alles voraus, dh. ich muss mir das selber beibringen. Ich weiß nicht wie man deinen Vorschlag mit einem wertebereich umsetzen könnte. Wäre sehr nett von die wenn du mir das sagen könntest
Oder was auch sehr hilfreich wäre ist eine Methode dass ich mir selbst in solchen fällen helfen soll, denn ich weiß nicht wo ich nachgucken soll wenn cih den namen eines befehls z.B. nicht weiß. mit der Hilfedatei von delphi komm cih da fast nie weiter...
Danke!
  Mit Zitat antworten Zitat
radekj

Registriert seit: 17. Dez 2006
22 Beiträge
 
#9

Re: Funktion für kommastelle

  Alt 18. Dez 2006, 21:35
Benutze einfach TMaskEdit

ciao
radekj
  Mit Zitat antworten Zitat
ruffy407

Registriert seit: 17. Dez 2006
9 Beiträge
 
#10

Re: Funktion für kommastelle

  Alt 18. Dez 2006, 21:53
und dann?

Sry mein grundwissen über die verschiedenen (nicht-standart-) komponenten und vor allem über die befehle im quellcode sind unglabulich beschränkt
mir muss man das haar klein erleutern
  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 08:58 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