Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Файлдармен жұмыс істейтін объектілі модель
Delphi ортасында TStream абстрактылы класы пайдаланылады (мә ліметтер ағ ыны), ол объектілермен жұ мыс істегендегідей файлдар жұ мысы ү шін негіз болады. Объектілер жағ дайында ақ парат тасымалдаушы дискілік файл, таспалық тасымалдаушы немесе оперативті жады болып табылады. TStream арнайы ұ рпағ ында файлдық объектіге толық кіру мү мкіндігін ашатын Read, Write жә не Seek стандартты ә дістері анық талғ ан. Объект конструкторымен қ ұ рылып, деструкторымен ө шіріледі. Келесі мысалда Edit1.Text атауымен сақ талғ ан файл Edit2.Text файлына кө шіріледі. Procedure TForm1.CopyFileClick(Sender: TObject); Var Stream1, Stream2: TStream; Begin Stream1: =TFileStream.Create(Edit1.text, fmOpenRead or fmShareDenyWrite); Try Stream2: = TFileStream.Create(Edit2.text, fmOpenCreate or fmShareDenyRead); Try Stream2.CopyForm(Stream1, Stream1: Size); Finally Stream2.Free; Finally Stream1.Free; End;
TStream абстрактылы Read класы Write жә не кілттік ә дістерді хабарлайды, ол тө мендегі операцияларды орындау ү шін оның мұ рагерлерінде жабылады: - TFileStream - файлдармен мә ліметтер алмасу; - TSringStream - ұ зын жолмен (жадыда) мә ліметтер алмасу; - TMemoryStream - жадыдағ ы мә ліметтермен алмасу; - TBLOBStream – BLOB типті мә ліметтер ө рісін оқ у/жазу (Binary Large Object – ү лкен екілік объект); - TWinSocketStream – OLE сокетті жалғ анатын мә ліметтермен алмасу; - TOLEStream – OLE форматыфндағ ы мә ліметтермен алмасу. Кез-келген мұ рагер CopyForm ә дісінің кө мегімен басқ а ағ ынның мазмұ нын оқ и алады. Осындай тә сілмен, файлдық мә ліметтерді жадығ а орналастыруғ а немесе керісінше – жадыда орналасқ ан мә ліметті дискідегі файлғ а жазуғ а болады. Дә л осылайша TStream класынан басқ а да пайдалы ә дістер жиынтығ ы шығ ады, оның ішінде: - Seek - ағ ынның ағ ымдағ ы орнынан бастап, қ ажетті байт мө лшерін жібереді; - ReadBuffer - ағ ынғ а буферден қ ажетті байт мө лшерін оқ иды; - ReadComponent - ағ ыннан компонент қ асиетін оқ иды; - WriteBuffer - берілген ұ зындық тағ ы буфердегі мә лімет мазмұ нын ағ ынғ а жазады; - WriteComponent - ағ ынғ а компонент қ асиетін жазады. Келесі BbRunClick оқ иғ а ө ң деушісі mmOutput редакторына bbRun батырмасының қ асиетін шығ арады; Программағ а тү сініктеме. Алдымен компоненттің қ асиеті MemSourceStream ағ ынына жазылады. Осылайша алынғ ан екілік мә ліметтер оқ ылатын тү рге келу ү шін ObjectBinarryToText процедурасы пайдаланылады, ол MemSourceStream ағ ынынан мә ліметтерді тү рлендіріп MemSourceStream ағ ынына орналастырады. Осы екінші ағ ындағ ы мә ліметтерді mmOutput терезесіне шығ арады. ТАПСЫРМА: Тапсырма №1. 100000 кездейсоқ нақ ты саннан тұ ратын дискілік файлды қ ұ ратын программа мысалын қ арастырайық (файлдың ұ зындығ ын «массив ұ зындығ ы» редакторының мә нін ө згерту арқ ылы таң дауғ а болады). “Test.dat” атты файл файлды жадыда бейнелеу жолымен қ ұ рылады – жады батырмасы жә не дә стү рлі тә сілмен файл батырмасы. Екі жағ дайда да уақ ыты кө рсетіледі (процессор – 400 МГц, жады – 64 МБайт). Жиілік пен жады қ аншалық ты кө п болса, уақ ыттың арасындағ ы айырмашылық та соғ ұ рлым ү лкен болады.
|