Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } libraryStrSrchLib; uses
Wintypes, WinProcs, SysUtils, Dialogs; type
{ declare the callback function type } TFoundStrProc = procedure
(StrPos: PChar); StdCall
; function
SearchStr(ASrcStr, ASearchStr: PChar; AProc: TFarProc): Integer; stdcall
; { This function looks for ASearchStr in ASrcStr. When if finds ASearchStr, the callback procedure referred to by AProc is called if one has been passed in. The user may pass nil as this parameter. } var
FindStr: PChar; begin
FindStr := ASrcStr; FindStr := StrPos(FindStr, ASearchStr); while
FindStr <> nil
do
begin
if
AProc <> nil
then
TFoundStrProc(AProc)(FindStr); FindStr := FindStr + 1; FindStr := StrPos(FindStr, ASearchStr); end
; end
; exports
SearchStr; begin
end
.
{ Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unitMainFrm; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type
TMainForm = class
(TForm) btnCallDLLFunc: TButton; edtSearchStr: TEdit; lblSrchWrd: TLabel; memStr: TMemo; procedure
btnCallDLLFuncClick(Sender: TObject); end
; var
MainForm: TMainForm; Count: Integer; implementation
{$R *.DFM} { Define the DLL's exported procedure } function
SearchStr(ASrcStr, ASearchStr: PChar; AProc: TFarProc): Integer; stdcall
external
'STRSRCHLIB.DLL'; { Define the callback procedure, make sure to use the StdCall directive } procedure
StrPosProc(AStrPsn: PChar); stdcall
; begin
inc(Count); // Increment the Count variable. end
; procedure
TMainForm.btnCallDLLFuncClick(Sender: TObject); var
S: string
; S2: string
; begin
Count := 0; // Initialize Count to zero. { Retrieve the length of the text on which to search. } SetLength(S, memStr.GetTextLen); { Now copy the text to the variable S } memStr.GetTextBuf(PChar(S), memStr.GetTextLen); { Copy Edit1's Text to a string variable so that it can be passed to the DLL function } S2 := edtSearchStr.Text; { Call the DLL function } SearchStr(PChar(S), PChar(S2), @StrPosProc); { Show how many times the word occurs in the string. This has been stored in the Count variable which is used by the callback function } ShowMessage(Format('%s %s %d %s', [edtSearchStr.Text, 'occurs', Count, 'times.'])); end
; end
.