Робота з бінарними файлами в Delphi
Для початку роботи з файлом, як з бінарним, вам потрібно буде відкрити його як масив деяких структур або базових типів. [cc lang = "delphi"] Var name:file of integer; //замість integer можна вказати будь-який тип даних Assignfile(name,”in.dat”); // зв'язування файлу in.dat зі змінною name //Якщо ви збираєтеся писати в бінарний файл. Rewrite(name);// файл відкритий для перезапису Write(name,9); //запишемо до нашого бінарного файлу ціле число 9 //Для продовження запису досить просто далі писати функцію write(name,a); //Де а це змінна типу integer або того ж типу що і змінна name в загальному випадку. Reset(name);// відкриваємо файл для читання Read(name,a); // читаємо з бінарного файлу name змінну а, вимоги до а такі ж, що й вище. Seek(name,b); //зсув на b позицій щодо початку файлу. [/cc] У сухому залишку ми маємо значно урізані процедури роботи з бінарним файлом, що може значно утруднити зчитування та переміщення файлом порівняно з C/C++. Єдиним позитивним моментом є можливість зчитувати структури, що залишає за собою деяку гнучкість, але заважає якоюсь мірою створити універсальний контейнер. І насамкінець я хотів би розглянути пару прикладів.
1) Просто запишемо та прочитаємо з бінарного файлу [cc lang="delphi"] var f:file of integer; x,i:integer; begin assignfile(f,'in.dat'); rewrite(f); for I:=1 to 10 do write(f,i); close(f); reset(f); for i:=1 to 10 do begin read(f,x); write(x); end; end.[/cc]
2) Додамо функцію seek [cc lang = "delphi"] var f: file of integer; x,i:integer; begin assignfile(f,'in.dat'); rewrite(f); for I:=1 to 10 do write(f,i); close(f); reset(f); seek(f,4); for i:=5 to 10 do begin read(f,x); write(x); end; read(x); end.[/cc]
3) Робота із структурами. Все також просто. [cc lang="delphi"] type Point=record x,y:integer; end; var f:file of Point; i:integer; x:point; begin assignfile(f,'in.dat'); rewrite(f); for I:=1 to 10 do write(f,x); close(f); end.[/cc] редагування бінарників у Java
можна записати в один бінарний файл кілька змінних типу word і кілька Tstrings, окремо я знаю як, але щоб в один…
Ну, це легко. Достатньо кілька разів викликати функцію Write(name,9);, де на місці 9 має бути значення, яке ви хочете записати.