المشاركات : 128
المواضيع 47
:
: 24
الإنتساب : Jan 2015
السلام عليكم
أخوكم مبتدأ في عالم البرمجة
برنامج بسيط للمبتدئين يقوم بحساب مساحة الدائرة وحجم الأسطوانة
القانون/
مساحة الدائرة = ط* تق ²
حجم الاسطوانة = مساحة الدائرة* الارتفاع
عند تنفيذ البرنامج يقوم بحساب مساحة الدائرة صحيح
حجم الاسطوانة خطا
مع انه يستمد قيمة مساحة الدائرة من القيمة المعروضة في Label 3بعد التنفيذ
واجهة البرنامج
كود :
http://www.mobdi3ine.net/uploads/1426864354011.jpg
ما هي طريقة عمل البرنامج دون مشاكل كما في صورة واجهة البرنامج
كود :
begin
r:=strtofloat(edit1.text);
a:=sqr(r)*p;
Label3.Caption:=floatToStr(a);
h:=strtofloat(edit2.text);
c:=a*h;
Label7.Caption:=floatToStr(c);
end;
شكرا
المشاركات : 106
المواضيع 19
:
: 0
الإنتساب : Jan 2015
وعليكم السلام ورحمة الله وبركاتة
أهلا بك في عالم البرمجة الشيق والممتع
لو ارفقت السورس كود اكن افضل لكي نسيتطيع مساعدتك بشكل جيد .
على أي حال جرب هذه :
PHP كود :
function CalcCircleArea(Ta, Nq : Single):Single;
begin
Result := (sqr(Nq) * Ta);
end;
function CalcCylinderSize(CircleArea, AHigh : Single):Single;
begin
Result := (CircleArea * AHigh);
end;
procedure TForm1.Button2Click(Sender : TObject);
begin
Caption := FloatToStr(CalcCylinderSize(CalcCircleArea(5, 10), 10));
end;
اعتقد ان مشكلتك صغيرة , قم بتنقيحه لتعرف أي سطر يخرج الخطا تحديداً
المشاركات : 128
المواضيع 47
:
: 24
الإنتساب : Jan 2015
شكرا أخي
المشكل عندي كما في الصورة
كود :
http://www.mobdi3ine.net/uploads/1426871496851.jpg
المشاركات : 106
المواضيع 19
:
: 0
الإنتساب : Jan 2015
ارفق المثال الذي عملته , -_-
المشكلة التي ظهرت لك في دالة FloatToStr
ربما تختلف المعاملات في لازارس عن دلفي , حيث اني كتبت المثال في لازارس
---- تعديل :
جرب بستعمال Extended :
PHP كود :
function CalcCircleArea(Ta, Nq : Extended):Extended;
begin
Result := (sqr(Nq) * Ta);
end;
function CalcCylinderSize(CircleArea, AHigh : Extended):Extended;
begin
Result := (CircleArea * AHigh);
end;
procedure TForm1.Button2Click(Sender : TObject);
begin
Caption := FloatToStr(CalcCylinderSize(CalcCircleArea(5, 10), 10));
end;
المصدر :
PHP كود :
http://docwiki.embarcadero.com/Libraries/XE7/en/System.SysUtils.FloatToStr
المشاركات : 128
المواضيع 47
:
: 24
الإنتساب : Jan 2015
كود :
procedure TForm1.Button1Click(Sender: TObject);
var a,r,c,h :real;
const p=3.14;
begin
r:=strtofloat(edit1.text);
a:=sqr(r)*p;
Label3.Caption:=floatToStr(a);
end;
procedure TForm1.Button3Click(Sender: TObject);
var h,c,a :real;
begin
h:=strtofloat(edit2.text);
c:=a*h;
Label7.Caption:=floatToStr(c);
end;
البرنامج يعمل صحيح الز 1 يحسب مساحة الدائرة ======a
لكن نتيجة حجم الاسطوانةنتج خطأ ===== c
المشاركات : 128
المواضيع 47
:
: 24
الإنتساب : Jan 2015
كود :
http://www.mobdi3ine.net/uploads/1426872552421.jpg
المشاركات : 1,252
المواضيع 170
:
: 1,500
الإنتساب : Jul 2009
[INDENT]
السلام عليكم
لاحظ معي أخي الحبيب :
كود :
procedure TForm1.Button3Click(Sender: TObject);
var h,c,a :real;
begin
h:=strtofloat([color=Red]edit2.text[/color]);
c:=a*h;
Label7.Caption:=floatToStr(c);
end;
هذا الكود خاص بك ،
ما هي قيمة Edit2 ، البرنامج يجد Edit2 فارغة فلا يعرف قيمتها ، إما أن تعيد قراءتها ، أو أنك تقصد Edit1
[/INDENT]
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
المشاركات : 106
المواضيع 19
:
: 0
الإنتساب : Jan 2015
كود :
procedure TForm1.Button1Click(Sender: TObject);
var a,r,c,h :real;
const p=3.14;
begin
r:=strtofloat(edit1.text);
a:=sqr(r)*p;
Label3.Caption:=floatToStr(a);
end;
procedure TForm1.Button3Click(Sender: TObject);
var h,c,a :real;
begin
h:=strtofloat(edit2.text);
c:=[color=Red]a[/color]*h;
Label7.Caption:=floatToStr(c);
end;
في الإجراء الثاني لم يتم وضع قيمة المتغير a

فكل إجراء له متغيراتها الخاصة به وهي من نوع متغيرات محلية وليست عامة (بفتراض انك قرأت كتاب يشرح اساسيات باسكال)
المشاركات : 128
المواضيع 47
:
: 24
الإنتساب : Jan 2015
شكرا على التنويه
قيمة المتغير a هي نفسها نتيجة العملية الحسابية الأولى اي مساحة الدائرة والتي تظهر النتيجة في
كود :
Label3.Caption:=floatToStr(a);
كيف يتم تعريف قيمة a في العملية الثانية من النتيجة الاولى شكرا
المشاركات : 106
المواضيع 19
:
: 0
الإنتساب : Jan 2015
يبدو انك تفتقر إلى أساسيات باسكال فعلا وهذا واضح من كتابتك للكود

على أي حال تفضل قمت بتعديل الكود الخاص بك ليعمل بالطريقة التي كتبتها في البداية :
PHP كود :
function CalcCircleArea(Nq, Ta : Extended):Extended;
begin
Result := (sqr(Nq) * Ta);
end;
function CalcCylinderSize(CircleArea, AHigh : Extended):Extended;
begin
Result := (CircleArea * AHigh);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
p = 3.14;
begin
Label3.Caption := CalcCircleArea(StrToFloat(Edit1.text), p);
end;
procedure TForm1.Button3Click(Sender: TObject);
const
p = 3.14;
begin
Label7.Caption := CalcCylinderSize(CalcCircleArea(StrToFloat(Edit1.text), p),
StrToFloat(Edit2.text));
end;
في حال اردت شرحا لما يحصل فتوجه إلى قسم الكتب ونتقي كتاب لباسكال وبدا التعلم وسترى كيف تتضح الأمور من تلقائها

ونصيحة لك رتب كودك قدر المستطاع قبل ان تعتاد على هذه الطريقة في كتابة الكود وتندما لاحقا