در اينجا ميخواهيم شما را با نحوه چگونگي کار با فايل ها و طريقه جستجو کردن کلمه مورد نظر خود در درون فايل ها در ,ويژوال سي را براي شما بيان کنيم.در اين مبحث که ما فايل خود را از کلاس CFILE مشتق نموديم خواهيم توانست رشته هاي خود را مرتب نموده ذخيره کرده و بر اساس اعداد جستجو کنيم. در VC چندين کلاس براي کار با فيل ها وجود دارند ولي در اينجا ما ميخواهيم با اين کلاس برنامه خود را شروع کنيم. خوب براي شروع کار از کلاس CFILE يک فايل را ايجاد کرده وبعد از انتخاب مسير و نوع فلگ ,برنامه را جهت ايجاد فايل تست مينماييم.
خوب حال نوبت به قرار دادن رشته هاي مورد نظر در ان مي باشد. اما قبل از آن ميخواهم بدانم که از خط زير چه استنباط ميکنيد؟
;()MyFile.SeekToEnd
;" " +m_EDIT_IDNumber=m_EDIT_IDNumber
;(m_EDIT_IDNumber=m_EDIT_IDNumber.Left(5
بله درست است , ماموقعيت فايل را به انتهاي آن بردهايم چرا که بتوانيم داده هاي خود را تا انتهاي فايل بچينيم.خط بعد ميگويد که اولين داده ما که عدد هم هست 5 کاراکتر بعد از آن راخالي قرار بده ,چون اينگونه ما ترتيب قرار دادن رشته ها را در فايل انتخاب نموده ايم . حال ميتوانيم به دلخواه بعد از عدد مورد نظر که 5 کاراکتر بعد از آن خالي است يک رشته ديگر قرار دهيم و الي آخر... خط بعدي هم ميگويد که از قسمت چپ اولين وارده ما 5 کاراکتر خالي است.به همين ترتيب تا آخر ميتوانيم 5 تا 5تا يا بيشتر فضاي خالي بين هر داده وارد کنيم. ما در اينجا براي نحوه جستجو اين کار را انجام داده ايم. بعد از انتخاب فيلد ها به دلخواه و نحوه قرار گيري آنها در فايل مورد نظر ميتوانيم ان را ذخيره کنيم با عمل زير:
........)MyFile.Write
در مرحله بعد بايد بتوانيم در داخل فايل خود به جلو ويا به عقب حرکت کنيم. مانند پايگاه داده ها. براي اين کار ما بايد طول فايل را گرفته وچون موقع نوشتن در فايلمان تعداد کاراکتر ها را 43 قرار داده ايم , بايد انرا بر 43 تقسيم نماييم . مقدار برگشتي اين حاصل برابر با آخرين رکورد ماست. بعد از آن موقعيت فايل را به ابتداي ان اورده و ارگومان دوم ان را هم برابر با CFile::current قرار ميدهيم .يعني ميخواهيم بگوييم که به فايل مورد نظر برگردد که ما ميخواهيم. سپس به اندازه 43 بافر را از آن خوانده. براي اينکه مبدل به رشته کنيم بافر مورد نظر را در STRING قرار ميدهيم و در پايان هم موقعيت قرارگيري داده هايمان در فايل را به برنامه ميگوييم:
اما براي جستجوي خودمان چي؟ خوب در اينجا هم به صورت باينري ما SEARCH ميزنيم .طول فايل را مانند قبل گرفته ومقدار برگشتي آن برابر با انتهاي فايل ميباشد, در خط زير اين روش جستجو را باينري مي ناميم که سرعت بالايي را هم دارد و عمل جستجو با حداقل افت زمان انجام ميگيرد:
;Looking=Starting+(Ending-Starting)/2
در اينجا Ending اخر فايل و Starting نقطه شروع فايل است. الگوريتم به اين صورت است که فايل را به دو قسمت کرده و رشته اي را که در قسمت چپ فايل ما باشد به هنگام پيدا کردن ديگر قسمت راست فايل را جستجو نميکند و اين از علل سرعت بالاي آن است. بعد از آن موقعيت قرار گيري در فايل از محل Looking به اندازه 43 بافر ميشود و از ابتدا قرار ميگيرد. حال با دستور IF ميگوييم , اگر مقدار بافر فايل ما از اولين فيلد بزرگتر بود موقعيت فايل به آخر بيايد در غير اين صورت به نقطه صفر يا همان ابتداي فايل برود .