Autor Beitrag
elzer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: 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:
ausblenden 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 user profile iconTino: Delphi-Tags hinzugefügt.
GericasS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 540

Windows Vista Home Premium
D2010, VisualStudio2008
BeitragVerfasst: Mi 24.09.08 17:28 
Du könntest folgendes machen :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win XP
Delphi 2005 PE (getunt), QBasic 4.5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.09.08 20:52 
:= ist eine Zuweisung, nimm mal den Doppelpunkt weg ;-).
elzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 24.09.08 21:02 
Danke für die schnelle Antwort.
':=' erwartet, aber '=' gefunden

ausblenden 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 user profile iconChristian S.: Quote- durch Delphi-Tags ersetzt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.09.08 21:11 
user profile iconelzer 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
user profile iconjaenicke 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...
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 24.09.08 21:13 
user profile iconXentar hat folgendes geschrieben:
Dann schreib halt, wie es da steht, ein := statt =
Bei einer If-Abfrage = bei einer Zuweisung eines Werte :=


Grundlagen!

und user profile iconjaenicke 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 24.09.08 21:14 
user profile iconXentar hat folgendes geschrieben:
user profile iconXentar hat folgendes geschrieben:
Dann schreib halt, wie es da steht, ein := statt =
Bei einer If-Abfrage = bei einer Zuweisung eines Werte :=


Grundlagen!

Durcharbeiten! :)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 24.09.08 21:20 
user profile iconelzer 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: 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 =)