Wieso funktioniert der Delphi/Lazarus Code nicht?

...komplette Frage anzeigen

3 Antworten

Wenn -p/2 syntaktisch nicht akzeptiert wird, probiere einmal (p/2) * (-1). Mich wundert es allerdings, dass -p/2 Probleme macht.

Als was wurde term1 denn definiert? Das steht nicht in der Frage. Der Datentyp muss natürlich auch negative Zahlen aufnehmen können.

4chap 05.10.2015, 10:39

Danke, aber das hat leider auch nicht funktioniert. Und term1 hab ich im Quelltext als real definiert, ich habs hier bloß vergessen.

0
Suboptimierer 05.10.2015, 10:43
@4chap

Ich würde auf jeden Fall am Ende der Zeilen Semikola setzen und zwischen den Klammern ein Malzeichen:

term1:=-p/2; 
term2:=(p/2)*(p/2)-q; 
0
Suboptimierer 05.10.2015, 10:47
@4chap
Memo1.text:=floattostr(Loesungen);

Hier solltest du IntToStr verwenden.

0
4chap 05.10.2015, 10:50
@Suboptimierer

Es geht trotzdem nicht (und da stand ein Malzeichen aber gutefrage.net hat das als kursiv interpretiert deshalb sieht man es nicht)

0
Suboptimierer 05.10.2015, 10:51
@4chap

Was bekommst du denn als Fehlermeldung? Was bedeutet "Geht nicht?"

p:=StrToInt(Edit1.Text); 
q:=StrToInt(Edit2.Text); 

Solltest du hier nicht StrToFloat verwenden?

1

Ist eigentlich nicht einzusehen, aber Du hast nicht den Code gepostet, der ohne das Minuszeichen "geht": term1 ist nicht definiert, es fehlen verschiedene Semikolons.

Außerdem verwendest Du potentiell undefinierte Werte (x1 und x2).

4chap 05.10.2015, 10:52

im Quelltext stehen die Semikolons und term1 da, ich habs hier wohl aus versehen gelöscht. aber wieso sind x1 und x2 potentiell undefiniert?

0
Mikkey 05.10.2015, 10:57
@4chap

Im Fall Loesungen <> 2 werden denen keine Werte zugewiesen.

Ich kenne den Lazarus-Compiler nicht (nur Delphi), aber bin eigentlich ziemlich sicher, dass auch der Dir entsprechende Warnungen ausgeben wird. Es ist guter Programmierstil, wenn man die Auslöser für Warnungen aus dem Code entfernt.

1

-Variable geht in Delphi so nicht. Mir ist auch keine Sprache bekannt, in welcher das geht.

so gehts richtig: 

term1:=-1 * p/2;
//noch einfacher so
term1 := p / -2;
maximilianus7 06.10.2015, 15:59

wie kommst du darauf? also mir fällt im moment KEINE programmiersprache ein, wo das NICHT geht. hast du das mit delphi ausprobiert? du meinst doch

x := 5;
y := -x;

?

0
DataJockey 06.10.2015, 16:19
@maximilianus7

keine Ahnung wie ich darauf kam. Hat vor langer Zeit mal nicht funktioniert (vlt. wegen ner ganz anderen Sache) und seid dem hab ich das immer vermieden.

habe es gerade mal in delphi, js, c# und php ausprobiert. Funktioniert super! =)

...man lernt nie aus...

0

Was möchtest Du wissen?