Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > Sonstige Programmiersprachen

Sonstige Programmiersprachen Das Sammel-Forum für alle weiteren Programmiersprachen wie z.B. Assembler, Delphi, Pascal, C# (C-Sharp), Java usw.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26903, Antworten: 4218
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3325, Antworten: 122
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 309, Antworten: 19
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7641, Antworten: 185
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 19, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 21, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 56, Antworten: 6
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 145, Antworten: 9
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 70, Antworten: 4
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50942, Antworten: 1395
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10.06.2009, 08:21   #1 (Direktlink)
Frau Holle
Gast
 
Beiträge: n/a
Standard Delphi - Komma in SpinEdit umwandeln

Hallo,

ich versuche mich gerade etwas mit Delphi und komme auch gut voran.

Nun habe ich jedoch ein Problem mit dem SpinEdit: Dort kann der User eine Zahl eingeben. Ziel ist es, einen Körper um die eingegebene Zahl (also Winkel) zu drehen. Funktioniert auch wunderbar, jedoch muss ich einen Fehler abfangen:

Man kann im SpinEdit neben Ziffern auch das Komma eingeben. Behandeln kann Delphi aber leider nur den Punkt, somit wird ein Fehler angezeigt, wenn ich ein Komma eingebe.

Nun würde ich gern eine der beiden Möglichkeiten versuchen:
1. Das Komma wird in einen Punkt umgewandelt, um dann mit der eingegebenen Zahl rechnen zu können.
2. Es ist gar kein Komma erlaubt, sondern nur Ziffern.

Kann mir jemand bei diesem Problem behilflich sein? Irgendwie habe ich mich hier fest gefahren und weiß nicht weiter

Danke euch schon vielmals im Voraus!! Bis dann und viele Grüße,
Frau Holle
  Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 10.06.2009, 16:10   #2 (Direktlink)
Ist öfter hier
 
Benutzerbild von Grandhanate
 
Registriert seit: 10.11.2007
Beiträge: 94
Standard

Hallo,

so spontan würden mir drei Lösungen einfallen:

1. Du nimmst einfach zwei SpinEdits, setzt sie als String zusammen und wandelst sie in eine Real Zahl um (nicht vergessen, dass du die Dezimale auf 99 begrenzen musst, sonst erhältst du ab 100 drei Nachkommastellen).

Bsp.:

procedure TForm1.Button1Click(Sender: TObject);
var

gesamtText: String;
gesamtZahl: Real;
ergebnis: Real;

begin

gesamtText := ((SpinEdit1.Text) + ',' + (SpinEdit2.Text));
gesamtZahl := StrToFloat(gesamtText);

ergebnis := gesamtZahl * 5;
Label1.Caption := FloatToStr(ergebnis);

end;


2. Du nimmst einfach ein normales Edit Feld und einen SpinButton; dazu noch das Edit einlesen, in Real umwandeln und mit jedem Klick auf den SpinButton um 0,01 erhöhen und im Edit den neuen String ausgeben.

3. Die "billigste" Lösung ^^ - nimm einfach ein normales EditFeld und lies es ein. Bis man mit den SpinEdits den gewünschten Wert eingestellt hat, bist du per manueller Eingabe unter Umständen je nach Zahl wesentlich schneller.

Über das SpinEdit selbst kannst du meines Wissens nach nur natürliche Zahlen erstellen (?), wodurch du auch nicht am Fehler vorbeikommen wirst.

Gruß Grandhanate
Grandhanate ist offline   Mit Zitat antworten
Alt 10.06.2009, 17:03   #3 (Direktlink)
Frau Holle
Gast
 
Beiträge: n/a
Standard

Hallo Grandhanate,

besten Dank für deine Anregungen und Tipps. Gute Vorschläge, muss ich zugeben

Grad die Idee mit dem Edit- Feld und dem Spin, worüber man "seperat" den Wert im Edit erhöhen kann gefällt mir. Aber dann habe ich wieder das Problem, dass man im Edit jeden Wert eingeben kann - also Buchstaben, Ziffern, Sonderzeichen und eben auch Komma und Punkt.

Hab mir das nun einmal durch den Kopf gehen lassen, sicher könnte man das irgendwie abfangen und sagen, dass dort nur Ziffern und ein Punkt eingegeben werden darf?!

Aber wäre es dann nicht sinnvoller, der "Wert" im SpinEdit auszulesen und irgendwas zu bauen, dass WENN ein Komma eingegeben WURDE, man dieses in einen Punkt umwandelt?

Nehmen wir eine Variable s (für spin). Nun sage ich "s:=spinedit1.value;" und übergebe somit den Wert an die Variable.

Nun muss man halt eine if- Abfrage bauen, in welcher ausgelesen wird, ob ein Komma mit eingegeben wurde oder NUR Ziffern. WENN ein Komma eingegeben wurde, dieses in einen Punkt umwandeln und den "neuen" Wert zurück an die Variable geben (hier muss ich dann sicher eine zusätzliche Variable zum Auslagern nehmen, das sollte machbar sein).

Und genau da hänge ich. Ich weiß nicht, wie ich abfragen kann, OB ein Komma eingegeben wurde und wie ich dieses dann in einen Punkt umwandeln kann

Schon komisch, dass man beim SpinEdit nur Ziffern und Komma eingeben kann, (alles andere geht da von Hause aus gar nicht), obwohl mit dem Komma gar nicht gerechnet werden kann -.-

Danke auf jeden Fall für die Hilfe, ich bin für jeden Tipp dankbar
  Mit Zitat antworten
Alt 10.06.2009, 21:06   #4 (Direktlink)
Ist öfter hier
 
Benutzerbild von Grandhanate
 
Registriert seit: 10.11.2007
Beiträge: 94
Standard

Hab jetzt leider nicht so viel Zeit, aber hier mal noch ein paar Stichworte für dich:

Wenn du überprüfen willst, ob bestimmte Zeichen in einem String sind, musst du ihn von vorne nach hinten durchgehen - wichtige Begriffe sind dabei "Copy", "Pos" und "PosEx" (einfach mal danach guckeln oder Delphi Hilfe benutzen).
Um jetzt zwischen Punkt, Komma, Zahlen und Buchstaben zu unterscheiden greifs du am besten auf den ASCII Code zurück (die Zahlen 0 - 9 entsprechen meines Wissens nach dem ASCII Code 30 - 39 (oder so ähnlich ^^), das große A wäre z.b. die 65. Wichtiger Begriff ist dabei wohl der Variablentyp "char" (siehe Delphi Hilfe).
Eine ASCII Tabelle dürfte es z.b. bei Wikipedia geben. Kurzum, du müsstest jedes Zeichen des Strings in die entsprechende ASCII Zahl umwandeln und vergleichen, ob sie einer Zahl bzw. den von dir gesuchten Zeichen entspricht (die könnte man dann in einem Array definieren). Meiner Meinung nach ein doch viel zu großer Aufwand, weshalb ich eher auf eine der anderen Ideen zurückgreifen würde. (Vielleicht gehts auch etwas einfacher, war nur jetzt mein erster Gedanke).

So long,

Grandhanate


Edit: Kleiner Nachtrag noch:

Du kannst den Fehler mit Buchstaben auch mit einem try / finally Rahmen abfangen:

try

Einlesen der Zahl aus dem Edit Feld

finally

Wenn das nicht geht mache etwas anderes bzw. nichts

end;

Geändert von Grandhanate (10.06.2009 um 21:09 Uhr)
Grandhanate ist offline   Mit Zitat antworten
Alt 12.06.2009, 22:39   #5 (Direktlink)
Frau Holle
Gast
 
Beiträge: n/a
Standard

Hallo,

klingt alles sehr interessant, was du da schreibst!! Mitunter für mich noch Bömische Dörfer, ich steh ja noch ganz am Anfang. Aber aller Anfang ist schwer, von daher habe ich hier mal ein paar Gedankenanreize und Material zum "üben"

Ich habe das Problem nun erstmal so gelöst, dass man im SpinEdit kein Komma mehr eingeben kann, kann man ja abfangen bzw. die Eingabe löschen/irnorieren.

So kann ich nun wenigstens erstmal weiter machen und stolper nicht ständig über diesen Fehler. Später, wenn ich einmal wieder an dieser Stelle bin, werde ich mir deine Vorschläge noch einmal genauer vornehmen und schauen, dass ich auch das noch gelöst bekomme

Dank dir auf jeden Fall schon mal für deine Hilfe, weiß ich sehr zu schätzen!!
  Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 13.06.2009, 00:25   #6 (Direktlink)
War schon mal da
 
Registriert seit: 12.03.2009
Ort: 127.0.0.1
Alter: 19
Beiträge: 41
Standard

Hallo!

Füge in das OnKeyPress-Ereignis der SpinEdit-Komponente einen der folgenden Codes ein:

Wenn du kein Komma erlauben willst:
Code:
 If Key=#44 then Key:=#0;
Wenn du das Komma in einen Punkt umwandeln lassen willst:
Code:
 If Key=#44 then Key:=#46;
Gruß, Kernel Panic!
Kernel Panic ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > Sonstige Programmiersprachen

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche dringend Hilfe ich habe kein SpinEdit!! Timo85 C/C++, Visual C++, Visual C++.NET 1 31.03.2008 16:55
MS Excel: Zahlen am Komma ausrichten Tunarus Tipps & Tricks 0 19.02.2008 19:52
Delphi 5? Kathi Software - Allgemein 1 24.09.2005 10:19
delphi 7 roter-richi Software - Allgemein 2 09.09.2004 17:40
komma wird punkt helleI. Hardware - Problemlösungen 1 02.06.2003 14:54



Alle Zeitangaben in WEZ +2. Es ist jetzt 04:54 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2