AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Canvas zeichnet bei Integer, nicht bei Single

Canvas zeichnet bei Integer, nicht bei Single

Ein Thema von koisa · begonnen am 3. Okt 2007 · letzter Beitrag vom 3. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2   
koisa

Registriert seit: 2. Okt 2007
Ort: Bremerhaven
6 Beiträge
 
Delphi 2005 Personal
 
#1

Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:33
Ich habe folgendes Prolem:
Wenn die definierten Variablen als Integer angeben sind, wird das objekt gezeichnet,
sind diese Variablen jedoch als Single definiert, so wird nicht dargestellt.
Hätte evtl. jemand eine simple Idee??
Danke
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:38
[ironie] Geht es etwas knapper? [/ironie]

Achja, willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:43
Ich nehme Fehlermöglichkeit C, hab ich jetzt was gewonnen?


Da canvas IMHO keine Zeichenfunktion kennt die Single als Parameter erwartet oder akzeptiert, gehe ich davon aus dass du den Single irgendwie rundest, aber ohne Quelltext können wir hier nur raten woran es liegt.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:43
Du kannst einen Float-Datentyp ganz leicht durch ein Round casten.
Also
Delphi-Quellcode:
var i: integer;
    f: real;

...

i := Round(f);
  Mit Zitat antworten Zitat
koisa

Registriert seit: 2. Okt 2007
Ort: Bremerhaven
6 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:48
Delphi-Quellcode:
procedure TFormPalettierung.SpeedButtonZeichnenClick(Sender: TObject);
var Breite, Hoehe : Integer;
begin

 Lv := StrToFloat (EditLaenge.Text);
 Bv := StrToFloat (EditBreite.Text);


 repaint;
  begin
 if ComboBoxPalettenwahl.ItemIndex = 0 then Breite := 1200;
 if ComboBoxPalettenwahl.ItemIndex = 0 then Hoehe := 800;

 if ComboBoxPalettenwahl.ItemIndex = 1 then Breite := 1200;
 if ComboBoxPalettenwahl.Itemindex = 1 then Hoehe := 1000;


  end;

 begin
 imageDraufsicht.Canvas.rectangle(0,0, Breite div 5 , Hoehe div 5 );
  begin

  imagedraufsicht.canvas.MoveTo(0,Lv div 5 );
  imagedraufsicht.Canvas.LineTo(Lv div 5 ,Bv div 5);
  end;
  end;

end;

Dies funktioniert nicht, fehler wird in der Zeile "imagedraufsicht.canvas.MoveTo(0,Lv div 5 );" und der folgenden angezeigt, "Operator ist auf diesen Operandentyp nicht anwendbar". Die variable Lv und Bv sind vorher als Single definiert.

Wenn ich nur das Rectangle zeichnen lasse funktioniert es mit dem Typ Integer, wenn die variablen Breite bzw Höhe als SIngle def. sind geht dies auch nicht.

Danke

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:52
div bezeichnet eine ganzzahlige Division, funktioniert daher auch nur mit ganzen Zahlen. Wie bereits angesprochen, könntest Du die Variablen vorher mit Round() runden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 16:57
Hi,

1. Bitte Quellcode formatieren
2. Bitte [.delphi][./delphi] tags benutzen (jeweils ohne Punkt.
3. Was sollen die ganzen begin und end;s im Code ? ...

Delphi-Quellcode:
procedure TFormPalettierung.SpeedButtonZeichnenClick(Sender: TObject);
var Breite, Hoehe : Integer;
begin
  Lv := StrToFloat(EditLaenge.Text);
  Bv := StrToFloat(EditBreite.Text);

  repaint; // wofür? lass es weg!

  if ComboBoxPalettenwahl.ItemIndex = 0 then
  begin
    Breite := 1200;
    Hoehe := 800;
  end;

  if ComboBoxPalettenwahl.ItemIndex = 1 then
  begin
    Breite := 1200;
    Hoehe := 1000;
  end;

  imageDraufsicht.Canvas.rectangle(0,0, Breite div 5, Hoehe div 5);
  imagedraufsicht.canvas.MoveTo(0,Round(Lv / 5));
  imagedraufsicht.Canvas.LineTo(Round(Lv / 5),Round(Bv / 5));
end;
Also die Canvas-Methoden wollen immer ein Single haben. div kannst du nur bei Integern benutzen und bei einer div-Operation kommt auch wieder ein Integer raus. Wenn du Singles (allg. Gleitkommazahlen) teilen willst musst du "/" benutzen. Jedoch ist es relativ unsinnig die Werte per StrToFloat aus dem Edit in Single Variablen zu lesen. Benutze Integer Variablen und StrToInt. Singles bringen dir hier gar nix.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
koisa

Registriert seit: 2. Okt 2007
Ort: Bremerhaven
6 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 17:56
Ja danke schön nun geht es!

Eine kurze Frage noch: Kann man eine While Funktion in die Zeichenoperation einbinden??

In der Form:

while x<y do

canvas.....(x * p /0)


???
  Mit Zitat antworten Zitat
ulhau

Registriert seit: 23. Okt 2006
20 Beiträge
 
#9

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 18:00
Hi,

Divsion durch 0 könnte problematisch werden.

Tschüsss!
  Mit Zitat antworten Zitat
koisa

Registriert seit: 2. Okt 2007
Ort: Bremerhaven
6 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Canvas zeichnet bei Integer, nicht bei Single

  Alt 3. Okt 2007, 18:04
Das ist durchaus richtig. Gemeint war:

while x<y do

canvas.....(x * p , 0)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz