Еще раз об отображаемом в память файлеDelphi , Файловая система , ФайлыЕще раз об отображаемом в память файлеunit MapWForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SyncObjs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids, ComCtrls; type TForm1 = class(TForm) Timer1: TTimer; TrackBar1: TTrackBar; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure TrackBar1Change(Sender: TObject); private hMapFile: THandle; MapFilePointer: Pointer; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin hMapFile := CreateFileMapping( $FFFFFFFF, // file handle ... or memory nil, // security Page_ReadWrite, // access rights 0, // high memory size 10000, // low memory size 'DdhMappedFileGraph'); // mapped file name if hMapFile <> 0 then MapFilePointer := MapViewOfFile( hMapFile, // handle returned above File_Map_All_Access, // access rights 0, 0, 0) // access the entire mapped file else ShowMessage('hMapFile = 0'); if MapFilePointer = nil then ShowMessage('MapFilePointer = nil'); // not a listener of messages... TrackBar1.Position := 1 + Random(10); Label1.Caption := IntToStr(TrackBar1.Position) end; procedure TForm1.FormDestroy(Sender: TObject); begin UnMapViewOfFile(MapFilePointer); CloseHandle(hMapFile); end; procedure TForm1.Timer1Timer(Sender: TObject); var X, Y: Integer; Address: Pointer; begin X := TrackBar1.Position - 1; Y := Random(10); Address := pChar(MapFilePointer) + (X + Y * 10) * 4; PInteger(Address)^ := PInteger(Address)^ + Random(10); Address := pChar(MapFilePointer) + 400; while PInteger(Address)^ <> 0 do begin PostMessage(PInteger(Address)^, wm_user, 0, 0); Address := pChar(Address) + 4; end; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin Label1.Caption := IntToStr(TrackBar1.Position) end; initialization Randomize; end. Программа на Delphi создает графическое пользовательское интерфейсе (GUI) с формой, таймером и трекбаром. Программа картографирует файл в память с помощью функции В процедуре
Если создание файловой карты успешно, программа картографирует файл в память с помощью функции В процедуре Процедура
Процедура Некоторые предложения по улучшению:
В целом, код appears to be функциональный, но может потребовать дополнительной обработки ошибок и рассмотрения вопросов производительности и безопасности. В статье рассматривается пример использования файловой памяти в Delphi, где создается файловая память, маппится в адресное пространство процесса и изменяется содержимое файла с помощью тракбара. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |