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

أسئلة عن الملفات والنصوص

مغلق
بدأه أبو محمد الهذلي في 10 يونيو 2002 · 9 رد · 665 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كيف أعرف عدد الكلمات في الـ Memo ؟

كيف أعرف انتهاء الفقرة ؟ طبعاً هي التي بضغط Enter ؟

وكيف أغير امتداد الملف برمجياً ؟ طبعاً بدون تغيير لخصائصة وهيئته .

وكيف أعرف إمتداد أي ملف ؟ يعني ما هي الدالة التي تعطيني امتداد الملف ؟

وجزاكم الله خيراً

#2

يمكنك عمل ذلك أخي

 
procedure TForm1.Button1Click(Sender: TObject);
var
s : String;
i, k, counter   : Integer;
begin

    i := 0;
    counter := 0;

    s :=  Memo1.Lines.GetText;
    i := Length(s);

    for k := 0 to i do
    begin
      if(s[k] = ' ') then
            Counter := Counter + 1

      else if((s[k] = #13) and (s[k+1] = #10))  then
            Counter := Counter + 1;

    end;

        i := i - (2 * Memo1.Lines.Count);
        ShowMessage('letters = ' +IntToStr(i));
        ShowMessage('Word = '+IntToStr(Counter));
end;

طبعاً أخي ابو محمد انا لست خبير في الدلفي فلربما كانت هناك دوال

خاصة بذلك و لكني بحثت ولم اجد :)

طبعاً شرطي هنا لعد الكلمات هو إذا كانت هناك مسافة و إذا كان

هناك سطر جديد فعلامت #13 , #10 تعني سطر جديد كما تعلم.

مع تحياتي ,,,

#3

بالنسبة لكيف تعرف نهاية السطر ( ظغط Enter ):

هو بالشرط:

 else if((s[k] = #13) and (s[k+1] = #10))  then

و بالنسبة لتغيير إمتداد الملف يمكنك إذا اردت تغيير talal.txt إلى

talal.dat يمكنك ان تنشئ ملف بالاسم talal.dat و تنقل المعلومات

الموجوده في talal.txt فيها و من ثم تحذف الملف talal.txt .

أنا معرفة امتداد الملف فأكيد ستوفر دلفي ذلك و لكني لا اعلم كيف:o

أتمنى ان يكون ذلك هو المطلوب ؟

مع تحياتي ,,,

#4

السلام عليكم

بالنسبه للسؤال الاول جرب هذا

procedure TForm1.Button1Click(Sender: TObject);
var
text_len,line_count,memowordscount:integer;
begin
line_count:=Memo1.Lines.Count-1;
text_len:=Memo1.GetTextLen;
memowordscount:=text_len-(line_count*2);
//  line_count*2 ,  it will not count #10#13
ShowMessage(IntToStr(memowordscount));
end;

السؤال الثالث

استعمل الداله function ChangeFileExt(const FileName, Extension: string): string;

في عليها مثال في الـ help اطلع عليه .

السؤال الرابع

استعمل

function ExtractFileExt(const FileName: string): string;

راجع الــ help ستجد العديد من الدوال في file name utilities .

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

السلام عليكم ورحمة الله وبركاته

أشكركما على الجواب والاهتمام والمحاولة

نعم

Memo1.GetTextLen =Length(Memo1.Lines.GetText)

ولكني لا أريد عدد الحروف ( الرموز ) في المفكرة.

أخي طلال محاولتك لعدد الكلمات موفقة ولكن

1/ إذا لم تكن بعد الكلمة الأخيرة مسافة أو أدخل لا تحسب الكلمة الأخيرة

2/ إذا كررت مسافة وأدخل تكثر الكلمات وليست هناك كلمات .

3/ لم أفهم لماذا i := i - (2 * Memo1.Lines.Count);

أستاذي Tmaaa كل الدوال التي ذكرتها نفعت معي والحمد لله وجزاك الله خيراً

وهذا الإجراء الذي ذكرته يعطي عدد الأحرف ولا يعطي عدد الكلمات

ولكن لم أفهم لماذا memowordscount:=text_len-(line_count*2);

ما علاقة 2 بهذه العملية

أعتذر عن كثرة الأسئلة مشكلتي أني ضعيف في اللغة الانجليزية

#6

السلام عليكم

المعذرة اخي العزيز لم انتبه انك كنت تقصد عدد الكلمات وليس عدد الاحرف :o :o :o :'( :'( :'( .

ساحاول -ان شاء الله- اشوف لك حل لهذا السؤال .

بالنسبه للعدد 2 لانه لدينا 10# و 13# عند عمل سطر جديد في الــ Memo .

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

السلام عليكم

جرب هذا الكود

الداله الاولي ماخوذه من رد الاخ محمد نسمان في احد المواضيع السابقه مع بعض الاضافات .

//*********************************************
// Thanks Nasman for this function :D
function Separate_String(Str :string):integer;
var
  I,count: Integer;
begin
  result:=0;
  while Pos(' ',Str) >0 do
  begin
    Str:=Trim(Str);
    I := Pos(' ',Str);
    inc(result);
    Str:=Trim(Copy(Str,I+1,Length(Str)-I +1));
  end;
inc(result);
end;
//**********************************************
procedure TForm1.Button1Click(Sender: TObject);
var
i,words_count:integer;
begin
  words_count:=0;
  for i:=0 to Memo1.Lines.Count-1 do
  begin
   words_count:=words_count+Separate_String(Memo1.Lines.Strings);
  end;
  ShowMessage(inttostr(words_count));
end;

ريما تكون هناك طريقة افضل , اترك لك المحاوله .....

اكرر اعتذاري عن الخطا الفادح في ردي الاول .....

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#8

وعليكم السلام ورحمة الله وبركاته

أشكرك كثيراً يا أستاذ tmaaa وجزاك الله خيراً

وما في حاجة للاعتذار نحن نبحث عن أعذار لك ولو من تحت الأرض

وعين الرضى عن كل عيبٍ كليلة # ولكن عين السخط تبدي المساويا

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

وأنا الآن أفكر في دالة أخرى فانتظرني وتحملني

وجزاك الله خيراً (gift)

#9

السلام عليكم

عدل الداله كالاتي

function Separate_String(Str :string):integer;
var
  I,count: Integer;
begin
  result:=0;
  if(str='') then
   exit;
  Str:=Trim(Str);
  while Pos(' ',Str) >0 do
  begin
    I := Pos(' ',Str);
    inc(result);
    Str:=Trim(Copy(Str,I+1,Length(Str)-I +1));
  end;
  inc(result);
end;

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#10

جزاك الله ألف خير وبارك فيك(gift)

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

(f) (f)

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

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