![]() |
Canvas zeichnet bei Integer, nicht bei Single
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 |
Re: Canvas zeichnet bei Integer, nicht bei Single
[ironie] Geht es etwas knapper? [/ironie]
Achja, willkommen in der DP :dp: |
Re: Canvas zeichnet bei Integer, nicht bei Single
Ich nehme Fehlermöglichkeit C, hab ich jetzt was gewonnen? :stupid:
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. |
Re: Canvas zeichnet bei Integer, nicht bei Single
Du kannst einen Float-Datentyp ganz leicht durch ein Round casten.
Also
Delphi-Quellcode:
var i: integer;
f: real; ... i := Round(f); |
Re: Canvas zeichnet bei Integer, nicht bei Single
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] |
Re: Canvas zeichnet bei Integer, nicht bei Single
div bezeichnet eine ganzzahlige Division, funktioniert daher auch nur mit ganzen Zahlen. Wie bereits angesprochen, könntest Du die Variablen vorher mit Round() runden.
|
Re: Canvas zeichnet bei Integer, nicht bei Single
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:
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.
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; Gruß Neutral General |
Re: Canvas zeichnet bei Integer, nicht bei Single
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) ??? |
Re: Canvas zeichnet bei Integer, nicht bei Single
Hi,
Divsion durch 0 könnte problematisch werden. Tschüsss! |
Re: Canvas zeichnet bei Integer, nicht bei Single
Das ist durchaus richtig. Gemeint war:
while x<y do canvas.....(x * p , 0) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz