![]() |
|
خطا في كود برمجي ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : خطا في كود برمجي ؟ (/showthread.php?tid=5784) |
خطا في كود برمجي ؟ - bassem_43 - 12-12-2013 لدي برنامج بسيط يحتوي على editText و زر ، والكود الموجود عند الضغط على الزر هو : PHP كود : procedure TForm1.BitBtn1Click(Sender: TObject);1-المشكلة انه دائما نتيجة Sum تساوي صفر وهده مشكلة ؟؟ اظن انه يوجد خطا في الكود ما هو لاصححه . 2- كيف يمكن نزع الفراغات المدخلة الى Edit يعني مثلا لو ادخلنا : Delphi for Arabe النتيجة بعد نزع الفراغ هي DelphiforArabe ؟؟ خطا في كود برمجي ؟ - الياس الدويرة - 12-12-2013 دالة بسيطة لي حذف الفراغ + تصحيح السورس الذي وضعته function notvid(str tring) tring;var i:integer; c tring;begin for i:=1 to length(str) do begin if str[i]<>' ' then c:=c+str[i]; end; result:=c; end; ////////////////////// procedure TForm1.Button1Click(Sender: TObject); const tablelettre:Array[1..26] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','K','R','S','T','U','V','w','X','Y','Z'); const tabint:Array[1..26] of integer = (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); var i,j,sum: integer ; c tring;begin Label1.visible := true ; sum := 0; c:=UpperCase(edit1.text) ; for i := 1 to length(edit1.text) do for j := 1 to length (tablelettre) do if c[i]=tablelettre[j] then sum:= sum + tabint[j]; label1.caption:= inttostr(sum) ; end; خطا في كود برمجي ؟ - igidher - 12-12-2013 تنقصك Begin و end لكل من for الأولى و الثانية خطا في كود برمجي ؟ - Najy Ibraheem - 12-12-2013 السلام عليكم... أحد الأسباب هو أن مقارنة النصوص في دلفي هي مقارنة ثنائية، أي حساسة لحالة الأحرف (case-sensitive) يعني مثلاً أن B لا يساوي b. و قد استخدم الأخ "الياس الدويرة" الدالة UpperCase للمطابقة مع محتويات المصفوفة tablelettre على اعتبار أن الحروف التي بها حروف كبيرة (CAPITAL) - لكن - ربما سهواً الحرف w صغير! *** لإزالة الفراغات أضف الوحدة StrUtils إلى جملة uses (في الـ interface أو الـ implementation): كود : uses StrUtils;* إذا كانت القيم المقابلة للحروف هي 1، 2، 3، ... ، 26 بالترتيب فلا نحتاج إلى المصفوفة الثانية (tabint) و يكون الكود هكذا: كود : procedure TForm1.Button1Click(Sender: TObject);
const
tablelettre: Array[1..26] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','K','R','S','T','U','V','W','X','Y','Z');
var
i, j, sum: Integer;
MyStr: string;
begin
MyStr := ReplaceText(Edit1.Text, ' ', '');
sum := 0;
for i := 1 to Length(MyStr) do begin
for j := 1 to Length(tablelettre) do begin
if UpperCase(MyStr[i]) = UpperCase(tablelettre[j]) then begin
sum := sum + j;
Break; // إذا وجدت الحرف فاخرج من الحلقة الداخلية
end;
end;
end;
Label1.Caption := IntToStr(sum);
end;* أما إذا كانت القيم غير ذلك فالكود يكون هكذا: كود : procedure TForm1.Button1Click(Sender: TObject);
const
tablelettre: Array[1..26] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','K','R','S','T','U','V','W','X','Y','Z');
tabint: Array[1..26] of Integer = (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);
var
i, j, sum: Integer;
MyStr: string;
begin
MyStr := ReplaceText(Edit1.Text, ' ', '');
sum := 0;
for i := 1 to Length(MyStr) do begin
for j := 1 to Length(tablelettre) do begin
if UpperCase(MyStr[i]) = UpperCase(tablelettre[j]) then begin
sum := sum + tabint[j];
Break;
end;
end;
end;
Label1.Caption := IntToStr(sum);
end;* نرجو الاستفادة و السلام. خطا في كود برمجي ؟ - S.FATEH - 12-12-2013 السلام عليكم الأخطاء في الكود 1) يجب حذف PHP كود : j:=j+1;لا داعي لرفع قيم العدادات الا في حالة استخدمت جملة while 2) مقارنة الاحرف الكبيرة و الصغيرة تختلف كما اشار الاخ Najy Ibraheem 3) هناك تكرار للحرف K الا في حالة تعمدت ذلك اعتقد يجب ان يكون Q PHP كود : tablelettre: Array[1..26] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','K','R','S','T','U','V','W','X','Y','Z'); PHP كود : Edit1.Text := Trim(Edit1.Text); بطريقة اخرى PHP كود : procedure TForm1.Button1Click(Sender: TObject);خطا في كود برمجي ؟ - bassem_43 - 12-12-2013 الياس الدويرة كتب :دالة بسيطة لي حذف الفراغ + تصحيح السورس الذي وضعته بارك الله فيك يا اخي الكريم على ال****** لكن في كود دالة حدف الفراغ اظن انه يجب اسناد قيمة ابتدائية للمتغير c ولتكن عبارة عن فراغ ' ' ؟؟؟ خطا في كود برمجي ؟ - bassem_43 - 12-12-2013 نعم اخي S.FATEH قدا كررت الحرف K سهوا قصدت Q وكدلك الحرف W قصدته كبيرا كما نبهني الاخ Najy Ibraheem بارك الله فيكم جميعا اتحفتموني بحلول رائعة تم التعديل على الكود و الاستفاد ان شاء الله خطا في كود برمجي ؟ - Mr.DOS - 12-12-2013 غيرت CharCase الخاصة بـ EDIT الى ecUpperCase خطا في كود برمجي ؟ - Amer12 - 13-12-2013 S.FATEH كتب :السلام عليكم عداد جملة التكرار for لا يزاد إلا بمقدار واحد والتلاعب بمقدار زيادته يؤدي إلى خطأ كذلك يجب ان يكون متغير محلي والسبب أنه يحفظ في مسجلات المعالج لضمان سرعة في التنفيذ. |