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

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

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

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

Сохранение всего содержимого буфера обмена в файл

Советы » Буфер обмена » Сохранение всего содержимого буфера обмена в файл

var

FS: TFileStream; procedure

TForm1.bClearClick(Sender: TObject); begin

OpenClipBoard(0); EmptyClipboard; CloseClipBoard; end

; procedure

TForm1.BSaveClick(Sender: TObject); var

CBF: Cardinal; CBFList: TList; i: Integer; h: THandle; p: Pointer; CBBlockLength, Temp: Cardinal; FS: TFileStream; begin

if

OpenClipBoard(0) then

begin

CBFList := TList.Create; CBF := 0; repeat

CBF := EnumClipboardFormats(CBF); if

CBF <> 0 then

CBFList.Add(pointer(CBF)); until

CBF = 0; edit1.text := IntToStr(CBFList.Count); if

CBFList.Count > 0 then

begin

FS := TFileStream.Create('e:cp.dat', fmCreate); Temp := CBFList.Count; FS.Write

(Temp, SizeOf(Integer)); for

i := 0 to

CBFList.Count - 1 do

begin

h := GetClipboardData(Cardinal(CBFList[i])); if

h > 0 then

begin

CBBlockLength := GlobalSize(h); if

h > 0 then

begin

p := GlobalLock(h); if

p <> nil

then

begin

Temp := Cardinal(CBFList[i]); FS.Write

(Temp, SizeOf(Cardinal)); FS.Write

(CBBlockLength, SizeOf(Cardinal)); FS.Write

(p^, CBBlockLength); end

; GlobalUnlock(h); end

; end

; end

; FS.Free; end

; CBFList.Free; CloseClipBoard; end

; end

; procedure

TForm1.bLoadClick(Sender: TObject); var

h: THandle; p: Pointer; CBF: Cardin! al; CBBlockLength: Cardinal; i, CBCount: Integer; FS: TFileStream; begin

if

OpenClipBoard(0) then

begin

FS := TFileStream.Create('e:cp.dat', fmOpenRead); if

FS.Size = 0 then

Exit; FS.Read

(CBCount, sizeOf(Integer)); if

CBCount = 0 then

Exit; for

i := 1 to

CBCount do

begin

FS.Read

(CBF, SizeOf(Cardinal)); FS.Read

(CBBlockLength, SizeOf(Cardinal)); h := GlobalAlloc(GMEM_MOVEABLE or

GMEM_SHARE or

GMEM_ZEROINIT, CBBlockLength); if

h > 0 then

begin

p := GlobalLock(h); if

p = nil

then

GlobalFree(h) else

begin

FS.Read

(p^, CBBlockLength); GlobalUnlock(h); SetClipboardData(CBF, h); end

; end

; end

; FS.Free; CloseClipBoard; end

; end

;

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

Категории

Статьи

Советы

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