Autor |
Beitrag |
Caesar44
      
Beiträge: 44
|
Verfasst: Do 11.12.08 19:30
Hey ich hab ne Frage zu dem Befehl round:(real zu integer)
In der Hilfe steht :function Round(X: Extended): Longint;
Muss es jetzt analog: function Round (i: Real): Integer; heißen um den Wert i zu runden?
Bei mir funktioniert das nämlich nicht.
Gruß Caesar44
(Bin nähmlich gar nich dof;-))
Zuletzt bearbeitet von Caesar44 am Do 11.12.08 19:39, insgesamt 1-mal bearbeitet
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Do 11.12.08 19:33
Caesar44 hat folgendes geschrieben : | Bei mir funktioniert das nähmlich nicht.Gruß Caesar44 |
Wer nämlich mit h schreibt ist...
Was funktioniert nicht? Welche Fehlermeldung erscheint?
Grüße,
Marc.
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Do 11.12.08 19:41
"Fehler.....Anweisung erwartet, aber FUNCTION gefunden"
Gruß Caesar
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Do 11.12.08 19:46
Bitte zeig mal deinen Quellcode.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Do 11.12.08 20:12
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.Mal_BildClick(Sender: TObject); var i,y: real;
begin with image1.canvas do begin moveto (300,0); LineTo (300,600); MoveTo (0,300); LineTO (600,300); TextOut(600,300,'x'); TextOut(300,0,'y'); i:= -4; repeat i:= i+0.1; y:= i*i; function round (i); function round (y); Pixels[i*25+300,-y*25+300]:=clred; until i >= 3; end; end;
end. |
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Do 11.12.08 20:21
hi,
du verwendest die funktion falsch!
falsch: function round (i);
richtig: i:= round(i);
Du musst auch sagen, in welche Variable der Wert wieder gespeichert werden soll!
@Klugmann: Hatte mich verlesen und habs korrigiert ^^
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Zuletzt bearbeitet von platzwart am Do 11.12.08 20:25, insgesamt 2-mal bearbeitet
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Do 11.12.08 20:22
1.) Bitte schließe deinen Quelltext im Beitrag in und ein (oder clicke auf Bereiche->Delphi). Dann sieht das viel lesbarer aus.
2.) Du solltest erstmal die Grundlagen von Delphi lernen. Hier gibts ein paar Tutorials.
3.) Verwende statt Real lieber Single oder Double.
4.) Statt function round(y) musst du x=round(y) schreiben, und natürlich vorher die Integer-Variable x deklariert haben.
Platzwart: Das funktioniert so nicht. Round gibt einen Integer zurück; i ist bei ihm aber ein Real.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Zuletzt bearbeitet von Timosch am Do 11.12.08 20:23, insgesamt 1-mal bearbeitet
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 11.12.08 20:23
Moin!
Benutze bitte für deinen Quellcode Delphitags.Die findest du unter "Bereiche" im Post-Menu.

|
|
ImbaPanda
      
Beiträge: 98
Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
|
Verfasst: Do 11.12.08 20:26
Am besten setzt du deinen Code erstmal in Delphi-Tags. Dies machst du mit am Anfang bzw. am Ende des Codes.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Mal_BildClick(Sender: TObject); var i,y: real;
begin with image1.canvas do begin moveto (300,0); LineTo (300,600); MoveTo (0,300); LineTO (600,300); TextOut(600,300,'x'); TextOut(300,0,'y'); i:= -4; repeat i:= i+0.1; y:= i*i; i := round (i); <---- Versuch's mal so y := round (y); <----- " Pixels[i*25+300,-y*25+300]:=clred; until i >= 3;
end;
end;
end. |
MfG André Stollenwerk
Edit: Man bin ich grade langsam mit dem Tippen xD
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Fr 12.12.08 18:01
Vielen Dank im Grundsatz funktioniert es jetzt auch schon, allerdings ist mir jetzt etwas besseres eingefallen:
Kann man mit Round auch auf eine bestimmte Stelle runden?
Ich möchte auf die zweite Stelle hinter dem Komma runden und dann mit Hundert multiplizieren, sodass ich wieder einen Integerwert habe.
Zuletzt bearbeitet von Caesar44 am Fr 12.12.08 18:05, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 18:03
Geht es um die Ausgabe als String? Dann würde ich mir einmal den Format-Befehl anschauen. 
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Fr 12.12.08 18:08
Nein es soll eine Parabel gezeichnet werden. Die sieht momentan aber leider noch ziemlich ungenau aus.
So wird mit der Round-Funktion glaube ich alles hinter dem Komma abgeschnitten.
MfG Jonas
|
|
ImbaPanda
      
Beiträge: 98
Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
|
Verfasst: Fr 12.12.08 18:10
Um auf die zweite Nachkommastelle zu runden nimmst du einfach folgendes
Delphi-Quelltext 1:
| i:=Round(i*100) / 100; |
Wenn du nun einfach das ganze wieder mal 100 nehmen willst um einen Integerwert zu haben, lass einfach das dividieren durch 100 weg
Delphi-Quelltext
MfG André Stollenwerk
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Fr 12.12.08 18:14
ImbaPanda hat folgendes geschrieben : | Um auf die zweite Nachkommastelle zu runden nimmst du einfach folgendes |
Warum nicht einfach RoundTo verwenden?
Das macht intern zwar auch nix anderes, aber egal 
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
ImbaPanda
      
Beiträge: 98
Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
|
Verfasst: Fr 12.12.08 18:30
@Jakobwenzel: kommt im Endeffekt auf das Gleiche Ergebnis hinaus, wie du bereits gesagt hast^^
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Fr 12.12.08 20:02
Dankeschön für eure Antworten.
Ich habe jetzt allerdings ein weiteres Problem:
Ich möchte nun gern die Punkte verbinden mit lineTo.
Das Problem ist, dass die Striche immer nur kurz "aufploppen" und dann verschwinden. Warum ist das so?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| procedure TForm1.Mal_BildClick(Sender: TObject); var i,y: real; x, h: integer;
begin with image1.canvas do begin moveto (300,0); LineTo (300,600); MoveTo (0,300); LineTO (600,300); TextOut(600,300,'x'); TextOut(300,0,'y'); i:= -3; repeat i:= i+0.1; y:= i*i; x := round (i*100); h := round (y*100); Canvas.Pen.Width :=3; canvas.lineTo(x*1+300,-h*1+300); until i >= 3;
end;
end;
end. |
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.12.08 20:07
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Fr 12.12.08 20:46
Vielen, vielen Dank.
Programm funktioniert einwandfrei.
Alle Probleme gelöst.
MfG Caesar
|
|