مشاهدة النسخة كاملة : كيف أنسخ آخر ثلاث أحرف من نص ما في edit
عبدالله زعرور
25-01-2009, 02:50 PM
السلام عليكم
كيف أستطيع أن أنسخ آخر ثلاث أحرف من نص ما في edit
hanipino
25-01-2009, 03:23 PM
هذه طريقة من الطرق .
حل على السريع :D
Function Ch3ar(S:String):String;
var
Le:Longword;
begin
Le:=Length(Trim(S));
Result:=Copy(Trim(S),Le-2,Le-(Le-3));
end;
المخرجات
Caption:=Ch3ar(edt1.Text);
hanipino
25-01-2009, 03:59 PM
طريقة اخرى مختلفة .
Function Ch3ar1(S:String):String;
var
Le,i:Longword;
begin
Le:=Length(Trim(S))+1;
S:=Trim(S);
for i := 0 to 2 do
begin
Result:=Result+S[le-3];
Inc(le);
end;
end;
Caption:= Ch3ar1(edt1.Text);
musvc
25-01-2009, 08:12 PM
شكرا ً لكن هل توجد طريقة اخرى ولكن مختصرة كالتي يضعها الأخ DeltaAziz
hanipino
26-01-2009, 08:34 PM
هل توجد طريقة اخرى ولكن مختصرة .
لا اعتقد انه توجد طريقة اصغر من طريقة تستعمل Copy
اعتقد ان اخى عبدالله زعرور يريد استخراج امتداد ملف ما مصاره يكون فى Edit
هذه طريقة لذالك .
Function Cha3r(S:PWideChar):TStringList;
begin
Result:= TStringList.Create;
ExtractStrings(['.'],
[' '],
S,
Result);
Result.CommaText:=Trim(Result[Result.Count-1]);
end;
Caption := Cha3r(PWideChar(Edt1.Text)).Text;
Cha3r(PWideChar(Edt1.Text)).Free;
:)
B.M.AbdelAziZ
26-01-2009, 09:59 PM
استعمل copy نفس طريقة hanipino بالرد الاول حيث s هو النص
Copy(S,Length(S)-2,3);
لنسخ 3 اخر احرف من Edit1 الى Edit2 نكتب شيئ مثل
var
S : string;
begin
S:=Edit1.Text;
Edit2.Text := Copy(S,Length(S)-2,3);
end;
او مباشرة دون استخدام متغير
Edit2.Text := Copy(Edit1.Text,Length(Edit1.Text)-2,3);
طريقة اخرى باستخدام الوحدة StrUtils
ReverseString(Copy(ReverseString(S),1,3));
ان كان الهدف هو الحصول على لاحقة ملف فهناك دالة لذلك ExtractFileExt
Edit2.Text := ExtractFileExt(Edit1.Text);
والسلام عليكم
hanipino
26-01-2009, 10:32 PM
عجبتنى هذه الطريقة . :)
ReverseString(Copy(ReverseString(S),1,3));
1 : ----->
2 : <-----
3 : -----> Caption
B.M.AbdelAziZ
26-01-2009, 10:40 PM
دائما حاول التفكير بما عندك من دوال تجد طرق/حلول كثيرة
فقط انتبه ReverseString/StrUtils غير متوفرة في كل نسخ دلفي
مثلا انا استخدم دلفي 5 وهي غير موجودة
ThePrince
02-02-2009, 10:07 AM
هذا الكود أفضل وأقل وهي موجودة على ما أعتقد في StrUtils
RightStr(Edit1.Text , 1, 3)
hanipino
02-02-2009, 04:37 PM
تعديل لتعمل مثل RightStr
Function RightStr1(S:String;X,Y:LongWord):String;
var
Le:Longword;
begin
S:=Trim(S); Le:=Length(S);
Result:=Copy(S,Le-(Y-1),Le-(X-1));
end;
المكنسة
20-05-2010, 12:12 AM
انا كنت ابرمج بالفيجوال بيسك ثم انتقلت الان الى الدلفي لانني سمعت بانه اسهل واقوي
ولكنني بعدما رايت هدا التعقيد اشك بان الدلفي اسهل من الفيجوال فمثلا هده الدالة سهلة جدا في الفيجوال
سنكتفي فقط بكتابة هدا الكود :
edit1.text=right(edit2.text,3) c'est tres simple
اما هده الدالة في الدلفي صعبة ولم استطع فهمها . فهل هناك اي طريقة اسهل
shagrouni
20-05-2010, 02:29 AM
السلام عليكم
فيجوال بيسك سهلة للمبتدئ لكنها صعبة للمبرمج المحترف.
دلفي برغم سهولتها إلا أنها تجبرك على أن تفكر كمبرمج وليس كمستخدم.
الأخ ThePrince أشار إلى دالة مطابقة للتي في فيجوال بيسك وهي RightStr
RightStr(Edit1.text, 3)
c'est tres simple aussi
المكنسة
20-05-2010, 02:40 PM
حسنا لقد جربتها في البداية ولم تعمل ثم بعدها عرفت انه يجب علي ان ازيد strUtils في uses
وبعدما زدتها عملت الدالة بشكل جيد.
vBulletin® , Copyright ©2008-2012