تعديل الفراغات بين الكلمات في جملة
#1
السلام عليكم

كيف كتابة كود يجعل الفراغات بين كلمات جملة مدخلة في edit بمقدار فراغ واحد
فمثلا لو أدخل المستعمل كلمة وترك فراغين أو أكثر (مسافة) وعند الضغط على زر يرجع مقدار الفراغ إلى مسافة واحدة

وشكراً
الرد
#2
و عليكم السلام

موضوع ذات صلة:
http://www.delphi4arab.net/forum/showthr...p?tid=4561
يمكنك إستعمال خاصية commatext في Tstringlist ثم توظف الكلمات المختارة كما تشاء

بالتوفيق
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
الرد
#3
وعليكم السلام ورحمة الله وبركاته
إقتباس :فمثلا لو أدخل المستعمل كلمة وترك فراغين أو أكثر (مسافة) وعند الضغط على زر يرجع مقدار الفراغ إلى مسافة واحدة
اضن انه من الاحسن ان تجعل الـEdit لا تقبل مسافتين متتاليتين من الاول .
تفضل هذا الكود الدي يمنع من إدخال مسافتين متتاليتين :
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 
if Edit1.Text <> '' then
    
if (edit1.Text[Length(edit1.Text)] = #32) and (Key=#32) then
        
Key:=#0;
end; 
شرح الكود :
عندما يضغط المستخدم على مفتاح من لوحة تقوم الEdit بختبار ماذا ضغط المستخدم إذا ضغط مفتاح المسافة تدهب تتاكد بان النص قبل الضغط كان لا توجد به مسافة في الاخير .....
#32 تعني ' '
#0 تعني null كانه لم يضغط شيئ
راجع : Table Ascii

ملاحظة : يمكنك تطوير الكود السابق
بالتوفيق ,,
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#4
شكرا جزيلا

هل من الممكن أن توضح وتشرح لي الخاصية commatext وTstringlist

abdelmalek كتب :ضن انه من الاحسن ان تجعل الـEdit لا تقبل مسافتين متتاليتين من الاول .

طريقة مميزة جزاك الله خيرا
لكن بفرض أننا نسخنا من مكان آخر نص ووضعناه في edit وكان في هذا النص فراغات أكثر من اللازم
ما الحل؟

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

وبارك الله فيكم
الرد
#5
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
Var
  
T: TextFile;
  
L,P: String;
  
S: TStringList;
begin
  AssignFile
(T,'C:\Fichier.txt');
  
Reset(T);
  
S := TStringList.Create;
  
Readln(T,L);
  
S.CommaText := L;
  
P:=S[0];
  
showmessage ('كلمة رقم 1'+'='+P);
  
P:=S[1];
  
showmessage ('كلمة رقم 2'+'='+P);
  
CloseFile(T);
end; 

لاحظ ما يعطيك إياه showmessage
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
الرد
#6
بارك الله فيك
طريقة رائعة لتقسيم الجملة
مشكور جدا
وحاولوا معي توظيفها في سؤالي
الرد
#7
ممكن شرح لهذه الكلمات:
المتغيرات:
TextFile
TStringList

الدوال:
AssignFile
Reset
CloseFile

الخصائص:
Create
CommaText


مع العلم أن البرنامج بقي محتفظا بالكلمات الأولى فقط عند تغيير الكلمات
الرد
#8
وعليكم السلام ورحمة الله وبركاته
البحث والاستبدال StringReplace فراغين بواحد.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#9
السلام عليكم

مازلت أتخبط حول حل هذا التمرين

لكن ساعدني أحد الأصدقاء وأعطاني كود بلغة سي بلس بلس


PHP كود :
private void button1_Click(object sender, EventArgs e)
        {
            
string res = "";
            
textBox1.Text = "_\t___    _ _\nnnn";
            if (
textBox1.Text!="")
            {
                
textBox1.Text = textBox1.Text.Replace("\t", " ");
                
textBox1.Text = textBox1.Text.Replace("\n", " ");
                
string[] str = textBox1.Text.Split(' ');
                foreach (
string partie in str)
                {
                    if (
partie!="")
                    {
                        
res += partie + " ";
                    }
                }
                
MessageBox.Show(res.Trim());
            }
        } 
هل من الممكن ترجمته في دلفي

مع العلم أن split تعني تقسيم الجملة حسب الفراغات
الرد
#10
على السريع :

كود :
edit1.Text:=StringReplace(edit1.Text,' ', ' ', [rfReplaceAll]);
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم