Text in Zahlen umwandeln (StringToFloat)

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Louiisa
Beiträge: 1
Registriert: Fr 28. Okt 2011, 14:02

Text in Zahlen umwandeln (StringToFloat)

Beitrag von Louiisa »

Hey Leute!
Also wir arbeiten grade in der Schule mit Lazarus und ich hab da ein Problem.
Wir sollten 2 Edit Felder und 1 Label Feld machen und der Text, den man in das Erste Feld schreibt, sollte dann sowohl in dem Anderen Feld, als auch in dem Label Feld auftauchen. Soweit so gut, das hab ich auch hinbekommen. Jetzt sollen wir das Ganze anstatt mit nem Text, mit ner Zahl machen. Und dann muss man ja irgendwie StrToFloat oder so hinschreiben. Aber wo? Ich hoffe ihr könnt mir helfen!
LG :D

Hier seht ihr, wie ich das mit dem Text gemacht habe:

Code: Alles auswählen

procedure TForm1.btn_StartClick(Sender: TObject);
var
  vText1:string;
  vText2:string;
  vLabel1:string;
begin
  vText1:=edt_text1.text;
  edt_Text1.text:=vText1;
  vText2:=edt_text1.text;
  edt_text2.text:=vText1;
  vLabel1:=edt_text1.text;
  lbl_Label1.caption:=vText1;
 
 
end;//procedure TForm1.btn_StartClick(Sender: TObject);
Zuletzt geändert von Lori am Fr 28. Okt 2011, 22:34, insgesamt 1-mal geändert.
Grund: Highlighter

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Text in Zahlen umwandeln (StringToFloat)

Beitrag von Scotty »

So wie du das aufschreibst, werden nur Strings verarbeitet. Und dem ist ja egal, ob er aus Buchstaben oder Zahlen besteht. Interessant wird es dann, wenn du mit den Werten arbeiten willst, also zum Beispiel den Inhalt aus Feld A mit Feld B addieren. Dann musst du zwingend den String in eine Zahl konvertieren. Pascal bietet dazu versschiedene Funktionen an: StrToInt(), wenn es keine Nachkommastellen gibt, sonst StrToFloat(), oder StrToIntDef()/StrToFloatDef(), wenn bei einem Fehler Standardwerte ausgegeben werden sollen sowie TryStrToInt()/TryStrToFloat(). In die andere Richtung, d.h. du hast die Felder A und B in Zahlen konveriert, die beiden Werte addiert und willst das Ergebnis in Feld C eintragen, wäre es IntToStr() oder FloatToStr(). Außerdem gibt es noch val() und str().

Den Rest der Hausaufgabe musst du dir selbst erarbeiten :mrgreen:

Bei Fließkommazahlen und deren Konvertierung sollte man beachten, dass die Genauigkeit begrenzt ist: float(1) <> int(1).

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Text in Zahlen umwandeln (StringToFloat)

Beitrag von MAC »

folgendes nicht zu deinem Problem sondern zu dem gezeigten Quellcode.
Ich hab das Gefühl das du deinen Quelltext diesen selber nicht genau verstehst :D also versuch ich ihn mal gerade zu erklären:

Zeile nr 1 (vText1:=edt_text1.text;) :
Du speichers den Text des Edits mit dem namen "Edt_text1" in die Variable vText1.
Zeile nr 2 : Du gibst in das Selbe Edit die soeben erstellte Variable du sagst also im grunde Edt_text1.Text := Edt_text1.Text;
Es wird also nicht wirklich etwas geändert, daher ist diese Zeiöe überflüssig.
In der 3ten Zeile speicherst du den Wert vom 2.ten Edit in eine Weitere Variable. Auch hier ist nichts falsches drann, da du die Variable vText2 aber nie wieder ausliest könntest du eigentlich diese Zeile und die Variable "vText2" weglassen...
In Zeile 4 wird dafür gesorgt das das 2te Edit den gleichen wert bekommt wie die Variable vText1 . Also den gleichen Wert wie das 1. Edit.
Zeile 5 ist ähnlich wie Zeile 3 , diese kann weggelassen werden und die Variable vLabel1 wird vorerst nicht benötigt ...
Zeile 6 sorgt ähnlich wie Zeile 4 dafür das im Label das gleiche steht wie in Edit1.

Ich hoffe das konnte die helfen, Scotty's text zu StrtoFloat und FloattoStr sollte dir deine eigentliche frage beantwortet haben :)

Code: Alles auswählen

Signatur := nil;

Antworten