PDA

View Full Version : خطای floating point division by zero هنگام کار با فرامین گرافیکی



aj1shir
سه شنبه 10 آبان 1390, 20:29 عصر
سلام
ببخشید با یه مشکل عجیب برخورد کردم تو delphi XE2 اونم با firemonkey
اول یه پروژه جدید باز میکنم از نوع firemonkey hd application
بعد یه دکمه و یه جعبه تصویر رو فرم میزارم و تو یه عمل کلیک دکمه این فرامین رو مینویسم که از help خود برنامه کپی کردم
procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2, p3, p4, p5: TPointF;
MyPolygon: TPolygon;
begin
// sets the points that define the polygon
p1.Create(210, 220);
p2.Create(330, 360);
p3.Create(380, 260);
p4.Create(200, 180);
p5.Create(140, 160);
// creates the polygon
SetLength(MyPolygon, 5);
MyPolygon[0] := p1;
MyPolygon[1] := p2;
MyPolygon[2] := p3;
MyPolygon[3] := p4;
MyPolygon[4] := p5;
// Fills and draws the polygon on the canvas
ImageControl1.Bitmap.Canvas.FillPolygon(MyPolygon, 50);
// updates the bitmap
ImageControl1.Bitmap.BitmapChanged;
end;
بعد از اجرای برنامه و زدن کلید خطای floating point division by zero رو میده
من که گیج شدم شما لطفا کمک کنید
یا علی

vcldeveloper
سه شنبه 10 آبان 1390, 23:16 عصر
FireMonkey باگ زیاد داره، ممکنه از خودش باشه. البته من کد شما رو بررسی نکردم. گزینه use debug DCU را در project options فعال کنید، و برنامه رو اجرا کنید، ببینید روی چه خطی خطا میده، بعدش روی همون خط break point بذارید، و مقادیر پارامترها و متغیرها رو بررسی کنید، ببینید کجا عمل تقسیم بر صفر انجام میشه، و آیا این عملیات حاصل پارامترهایی هست که شما به نحوی ارائه کردید، یا حاصل محاسبات داخلی FireMonkey هست.

aj1shir
چهارشنبه 11 آبان 1390, 17:02 عصر
ممنون از توجهتون آقای کشاورز
البته این که Firemonkey هنوز اشکالاتی دارد در اون شکی نیست(البته به نظر بنده) و این ورژن هنوز میتوان گفت که نمونه آزمایشی این محصوله ولی....
ولی این بار اشکال از بنده بود که بدون خوندن کامل متن help برنامه اون رو رفتم تست کردم
مشکل با این فرمان حل میشه
ImageControl1.Bitmap.Create(x,y);
البته از اونجا که تو VCL نیاز به همچین فرمانی نبود و وقتی که آبجکت جعبه تصویر رو روی فرم میکشیدی دیگه نیاز به فرمان Create نبود من هم احساس کمبود فرمانی رو نمیکردم
البته این هم میتونه یه باگ باشه برای خودش که احتمالا در آینده حذف بشه