الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من يستطيع ان يأتي بافضل من هذا الكود لحذف الفراغات

مغلق
بدأه Wael Dalloul في 31 أغسطس 2005 · 9 رد · 1,050 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا كود لحذف فراغات من بداية و نهاية كلمة تمرر بواسطة البارمتر

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

function DeleteSpaces(S: String): string;
begin
  while (S <> '' ) and (S[1] = ' ') do
  begin
    S:= MidStr(S,2,Length(S));
  end;
  while (S <> '' )  and (S[Length(S)] = ' ') do
  begin
    S:= MidStr(S,1 ,Length(S) - 1);
  end;
  Result:= S;
end;

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#2
function DeleteSpaces(S: String): string;
begin
 Result:= Stringreplace(S,' ','',[rfReplaceAll]);;
end;

من يجد أقصر ؟ :D

تم تعديل هذه المشاركة بواسطة DeltaAziz في 31 أغسطس 2005 في 18:42

d4baa0.gif
#3

أعتقد أن الكود الثاني سيحذف جميع المسافات حتى و لو كانت في وسط الstring و ليست في أوله أو في آخره

جرب هذا فهذا أقصر و أضمن

var s : string;
s:='   Delphi   ';
s := Trim(s);

تم تعديل هذه المشاركة بواسطة bashmohandes في 31 أغسطس 2005 في 19:05

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#4
bashmohandes كتب:
أعتقد أن الكود الثاني سيحذف جميع المسافات حتى و لو كانت في وسط الstring و ليست في أوله أو في آخره

أخي bashmohandes

كلام صحيح لو كانت String تحتوي على كلمات

لكن أخي waeldalol لم يقل جملة

و إنما كلمة واحدة

يبقى مسألة السرعة :D

Trim أسرع من StringReplace

تم تعديل هذه المشاركة بواسطة DeltaAziz في 31 أغسطس 2005 في 20:02

d4baa0.gif
#5

اخي DeltaAziz يبدو اني اخطأت في التعبير

المقصود هو جملة و ليس كلمة واحدة و إلا لا معنى من وجود بداية و نهاية الكلمة

هذا مثال اعددته في الثلاثة حالات مع المقارنة بين الاوقات في كل من الحالات التالية

يضع في بداية و نهاية الجملة 10000 فراغ و يقوم بحذفها

جربو و اعطوني النتائج و لكن اعند اول مرة من تشغيل البرنامج وليس بعد عدة محاولات

نتائج حاسبي

وقت التعبئة: 437

وقت حذف الفراغات Wael Dalol = 406

وقت حذف الفراغات bashmohandes = 0 :(

اظن ان هناك مشكلة في الكود الذي كتبته و لم استطع حلها

يا ترى من الفائز :blink: :lol:

حذف الفراغات.zip

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#6
اقتباس
اظن ان هناك مشكلة في الكود الذي كتبته و لم استطع حلها

طبعا المقصود هو DeltaAziz

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#7

أنت كتبت

Stringreplace(S,' ','',[rfReplaceAll]);

لكن الأصح هو

S:=Stringreplace(S,' ','',[rfReplaceAll]);

StringReplace Function و ليست Procedure

المهم مقصودك هو جملة و ليس كلمة إذن StringReplace لا تنفع لأنها تغير كل الفراغات بلاشي

و كما كتبت Trim أسرع :D

d4baa0.gif
#8

معك حق انا ما انتبهت انه Function

و استخدمته على انه Procedure

بس Trim معمول 100%

هل رأيت الكود تبع التابع Trim يعني معمول بطريقة رائعة جدا

هو الواحد شلون ممكن يوصل الى كتابة كود بافضل طريقة ممكنة

هل بالتجريب :rolleyes:

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#9

وهذا مثال أخر

function trim(const Search: string): string;
var
   Index: byte;
begin
   Index:=1;
   while (Index <= Length(Search)) and not (Search[Index] in BlackSpace) do
      Index:=Index + 1;
   Result:=Copy(Search, Index, 255);
   Index:=Length(Result);
   while (Index > 0) and not (Result[Index] in BlackSpace) do
      Index:=Index - 1;
   Result:=Copy(Result, 1, Index);
end;

لتسريع الدوال أكثر يمكن الجوء لكتابتها بلغة التجميع

d4baa0.gif
#10

لا اريد التعمق كثيرا في هذا المجال التابع Trim وفى و اكثر

ولكن في حال التعامل مع قواعد بيانات هل يجب علي ان اعمل Trim على كل حقل

قبل الحقظ

ام هناك طريقة افضل لمنع ادخال فراغات في بداية الكلمة و نهايتها

اذ لا معنى لوجود فراغات في بداية و نهاية اي بيانات مخزنة

فاريد حذف الفراغت من البداية و النهاية اذا اخطأ المستخدم و ادخل اي فراغ

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…