Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Inkompatible Typen: 'String' und 'Real'
elzer - Mi 24.09.08 17:21
Titel: Inkompatible Typen: 'String' und 'Real'
Hi Leute also ich habe kurz eine Frage und zwar:
Also ich versuche einen Button zu programmieren, der alle leeren Edit-Feldet ausfüllt, also ich schreib euch mal den Quelltext hin:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button3Click(Sender: TObject); var a,b,c,e,x:real; begin a:=strtofloat(edta.text); b:=strtofloat(edtb.text); c:=strtofloat(edtc.text); e:=strtofloat(edte.text); x:=strtofloat(edtx.text); if a='' then edta.Text:='1'; if b='' then edtb.text:='1'; if c='' then edtc.Text:='0'; if e='' then edte.text:='0'; if x='' then edtx.text:='1'; end; |
Ich habe keine Ahnung was ich falsch mache, es kommt die Fehlermeldung: Inkompatible Typen:'String' und 'Real' .
Wäre cool wenn ihr mir heut noch helfen könnt, da ich das Programm eigentlich für morgen brauche.
Danke für eure Hilfe,
Gruß Chris
Moderiert von
Tino: Delphi-Tags hinzugefügt.
GericasS - Mi 24.09.08 17:28
Du könntest folgendes machen :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button3Click(Sender: TObject); var a,b,c,e,x:real; begin a:=strtofloatDef(edta.text,0); b:=strtofloatDef(edtb.text,0); c:=strtofloatDef(edtc.text,0); e:=strtofloatDef(edte.text,0); x:=strtofloatDef(edtx.text,0); end; |
Dann steht in der Variable bei einem leeren edit feld 0
pennyWISE - Mi 24.09.08 17:29
tut mir leid, mir erschließt sich der sinn deines Programms nicht so recht...
Also um deine Frage zu beantworten: Du versuchst, eine Variable, die du als Kommazahl deklariert hast, zu vergleichen mit einem String. Mit andern worten:
du kannst zwar if a=0 schreiben, aber nicht if a=''
daher kommt der Fehler ... Wenn du wissen willst, ob das Edit leer ist, und deswegen a='' abfragst, würde ich dir empfehlen auch das edit abzufragen .. also if edta.text=''
elzer - Mi 24.09.08 20:46
der sinn des programms ist ganz einfach, da ich nur einen Button benutzen möchte um mehrere Stellen zu berechnen, wollte ich einen Button einfügen der die leeren Editfelder automatisch ausfüllt.
Danke für die Hilfe aber anstatt der Variable habe ich bereits das Editfeld angegeben also
if edta.Text:='' then ....
da kam dann Ausdruckstyp muss BOOLEAN sein
Das war im übrigen die erste Variante die ich ausprobiert habe...
jaenicke - Mi 24.09.08 20:52
:= ist eine Zuweisung, nimm mal den Doppelpunkt weg ;-).
elzer - Mi 24.09.08 21:02
Danke für die schnelle Antwort.
':=' erwartet, aber '=' gefunden
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button3Click(Sender: TObject); begin if edta.Text='' then edta.Text='1'; if edtb.text='' then edtb.text='1'; if edtc.Text='' then edtc.Text='0'; if edte.text='' then edte.text='0'; if edtx.text='' then edtx.text='1'; end; |
Wenn ich das im Quelltext stehen habe.
Moderiert von
Christian S.: Quote- durch Delphi-Tags ersetzt
Xentar - Mi 24.09.08 21:05
Dann schreib halt, wie es da steht, ein := statt =
Bei einer If-Abfrage = bei einer Zuweisung eines Werte :=
Grundlagen...
jaenicke - Mi 24.09.08 21:11
elzer hat folgendes geschrieben: |
Danke für die Hilfe aber anstatt der Variable habe ich bereits das Editfeld angegeben also
if edta.Text:='' then ....
da kam dann Ausdruckstyp muss BOOLEAN sein |
jaenicke hat folgendes geschrieben: |
| := ist eine Zuweisung, nimm mal den Doppelpunkt weg ;-). |
Und wenn du es auch nur da machst dann geht es auch.
Formatiere deinen Quelltext einfach so, dass nur eine Anweisung in einer Zeile steht, dann siehst du auch wo der Fehler liegt...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button3Click(Sender: TObject); begin if edta.Text = '' then edta.Text := '1'; if edtb.Text = '' then edtb.Text := '1'; if edtc.Text = '' then edtc.Text := '0'; if edte.Text = '' then edte.Text := '0'; if edtx.Text = '' then edtx.Text := '1'; end; |
So kommt die Fehlermeldung auch nicht beim if sondern eine Zeile später, wenn da = statt := benutzt wird und umgekehrt.
elzer - Mi 24.09.08 21:11
Ja ich weiß.
Aber das löst mein Problem nicht. Danke für deine Mühe doch ich versuche ja immernoch einen Button zu programmieren, der nur in das leere Feld eine Zahl (1 bzw 0) einfügt.
Wenn es nicht zu viel verlangt ist, könntest du mir vielleicht einen Quelltext schreiben mit dem du meinst, dass es geht?
Wäre sehr hilfreich. =)
Hier nochmal meinen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button3Click(Sender: TObject); begin if edta.Text:='' then edta.Text:='1'; if edtb.text:='' then edtb.text:='1'; if edtc.Text:='' then edtc.Text:='0'; if edte.text:='' then edte.text:='0'; if edtx.text:='' then edtx.text:='1'; end; |
Fehlermeldung war: Ausdruckstyp muss BOOLEAN sein
Ich danke für jede Hilfe =)
Xentar - Mi 24.09.08 21:13
Xentar hat folgendes geschrieben: |
Dann schreib halt, wie es da steht, ein := statt =
Bei einer If-Abfrage = bei einer Zuweisung eines Werte :=
|
Grundlagen!
und
jaenicke hat dir doch schon den Code gepostet..
jaenicke - Mi 24.09.08 21:15
Ich habe ja ein Sekündchen vor dir die Antwort schon gepostet. Das sollte wohl helfen.
Aber an dieser Stelle mal der Hinweis auf den Crashkurs von Christian:
http://crashkurs.christian-stelzmann.de
Denn dir fehlen die absoluten Grundlagen.
Wichtig ist jedenfalls eine gute Formatierung und Einrückung des Quelltext von Anfang an, dann siehst du viele Fehler auch sofort.
elzer - Mi 24.09.08 21:17
mhh..
den Code den er gepostet hat war aber das er die Zahlen von anfang an in das Feld schreibt. Ich wollte ja die Bedingung das wenn das Feld leer is das er dann was darein schreibt, wenn allerdings in dem Feld etwas steht, dann soll er das so lassen wie es ist. Hoffe es ist wenigstens etwas verständlich geschrieben. Werde die Grundlagen in der kommenden Woche durcharbeiten, doch da ich es bis morgen brauche ist ddas ein wenig kurzfristig xD.
Naja wenn irh mir nicht mehr helfen könnt bedanke ich mich ganz herzlich für die shcnelle Hilfe.
Lg Chris
Xentar - Mi 24.09.08 21:20
elzer hat folgendes geschrieben: |
| den Code den er gepostet hat war aber das er die Zahlen von anfang an in das Feld schreibt. Ich wollte ja die Bedingung das wenn das Feld leer is das er dann was darein schreibt, wenn allerdings in dem Feld etwas steht, dann soll er das so lassen wie es ist. |
Genau das tut der Code?! Dafür die if-Abfragen.
jaenicke - Mi 24.09.08 21:20
Der Code macht genau das... Wenn leer, dann 1 oder 0, je nach dem, rein. Probiers aus...
Ach ja: eine andere Variante der Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button3Click(Sender: TObject);
procedure CorrectEmptyEdit(uEdit: TEdit; uFillEmptyEditWith: String); begin if uEdit.Text = '' then uEdit.Text := uFillEmptyEditWith; end;
begin CorrectEmptyEdit(edta, '1'); CorrectEmptyEdit(edtb, '1'); CorrectEmptyEdit(edtc, '0'); CorrectEmptyEdit(edte, '0'); CorrectEmptyEdit(edtx, '1'); end; |
elzer - Mi 24.09.08 21:24
Tut mir Leid hab deine Posts überlesen *peinlich* xD
kommt ncih mehr vor, DANKE für eure Hilfe =).
Morgen fange ich mit den Grundlagen an.
Danke =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!