Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Сохранение бинарного файла в реестре с последующим его извлечением

Советы » Реестр » Сохранение бинарного файла в реестре с последующим его извлечением

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Сохранение бинарного файла в реестре с последующим его извлечением

Функции позволяют разбить файл на блоки 16к и затем поместить бинарные
данные в реестр, а так же собрать эти данные обратно в файл при необходимости.
Не знаю зачем этот код нужен , но возможно он пригодится для скрытого
хранения данных . Не рекомендуется (!) сохранять слишком большие файлы
в реестре , потому что размеры реестра ограничены .

Зависимости: Registry,SysUtils
Автор:       Sergey, gloom@imail.ru, Koenigsberg
Copyright:   KosilkA
Дата:        4 декабря 2003 г.
***************************************************** }

//////////////////////////////////////////////////
// функция разбивки и сохранения файла в реестр:

function

SaveToRegistry(RootKey: HKEY; FileName, KeyName: string

): Bool; //где RootKey-раздел реестра, //FileName-путь к файлу , //KeyName-ключ реестра в который будем сохранять var

FromF: file

; NumRead, i: Integer; Buf: array

[0..16383] of

byte; reg: tregistry; begin

try

AssignFile(FromF, filename); Reset(FromF, 1); reg := tregistry.Create; reg.RootKey := rootkey; if

reg.OpenKey(keyName, true) = false then

//если невозможно //открыть ключ с правами //записи , то что то не так begin

result := false; reg.Free; exit; //выходим end

; i := 0; repeat

//читаем и записывае в цикле BlockRead(FromF, Buf, SizeOf(Buf), NumRead); //читаем блок из файла if

numread <> 0 then

begin

reg.WriteBinaryData(inttostr(i), buf, numread); //сохраняем блок в реестр inc(i); end

; until

(NumRead = 0); CloseFile(FromF); reg.CloseKey; reg.Free; result := true; except

reg.CloseKey; reg.Free; result := false; end

; end

; ////////////////////////////////////////////////// // функция сборки сохраненного файла: function

BuildFromRegistry(RootKey: HKEY; KeyName, ToFileName: string

): Bool; //где RootKey-раздел реестра, //KeyName -ключ реестра , //ToFileName-имя выходного файла . var

numwritten, i: integer; ToF: file

; Buf: array

[0..16383] of

byte; reg: tregistry; begin

try

AssignFile(ToF, tofilename); Rewrite(ToF, 1); reg := tregistry.Create; reg.RootKey := rootkey; if

reg.OpenKey(keyname, true) = false then

//если указанный ключ невозможно открыть - выходим begin

result := false; reg.Free; exit; end

; i := 0; repeat

//в цикле находим значения //начиная с "0" , читаем их //и добавляем блоки к файлу if

reg.ValueExists(inttostr(i)) = true then

begin

reg.ReadBinaryData(inttostr(i), buf, reg.GetDataSize(inttostr(i))); BlockWrite(ToF, Buf, reg.GetDataSize(inttostr(i))); end

; inc(i); until

reg.ValueExists(inttostr(i)) = false; CloseFile(ToF); reg.CloseKey; reg.Free; result := true; except

reg.CloseKey; reg.Free; result := false; end

; end

; // Пример использования: // сохранить: SaveToRegistry(HKEY_CURRENT_USER, Application.ExeName, 'SoftwareMyDatatest'); // извлечь: BuildFromRegistry(HKEY_CURRENT_USER, 'SoftwareMyDatatest', 'MyBuildApp.exe');

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com