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

threads او temp

بدأه بركان مسعود في 23 أبريل 2010 · 4 رد · 1,239 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي مشكلة اردت طرحها على اخواني بعدما استشرت اصدقائي المقربين زكيري و علي علوي المهم باختصار شديد اردت معرفة ما هي الطريقة السليمة والسريعة لمشروع يستخدم قاعدة بيانات ضخمة هل هي threads اوtemp (عمل ملف يقوم بالبحث و المقارنة مع القاعدة ) علما انه في الحالة العادية( بدون هذه الطرق) البرنامج يتوقف( ذاكرة غير كافية) سلام

procedure TForm1.Button3Click(Sender: TObject);
var
VNmae,VFname,VNA,NF:String;
fileData : TStringList;
   lines,i : Integer;
   z,y:String;
begin
  Query1.SQL.Clear;
  Query1.SQL.Text:='select NOM,PRENOM,NO FROM CLIENTS';
  Query1.Open;
  Query1.First;
  while not Query1.Eof do
 begin
 try
  VNmae:= Query1.FieldByName('NOM').AsString;
  VFname:= Query1.FieldByName('PRENOM').AsString;
  VNA:= Query1.FieldByName('NO').AsString;
  NF:=(VNmae+VFname);
  VNmae:=copy(NF,0,pos(' ',NF));
  VFname:= copy (NF,pos(' ',NF)+1,length(NF));
  //ShowMessage(VNmae );
  begin
  fileData := TStringList.Create;
  fileData.LoadFromFile('Test.txt');
  lines := fileData.Count;
    for i := 0 to lines-1 do
    begin
       y:=fileData;
       z:=copy(y,12,pos(' ',y));
        SetLength(y, 99);
        // ShowMessage(Y);
    if ((( SearchAll(z,VNmae,1)) >0) AND ( SearchAll(y,VFname,1)>0))then
      begin
        Memo2.Lines.Add(Z+y);
        Label3.Caption:= IntToStr(Memo2.Lines.Count) + ' lignes trouvées';
        Memo1.Lines.Add(y[65]);
      end;
    end;
  end;
  Except
  end;
  Query1.Next;
  end;
  end;

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 23 أبريل 2010 في 13:50

تريد الفوز إضغط هنا

اشِهِدي يَا سَمَـا وَاكْتُبَنْ يا وُجـودْ

إنَّـنَـا للِحـمَـا سَنَكُونُ الجُـنُـودْ

فـنَـزيحْ البَـلاَ وَنَـفُـكُّ الْقُيُـودْ

ونَنيلُ الـرِّضـا مِنْ وَفَّى بِالعْهُـودِ

الشيخ عبد الحميد ابن باديس

#2

اهلا اخي مسعود كما قلت لك على الاقل استعمل احد الطريقتين .

وانا افضل جدول من نوع TMP تقوم بشحنه او ملأه بمحتو ملفك النصي ثم تستعمل استعلامات للبحث في هدا الاخير و بذلك سهولت في تحدث القاعدة

كما هناك الكثير من الاخطاء في كودك .اروجا ان تراجعه.

وخاصه وضع شحن الابجكت بحتوى الملف في الحلقة

شكرا يللتوفيق

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 23 أبريل 2010 في 13:51

#3

السلام عليكم...

ما المقصود بـ "ضخمة" ؟ يعني كم عدد السجلات؟ و ما هو حجم الذاكرة؟

لا أعرف ما هو البرنامج، لكن هناك بعض الطرق البسيطة و لكنها فعالة في كثير من الأحيان:

1. لا تستعمل مكونات TTable أو TADOTable لأنها قد تعمل على تحميل كامل الجدول في الذاكرة، بل استعمل مكونات TQuery أو TADOQuery مع وضع جمل SQL (جمل SELECT) تجلب لك فقط السجلات و الحقول التي تحتاج إليها.

2. لا تستعمل الوظيفة Last لأي DataSet إلا للضرورة، لأن ذلك قد يؤدي إلى محاولة تحميل كافة السجلات في الذاكرة.

3. عند تحديث مجموعة كبيرة من السجلات لا تستعمل حلقة للمرور عليها سجلاً بسجل، بل استعمل Query أو TADOCommand لتحديث السجلات باستعمال جملة UPDATE أو DELETE ... إلخ.

4. لا تضبط الخاصية Active لأي DataSet على True (لفتح الـ DataSet) أثناء التصميم، بل استعمل الخاصية Active أو الوظيفة Open أثناء التنفيذ (في الكود)، و لا تفتح أي DataSet إلا عند الحاجة إليها، ثم قم بإغلاقها عندما لا تعود في حاجة إليها.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#4

السلام عليكم

شكرا لك أخي عبد العالي وأشكر كذلك اخي ناجي ربما لم تفهم سؤالي لكن لا عليك أنا لم استخدم في حياتي TABLE لأنني أعلم مساوئها شكرا لكم على تواصلكم معي لقد علمت اين يوجد الخلل وقد تم بعون الله تصحيحه بكل بساطة انا انشئ OBJECT داخل الحلقة ولا احرره ، فالحل هو اخراجه من الحلقة وتحريره عندما ننتهي من استخدامه في (FINALLY) شكرا

تريد الفوز إضغط هنا

اشِهِدي يَا سَمَـا وَاكْتُبَنْ يا وُجـودْ

إنَّـنَـا للِحـمَـا سَنَكُونُ الجُـنُـودْ

فـنَـزيحْ البَـلاَ وَنَـفُـكُّ الْقُيُـودْ

ونَنيلُ الـرِّضـا مِنْ وَفَّى بِالعْهُـودِ

الشيخ عبد الحميد ابن باديس

#5
fileData := TStringList.Create;
  fileData.LoadFromFile('Test.txt');

ليس هذا حلا اخي ماسي messi راجع نفسك وقل كم مرة اقرا الملف النصي و كم مرة احرره :wacko:

شكرا

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 23 أبريل 2010 في 16:14

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