Autor Beitrag
Caesar44
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



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

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 11.12.08 19:33 
user profile iconCaesar44 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Do 11.12.08 19:41 
"Fehler.....Anweisung erwartet, aber FUNCTION gefunden"

Gruß Caesar
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Do 11.12.08 20:12 
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: 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



BeitragVerfasst: Do 11.12.08 20:23 
Moin!


Benutze bitte für deinen Quellcode Delphitags.Die findest du unter "Bereiche" im Post-Menu.

;)
ImbaPanda
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
BeitragVerfasst: 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.

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



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

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 18:03 
Geht es um die Ausgabe als String? Dann würde ich mir einmal den Format-Befehl anschauen. ;-)
Caesar44 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
BeitragVerfasst: Fr 12.12.08 18:10 
Um auf die zweite Nachkommastelle zu runden nimmst du einfach folgendes
ausblenden 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
ausblenden Delphi-Quelltext
1:
i:=Round(i*100);					


MfG André Stollenwerk
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Fr 12.12.08 18:14 
user profile iconImbaPanda hat folgendes geschrieben Zum zitierten Posting springen:
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 :P

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
ImbaPanda
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Windows XP/Vista
Delphi 7 Professional/ Rad Studio 2009
BeitragVerfasst: Fr 12.12.08 18:30 
@Jakobwenzel: kommt im Endeffekt auf das Gleiche Ergebnis hinaus, wie du bereits gesagt hast^^
Caesar44 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: 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?

ausblenden volle Höhe 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:
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
    {Pixels[30,10]:=clred;
    for i:= 30 to 300 do pixels[i,i div 2]:=clblue;
    pen.width:= 5;
    pen.color:=clsilver;
    moveto (50,50);
    lineto (100,100);
    lineto (200,100);
    brush.style:= bsclear;
    rectangle(30,30,100,100);
    ellipse (100,100,200,200);}

    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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 20:07 
Tja, das kommt davon, wenn man with benutzt, selbst schuld... ;-)
user profile iconCaesar44 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
with image1.canvas do
  begin
  [...]
    Canvas.Pen.Width :=3;
    Canvas.lineTo(x*1+300,-h*1+300);
Du benutzt so das Canvas des Formulars, nicht das von Image1...
(Denn auf das with bezogen wäre das Image1.Canvas.Canvas, das gibt es nicht, und deshalb bezieht es sich nicht auf Image1.)
Caesar44 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Fr 12.12.08 20:46 
Vielen, vielen Dank.
Programm funktioniert einwandfrei.
Alle Probleme gelöst.


MfG Caesar