![]() |
|
فصل كلمتين موجودان في حقل - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : فصل كلمتين موجودان في حقل (/showthread.php?tid=5139) الصفحات:
1
2
|
فصل كلمتين موجودان في حقل - FARID - 14-04-2013 السلام عليكم هل يمكنني فصل الأسم اللقب عن بعضهما موجودان مع بعض في حقل واحد ليكون الأسم في حقل منفصل و اللقب في حقل منفصل جزاكم الله كل الحير فصل كلمتين موجودان في حقل - NOURI - 15-04-2013 سلام عليكم استعمل الكود التالي var s : string ; begin s:= 'delphiarabe' ; insert ( ' ' ,s,7); form1.Caption := s; فصل كلمتين موجودان في حقل - makhlouf - 15-04-2013 و عليكم السلام و رحمة الله تعالى و بركاته: أخي مجرد محاولة يمكن أن تنفعك أو تتخذهامنطلقا لتجد الحل الصحيح و تفيدنا به. أخي مثالي هذا في حالة أسماء ثنائية أي الاسم و اللقب و لكن الاشكال هو في حالة اللقب مركب أو الاسم مركب نرجو من الخبراء إفادتنا به. كود : procedure TForm1.Button1Click(Sender: TObject);
var s,k:string;
i,j:integer;
begin
s:='';
i:=1;
j:=0;
for i:=1 to length(edit1.Text) do
begin
if ((edit1.Text[i])<>#32) and (i>j) then
begin
s:=s+edit1.Text[i] ;
end
else
begin
j:=i+1;
k:=k+edit1.Text[j] ;
end;
end;
edit2.Text:=s;
edit3.Text:=k;
end;الشرح: edit1: فيها الاسم و للقب الاصلي edit2: لحمل اللقب بعد الفصل edit3: لحمل الاسم بعد الفصل button1: لتنفيذ الاستعلام بالتوفيق أخي فصل كلمتين موجودان في حقل - Najy Ibraheem - 15-04-2013 السلام عليكم... إذا كان الاسم يتكون فقط من الاسم الأول و اللقب و بينهما فراغ فيمكن استعمال الدالة Pos لإيجاد الفراغ و فصل الجزأين. كمثال: اكتب الإجراء التالي في القسم implementation: كود : procedure SeparateNameParts(AFullName: string; var AFirstName, ALstName: string);
var
SpcPos: Integer;
begin
AFullName := Trim(AFullName);
if AFullName = '' then begin
AFirstName := '';
ALstName := '';
end
else begin
SpcPos := Pos(' ', AFullName);
if SpcPos = 0 then begin
AFirstName := AFullName;
ALstName := '';
end
else begin
AFirstName := Copy(AFullName, 1, SpcPos - 1);
ALstName := Copy(AFullName, SpcPos + 1, Length(AFullName) - SpcPos);
end;
end;
end;و بافتراض أن لدي 3 مكونات TEdit (حيث Edit1 للاسم الكامل، و Edit2 للاسم الأول، و Edit3 للقب) فإننا نستدعي الدالة السابقة هكذا: كود : procedure TForm1.Button1Click(Sender: TObject);
var
FirstName, LastName: string;
begin
SeparateNameParts(Edit1.Text, FirstName, LastName);
Edit2.Text := FirstName;
Edit3.Text := LastName;
end;*** لكن المشكلة - كما أشار أخونا makhlouf - أن هناك العديد من الأسماء المركبة (الاسم الأول أو اللقب) مثل نور الدين و نجم الدين و نور الهدى... إلخ. بعض الناس يكتب الجزأين متلاصقين (نورالدين) و البعض يكتبهما منفصلين بفراغ (نور الدين) و أحياناً وجود الفراغ يكون إجبارياً كما في نجم الدين (لا يمكننا كتابته هكذا: نجمالدين، دون فراغ بين الجزأين). *** نصيحتي لصاحب السؤال: إذا كانت الأسماء ستخزن في جدول قاعدة بيانات فاجعل للاسم أكثر من خانة (حسب حاجة برنامجك) مثلاً حقل للاسم و حقل للقب (الاسم الثنائي) أو حقل للاسم و حقل لاسم الأب و حقل للقب (الاسم الثلاثي) أو حقل للاسم و حقل لاسم الأب و حقل لاسم الجد و حقل للقب (الاسم الرباعي) و طبعاً سيكون لديك خانات مقابلة لها في نوافذ برنامجك. و يمكنك بسهولة الحصول على الاسم الكامل (كنص واحد) عن طريق إنشاء استعلام (Query في Access أو View في SQL Server). مثلاً نفرض أن اسم الجدول هو Students و حقل الاسم الأول هو FirstName و حقل اسم الأب هو FatherName و حقل اللقب هو LastName. إذن ستكون جملة الاستعلام كالتالي: كود : SELECT Students.*, Student.FirstName + ' ' + Student.FatherName + ' ' + Student.LastName AS FullName FROM Studentنرجو الاستفادة و السلام. فصل كلمتين موجودان في حقل - عبد الهادي - 15-04-2013 السلام عليكم ورحمة الله ليسمح لي الاخوة بالتطفل على موائدكم الطيبة لنفرض ان لدينا الاسم التالي سيف الدين نصر الاسلام طرح الفكرة البحث عن دالة عكسية البحث عن الفراغ 1 - البحث عن اخر فراغ 2- البحث عن عدد الفراغات مثلا عندنا اريعة 3-الغاء الغراغين الثالث او الثاني 4- وضع قائمة اسماء في ملف مرجعي وهذه مجرد فكرة قد تنفع من يهتم بالموضوع والله الموفق فصل كلمتين موجودان في حقل - m.rabee - 16-04-2013 السلام عليكم كود : var
myList : TStringDynArray;
I : Integer;
begin
mylist := (SplitString(Edit1.Text,' '));
for I := 0 to Length(mylist)-1 do
showMessage(mylist[i]);
end;يمكن استخدام رموز اخرى بدل المسافة مثلاً كود : mylist := (SplitString(Edit1.Text,';'));لاتنسى اضافة كود : Types , StrUtilsفصل كلمتين موجودان في حقل - FARID - 16-04-2013 الله يجزيكم كل خير ويجعلها في ميزان حسناتكم شكرا لكم مرة اخرى Najy Ibraheem , عبد الهادي , m.rabee ,NOURI , makhlouf فصل كلمتين موجودان في حقل - عبد الهادي - 17-04-2013 وانت ايضا نشكرك اخي الكريم فريد لطرحك المشكلة للحل اخي الكريم m.rabee يطالبني دلفي بتعريف الوحدة Split عند السطر mylist := (SplitString(Edit1.Text,' '));
فبالرجاء ان ترشدوني الى تعرفيها فقد كللت محاولاتي بالفشل فصل كلمتين موجودان في حقل - m.rabee - 22-04-2013 هل اضفت كود : StrUtilsفصل كلمتين موجودان في حقل - عبد الهادي - 22-04-2013 بارك الله فيكم اخي الكريم نعم فعلت ماقلت لي بالحرف يعني اضفته لكنه يطالبني بتعريف الوحدة Split عند السطر mylist := (SplitString(Edit1.Text |