| Autor |
Beitrag |
elzer
      
Beiträge: 17
|
Verfasst: Mi 24.09.08 17:21
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
      
Beiträge: 540
Windows Vista Home Premium
D2010, VisualStudio2008
|
Verfasst: 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
_________________ Alexander N.
Neue Bewaffnung Amilo xi2428 T9300
|
|
pennyWISE
      
Beiträge: 49
Win XP
Delphi 2005 PE (getunt), QBasic 4.5
|
Verfasst: 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=''
_________________ „Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
|
|
elzer 
      
Beiträge: 17
|
Verfasst: 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
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 24.09.08 20:52
:= ist eine Zuweisung, nimm mal den Doppelpunkt weg  .
|
|
elzer 
      
Beiträge: 17
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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...
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 24.09.08 21:11
|
|
elzer 
      
Beiträge: 17
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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..
_________________ PROGRAMMER: A device for converting coffee into software.
Zuletzt bearbeitet von Xentar am Mi 24.09.08 21:14, insgesamt 1-mal bearbeitet
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 24.09.08 21:14
Xentar hat folgendes geschrieben: | Xentar hat folgendes geschrieben: | Dann schreib halt, wie es da steht, ein := statt =
Bei einer If-Abfrage = bei einer Zuweisung eines Werte :=
|
Grundlagen! |
Durcharbeiten! 
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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:
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 
      
Beiträge: 17
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 17
|
Verfasst: 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 =)
|
|