![]() |
Temperatur Umrechner
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich bastle mir gerade einen (wie der Titel des Threads schon sagt) Temperatur Umrechner. Ich komme soweit auch gan gut klar. Um euch mal eben zu zeigen wie das ganze bei mir aus sieht habe ich ein Bild mit hochgelade. Aber aus Irgend einem Grund bekomme ich einen fehler.
Delphi-Quellcode:
ich hoffe ihr könnt mir helfen
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; ComboBox1: TComboBox; Label1: TLabel; Button1: TButton; Label2: TLabel; Label3: TLabel; Label4: TLabel; ComboBox2: TComboBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var zahl, ergebnis : integer; begin zahl :=StrToInt(Edit1.text); // Kontrolle auf neue Edit Box if ComboBox1.text='C° (Celsius)' then begin if ComboBox2.text='K (Kelvin)' then begin ergebnis:=zahl+273; Edit1.Text:= IntToStr(ergebnis); end else begin end end else begin end // Kontrolle auf neue Edit Box if ComboBox1.text='C° (Celsius)' then // hier kommt immer der Fehler begin if ComboBox2.text='K (Kelvin)' then begin ergebnis:=zahl+273; Edit1.Text:= IntToStr(ergebnis); end else begin end end else begin end end; end. gruß jens106 |
Re: Temperatur Umrechner
Wie heißt denn der Fehler?
|
Re: Temperatur Umrechner
[Error] Unit1.pas(57): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' |
Re: Temperatur Umrechner
Da fehlt ja auch ein Semikolon am Ende der Zeile vorher.
|
Re: Temperatur Umrechner
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; ComboBox1: TComboBox; Label1: TLabel; Button1: TButton; Label2: TLabel; Label3: TLabel; Label4: TLabel; ComboBox2: TComboBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var zahl, ergebnis : integer; begin zahl :=StrToInt(Edit1.text); // Kontrolle auf neue Edit Box if ComboBox1.text='C° (Celsius)' then begin if ComboBox2.text='K (Kelvin)' then begin ergebnis:=zahl+273; Edit1.Text:= IntToStr(ergebnis); end else begin end; //hier fehlte ein semicolon... end else begin end; //hier fehlte ein semicolon... // Kontrolle auf neue Edit Box if ComboBox1.text='C° (Celsius)' then // hier kommt immer der Fehler begin if ComboBox2.text='K (Kelvin)' then begin ergebnis:=zahl+273; Edit1.Text:= IntToStr(ergebnis); end else begin end; //hier fehlte ein semicolon... end else begin end; //hier fehlte ein semicolon... end; end. |
Re: Temperatur Umrechner
jo danke dir.
aber wieso brauche ich da eins wenn ich nirgend anders eins gestzt habe? |
Re: Temperatur Umrechner
*Puh*, die Semikolonregeln von Pascal sind nicht ganz einfach zu erklären. Als Ansatz: überall dort, wo kein else folgt, sicherheitshalber ein Semikolon setzen, das sollte dann passen.
|
Re: Temperatur Umrechner
genau nach dem verfahren mach ich das auch... ^^
|
Re: Temperatur Umrechner
alles klar danke euch
|
Re: Temperatur Umrechner
Statt ComboBox1.Text empfehle ich dir mal einen Blick auf ComboBox1.ItemIndex zu werfen.
A) Integervergleiche sind schneller und man könnte auch mal CASE-OF statt IF-THEN verwenden B) änder mal den Text deiner Komponente und schon geht nichts mehr und dann gibt's noch Schreibfehler beim Programmieren, wo es auch nicht mehr ginge. |
Re: Temperatur Umrechner
@Detlef:
So schwer sind die Zeichensatzregeln nun auch wieder nicht! Zusammengehörende Befehle wie z.B. - begin end - repeat until - while do - if then else werden nicht durch Semikolon getrennt. Der wichtigste Merksatz ist: Vor else darf nie ein Semikoln stehen!!! Gruß Wolfgang |
Re: Temperatur Umrechner
Stimmt so aber auch nicht ganz, in einem case-Label schon.
|
Re: Temperatur Umrechner
Einspruch ;-)
weiteres Beispiel: - case <variable> of .. end; Gruß Wolfgang |
Re: Temperatur Umrechner
Delphi-Quellcode:
case Dings of
1: Bla; 2: Blubb; //<-- Semikolon else //<-- else Wuppdi; end; |
Re: Temperatur Umrechner
Du hast das Semikolon nach of vergessen :-D :-D :-D
[Edit] Ich will keinen verwirren, aber nach of von case darf natürlich auch kein Semikolon stehen [/Edit] Gruß Wolfgang |
Re: Temperatur Umrechner
Zitat:
Delphi-Quellcode:
Aber ich denke, wir haben das nun genug beleuchtet :zwinker:
while true do; //<-- Ohauerhauerha
begin if Blabla then break; end; |
Re: Temperatur Umrechner
:-D
|
Re: Temperatur Umrechner
uiuiui ich merke schon jeder hat da seine eigene methode ;)
Naja neues Problem. Mein Taschenrechner Funktioniert super aber wenn ich jetzt einen Text in meine edit box eingebe stürzt delphi natürlich ab. Ich habe schon nach einer möglichkeit gesucht zu überprüfen ob der eingegebene wert eine ziffer oder eion buchstabe ist, aber ich komme nur auf sehr komplizierte methoden. Ich lerne Delphi erst seit 2 wochen. Geht das mit Hilfe einer If Anwendung? |
Re: Temperatur Umrechner
Du könntest das OnChange-Ereignis des Edits zur Prüfung verwenden. Wenn sich der enthaltene Text in eine Zahl wandeln lässt (TryStrToInt), dann ist alles in Butter.
[edit] Für Fließkommazahlen wäre das dann natürlich TryStrToFloat. [/edit] |
Re: Temperatur Umrechner
könntest du vielleicht ein Beispiel nennen wie man das macht? Ich kenne diese OnChange anwendung noch nicht.
|
Re: Temperatur Umrechner
Noch ein Tip zur Temperatur - Umrechung: 0 °C entsprechen 273,15 K
Oder soll es nur ein Schätzwert sein? :wink: |
Re: Temperatur Umrechner
Zitat:
|
Re: Temperatur Umrechner
Klicke das Edit an und wechsle im Objektinspektor auf den Reiter Ereignisse. Bei OnChange machst Du dann einen Doppelklick.
Delphi-Quellcode:
So könnte man das machen, aber das ist nur eine von mehreren Möglichkeiten.
procedure TDeinForm.DeinEditChange(Sender: TObject);
var Zahl: double; begin if not TryStrToFloat(DeinEdit.Text,Zahl) then begin ShowMessage('Ungültige Eingabe'); end else begin //Berechnung durchführen end; end; |
Re: Temperatur Umrechner
bei mir kommt eine Fehlermeldung
Delphi-Quellcode:
Fehler:
if not TryStrToFloat(Edit1.Text,zahl) then
begin ShowMessage('Ungültige Eingabe'); end else begin end; [Error] Unit1.pas(37): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' |
Re: Temperatur Umrechner
Zeig doch einmal die ganze Methode.
|
Re: Temperatur Umrechner
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zahl, ergebnis, unterergebnis : Real; begin if not TryStrToFloat(Edit1.Text,zahl) then begin ShowMessage('Ungültige Eingabe'); end else begin end; zahl :=StrToFloat(Edit1.text); |
Re: Temperatur Umrechner
Und wenn Du aus real einmal double machst? Sonst kann ich gerade nichts entdecken.
Zitat:
|
Re: Temperatur Umrechner
bevor ich jetzt mein ganzes Programm ruiniere... ;)
kann ich einfach so anstelle von Real Double hinschreiben? Wenn ja wie mache ich das dann mit StrTo***? |
Re: Temperatur Umrechner
Na genauso, double ist auch eine Fließkommazahl.
|
Re: Temperatur Umrechner
also wenn ich das mit DoubleToStr richtig gemacht habe Funktioniert auch die Methode leider nicht.
Fehler: Build [Error] fast_fertig.dpr(37): Undeclared identifier: 'TryStrToDouble' [Error] fast_fertig.dpr(56): Undeclared identifier: 'DoubleToStr' [Fatal Error] Project1.dpr(5): Could not compile used unit 'D:\Info\Delphi\Gradzahlen\fast_fertig.dpr' Naja was solls ich weiß ja wie man's eingeben muss :) |
Re: Temperatur Umrechner
Wozu poste ich denn die gesamte Hilfe zu dem Befehl? Schau mal ganz genau, was man da so alles übergeben kann.
|
Re: Temperatur Umrechner
ich lerne delphi (ich glaube das ist pascal) doch erst seit 2 wochen ich kann damit kaum was anfangen ;)
|
Re: Temperatur Umrechner
TryStrToFloat erwartet gewisse Parameter. Welche das sein können, steht in der Hilfe (siehe mein Zitat). Das heißt nicht, dass sich der Name der Funktion ändert, der heißt weiterhin TryStrToFloat :zwinker:
|
Re: Temperatur Umrechner
so ich habe ads jetzt so probiert
Delphi-Quellcode:
aber das klappt gar nicht
procedure TForm1.Button1Click(Sender: TObject);
var zahl, ergebnis, unterergebnis : Double; begin if not TryStrToFloat(zahl S: string; out Value: Double): Boolean; overload; then begin ShowMessage('Ungültige Eingabe'); end else begin end; nur fehlermeldungen: Build [Error] fast_fertig.dpr(37): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments [Error] fast_fertig.dpr(56): Undeclared identifier: 'DoubleToStr' [Fatal Error] Project1.dpr(5): Could not compile used unit 'D:\Info\Delphi\Gradzahlen\fast_fertig.dpr' |
Re: Temperatur Umrechner
Hallo,
dir fehlen (immer noch) jegliche Grundlagen. Du weißt bsp. nicht, was der Unterschied zwischen einer Funktionsdeklaration und dem zugehörigen Aufruf ist. Die Deklaration zeigt dir, welche Parameter eine Funktion erwartet. Beim Aufruf übergibst du als Parameter deine Variablen bzw. Werte:
Delphi-Quellcode:
'12.4' ist der String, der konvertiert werden soll.
var myFloat: Extended;
if TryStrToFloat('12.4', myFloat) then ShowMessage(FloatToStr(myFloat)) else ShowMessage('Ungültige Eingabe'); in myFloat wird die konvertierte Zahl geschrieben. Wenn du das besser verstehst, nutze try - except:
Delphi-Quellcode:
Und nun arbeite bitte endlich die Grundlagentutorials durch.
try
myFloat := StrToFloat('12.4'); except ShowMessage('Ungültige Eingabe'); end; Grüße, Matze |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage |
Re: Temperatur Umrechner
@Matze:
Sei 'mal nicht ganz so hart. Zitat:
Laßt ihn 'mal die Tipps danach erstmal in Ruhe studieren und ausprobieren, vor allem die von Opa Detlef. Gruß Wolfgang |
Re: Temperatur Umrechner
Er schrieb doch, dass er es mit Opas Tipps nichts anfangen kann und fragte, wie man es machen muss.
Da finde ich den Hinweis, die Grundlagen zu lernen angebracht, zumal ich auch zum Thema beigetragen habe. Mir hat er meine Bitte auch bestätigt und mir mitgeteilt, dass er die Grundlagen nun vollends durcharbeiten wird. Dass man bei einem Funktionsaufruf 1:1 die Deklaration kopiert und nicht überlegt, wie eigentlich die eigenen Daten in die Funktion kommen können (das fehlte komplett) sagt mir, dass da Grundlagen fehlen, die man zu Beginn lernen muss (als erstes). Das lernt man innerhalb weniger Stunden in der Schule. ;) Edit: Ich bin zu müde und muss ins Bett. |
Re: Temperatur Umrechner
@Matze:
Alles gut, also warten wir ab. :-) Gruß Wolfgang |
Re: Temperatur Umrechner
@Matze:
Sorry, daß ich nochmal antworte, aber Funktionen zu behandeln sind nach 2 Wochen noch nicht machbar. Ich bin froh, wenn ich das nach einem Vierteljahr vermitteln kann. Sind halt nicht alle Hobbyprogrammierer. Nach 30 Jahren Pascal merkt man sowas ;-) Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz