المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: البحث عن كلمة او نص كامل موجود في ملف نصي
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
sssalehooo
السلام عليكم ورحمة الله وبركاتة
اولا يا اخواني لم استطع التسجيل منذو يومين بسبب التعقيدات في الكود السري حيث تظهر لي رسالة خطاء في الكود رغم اني متاكد من كتابة الكود صحيحة . وليست اول مرة تمر علية في بعض المنتديات . الان دخلت عن طريق كود كلة ارقام فقط لايوجد فية حروف قمت بالبحث عنة . اعتقد اصلا ليس لة داعي تضعون هذه الاكواد المعقدة .. مالفائده منها؟؟
هذة نصيحتي .. ولكم تحياتي


اما سؤالي :قمت بتحميل برنامج دلفي7 ولكني لم اجد
Form Wizard
ولا Database في القائمة
كيف احصل عليها واضافتها ؟؟
السؤال الثاني : ابي اصصم برنامج يقوم بالبحث عن كلمة او نص كامل موجود في ملف نصي في العمود الاول ويعطيني الناتج من العمود الثاني بحيث يتكون الملف النصي من عمودين مثلا عمود عربي والثاني انجليزي . السلفة اني ابي اصمم قاموس عربي انجليزي لترجمة النصوص وليست الكلمات فقط .
ارجو ان اجد اجوبة لاسالتي لديكم .. ولكم اجمل تحية
عاد حنا مبتدئين الله يعينكم علينا .. تحملونا شوي
sssalehooo
ولا احد رد ؟؟؟ شكلي ابعتزل الدلفي واشوفلي لغة ثانية ..
TopSec
إقرأ هذا الموضوع

http://www.arabteam2000-forum.com/index.php?showtopic=158043
عبدالمجيد سليمان

السلام عليكم

أجيبك على قدر معرفتي ,,

إقتباس
السؤال الثاني : ابي اصصم برنامج يقوم بالبحث عن كلمة او نص كامل موجود في ملف نصي في العمود الاول ويعطيني الناتج من العمود الثاني بحيث يتكون الملف النصي من عمودين مثلا عمود عربي والثاني انجليزي .


يوجد مكون لا يحضرني اسمه الآن ,,

مكون للبحث

إبحث عنه قليلا وإن شاء الله تجدهـ ,,

بالتوفيق
حسين طي
السؤال الأول
هناك أخي أكثر من إصدارة للدلفي7
Personal
هدفها الوافدين الجدد لدلفي وليس المطورين ولا تدعم برمجة قواعد البيانات ولا أية ميزة متقدمة لدلفي
وهناك
Professional Studio , Enterprise Studio , Architect Studio ولكل منها مستوا

هذا كود يقوم بالبحث عن نص ويعيد موقعه
للأمانة إسم المولف حسب الموقع : P. Below

كود
[font="Courier New"][b]function [/b]ScanFile([b]const [/b]FileName: [b]string[/b];
  [b]const [/b]forString: [b]string[/b];
  caseSensitive: Boolean): Longint;
[/font][font="Courier New"][b]const
  [/b]BufferSize = $8001;  [/font][font="Courier New"][color="#000080"][i]{ 32K+1 bytes }
[/i][/color][/font][font="Courier New"][b]var
  [/b]pBuf, pEnd, pScan, pPos: PChar;
  filesize: LongInt;
  bytesRemaining: LongInt;
  bytesToRead: Integer;
  F: [b]file[/b];
  SearchFor: PChar;
  oldMode: Word;
[/font][b][font="Courier New"]begin
  [/font][/b][font="Courier New"][color="#000080"][i]{ assume failure }
  [/i][/color]Result := -1;
  [b]if [/b](Length(forString) = 0) [b]or [/b](Length(FileName) = 0) [b]then [/b]Exit;
  SearchFor := [b]nil[/b];
  pBuf      := [b]nil[/b];
  [/font][font="Courier New"][color="#000080"][i]{ open file as binary, 1 byte recordsize }
  [/i][/color]AssignFile(F, FileName);
  oldMode  := FileMode;
  FileMode := 0;    [/font][font="Courier New"][color="#000080"][i]{ read-only access }
  [/i][/color]Reset(F, 1);
  FileMode := oldMode;
  [b]try [/b][/font][font="Courier New"][color="#000080"][i]{ allocate memory for buffer and pchar search string }
    [/i][/color]SearchFor := StrAlloc(Length(forString) + 1);
    StrPCopy(SearchFor, forString);
    [b]if not [/b]caseSensitive [b]then  [/b][/font][font="Courier New"][color="#000080"][i]{ convert to upper case }
      [/i][/color]AnsiUpper(SearchFor);
    GetMem(pBuf, BufferSize);
    filesize       := System.Filesize(F);
    bytesRemaining := filesize;
    pPos           := [b]nil[/b];
    [b]while [/b]bytesRemaining > 0 [/font][b][font="Courier New"]do
    begin
      [/font][/b][font="Courier New"][color="#000080"][i]{ calc how many bytes to read this round }
      [/i][/color][b]if [/b]bytesRemaining >= BufferSize [/font][font="Courier New"][b]then
        [/b]bytesToRead := Pred(BufferSize)
      [/font][font="Courier New"][b]else
        [/b]bytesToRead := bytesRemaining;
      [/font][font="Courier New"][color="#000080"][i]{ read a buffer full and zero-terminate the buffer }
      [/i][/color]BlockRead(F, pBuf^, bytesToRead, bytesToRead);
      pEnd  := @pBuf[bytesToRead];
      pEnd^ := #0;
      pScan := pBuf;
      [b]while [/b]pScan < pEnd [/font][font="Courier New"][b]do
      begin
        if not [/b]caseSensitive [b]then [/b][/font][font="Courier New"][color="#000080"][i]{ convert to upper case }
          [/i][/color]AnsiUpper(pScan);
        pPos := StrPos(pScan, SearchFor);  [/font][font="Courier New"][color="#000080"][i]{ search for substring }
        [/i][/color][b]if [/b]pPos <> [/font][b][font="Courier New"]nil then
        begin [/font][/b][font="Courier New"][color="#000080"][i]{ Found it! }
          [/i][/color]Result := FileSize - bytesRemaining +
            Longint(pPos) - Longint(pBuf);
          Break;
        [b]end[/b];
        pScan := StrEnd(pScan);
        Inc(pScan);
      [b]end[/b];
      [b]if [/b]pPos <> [b]nil then [/b]Break;
      bytesRemaining := bytesRemaining - bytesToRead;
      [b]if [/b]bytesRemaining > 0 [/font][font="Courier New"][b]then
      begin
        [/b]Seek(F, FilePos(F) - Length(forString));
        bytesRemaining := bytesRemaining + Length(forString);
      [b]end[/b];
    [b]end[/b]; [/font][font="Courier New"][color="#000080"][i]{ While }
  [/i][/color][/font][font="Courier New"][b]finally
    [/b]CloseFile(F);
    [b]if [/b]SearchFor <> [b]nil then [/b]StrDispose(SearchFor);
    [b]if [/b]pBuf <> [b]nil then [/b]FreeMem(pBuf, BufferSize);
  [b]end[/b];
[b]end[/b]; [/font][font="Courier New"][color="#000080"][i]{ ScanFile }


// Search in autoexec.bat for "keyb" with case insensitive
// In der autoexec.bat nach "keyb" suchen

[/i][/color][b]procedure [/b]TForm1.Button1Click(Sender: TObject);
[/font][font="Courier New"][b]var
  [/b]Position: integer;
[/font][font="Courier New"][b]begin
  [/b]Position := ScanFile('c:\autoexec.bat', 'keyb', False);
  ShowMessage(IntToStr(Position));
[b]end[/b];[/font]


بالنسبة لموضوع القاموس لا أظن أن هذه الطريقة مجدية ربما إذا إستخدمت قواعد البيانات أفضل
أو حاول إستخدام TStringList فهي أسهل للبحث والتحميل من ملف ولكن
أيضا أنت تقول أن تأخذ كلمة من عمود ونظيرتها من أخر طيب ماذا لو كان للكلمة أكثر من معنى هل تأخذ عمودين أو ثلاث
البحث سوف يكون أطول وأكثر تعرضا للخطأ

هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.