delphi4arab منتديات دلفي للعرب

نسخة كاملة : تقسيم الحروف
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[COLOR="RoyalBlue"]السلام عليكم و رحمة الله و بركاته

لدي سؤال عن تقسيم الاحرف, كيف عمل Split للحروف ؟

حاولت فى هذا الكود ولكن فيه خطأ, فهو ياتى بالحرف الخامس و العاشر فقط ![/COLOR]

كود :
[color=Navy][B]var[/B][/color] a,b,c,d,e : [color=Navy][B]string[/B][/color]; [color=Navy][B]begin[/B][/color] a := Edit1.Text; b := a[[color=Blue]5[/color]]+a[[color=Blue]10[/color]]; c := a[[color=Blue]12[/color]]+a[[color=Blue]1[/color]]; d := a[[color=Blue]2[/color]]+a[[color=Blue]9[/color]]; e := b + c + d; Edit2.Text := e; [color=Navy][B]end;[/B][/color]

الكود يعمل دون اي خطا
فقط يجب ان يكون محتوى Edit1 طويل كفاية
اي طول الكلمة على الاقل 12 حرفا
والسلام عليكم
Goblin كتب :حاولت فى هذا الكود ولكن فيه خطأ, فهو ياتى بالحرف الخامس و العاشر فقط !

لقد طرحت هذا السؤال في موقع العربي للهندسة العكسية و اجابوك بنفس جواب الأخ DeltaAziz فأن كان قصدك شيئ اخر وضح اكثر
DeltaAziz كتب :
يجب ان يكون محتوى Edit1 طويل كفاية
اي طول الكلمة على الاقل 12 حرفا
والسلام عليكم

[COLOR="RoyalBlue"]نعم, لقد ادخلت 11 حرفا فقط, لذلك, توقفت العملية عن الحرف الخامس و العاشر ! اسف على تسرعي Sad
ملحوظة: اليس كان من المفروض ان ينبهني الCompiler !

سؤال اخر: ماذا اذا اردت مثلا ان اعكس او اغير ترتيب حروف كلمة و لا اعرف طولها ؟ لن تنفع الطريقة السابقة ![/COLOR]
إقتباس :اليس كان من المفروض ان ينبهني الCompiler !
لا
الCompiler يتوقف عند اخطاء كتابة الاوامر Syntax ولا ينبهك عن الاخطاء المنطقية او اخطاءالتنفيذ Runtime Error فهذه من شأن المبرمج

يمكن معرفة طول String باستخدام Length
مثلا في مثالك السابق تتحقق من ان الطول اكير او يساوي 12 تكتب شيئ مثل
PHP كود :
a := Edit1.Text;
if 
length(a)<12 then begin
  showmessage
('الكلمة المدخلة قصيرة جدا');
  exit;
End; 

ان اردت قلب النص يمكن ان تستخدم ReverseString من الوحدة StrUtils
راجع http://www.delphi4arab.net/forum/showthr...606&page=2

او تقوم بذلك يدويا بكتابة شيئ مثلا
PHP كود :
var a,s:string;
    
i,len:integer;
begin
  a
:=Edit1.Text;
  
len := length(a);
  
s:='';
  for 
i:=0 to len-1 do
    
s:=s+a[len-i];

  
edit2.text := s;
end; 

والسلام عليكم
الطريقة اليدوية جميلة ! , جزاك الله خيرا اخي DeltaAziz.