
02.04.2018, 21:44
|
 |
LMD-DML
|
|
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
|
|
Цитата:
Сообщение от Vilor
...без углубленных знаний этот проект реализовать не получиться?...
|
Да какое там углублёнка, всё предельно просто, вот вариант под VCL, различает два сценария
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Clipbrd;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure WMChangeCBChain(var Msg: TWMChangeCBChain);
message WM_CHANGECBCHAIN;
procedure WMDrawClipboard(var Msg: TWMDrawClipboard);
message WM_DRAWCLIPBOARD;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
PrevHwnd: Hwnd;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMChangeCBChain(var Msg: TWMChangeCBChain);
begin
if PrevHWnd = Msg.Remove then PrevHWnd:= Msg.Next;
if Msg.Remove <> Handle then
SendMessage(PrevHWnd, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next);
end;
procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard);
function tk(ds: string): boolean;
var
i, b: integer;
begin
b:= 0;
for i := 1 to length(ds) do if ds[i] in ['0'..'9'] then inc(b);
Result:= (b = Length(ds));
end;
var
P: PChar;
H: THandle;
i, b: integer;
s: string;
begin
SendMessage(PrevHWnd, WM_DRAWCLIPBOARD, 0, 0);
if Clipboard.HasFormat(CF_TEXT) then
begin
H := Clipboard.GetAsHandle(CF_TEXT);
P := GlobalLock(H);
// Memo1.SetTextBuf(P);
memo1.Lines.Add(String(P));
GlobalUnlock(H);
for i := 0 to Memo1.Lines.Count-1 do
begin
s:= Memo1.Lines[i];
if Length(s) <> 0 then
begin
if pos('.', s) > 0 then Memo1.Lines[i]:= '1 сценарий: адрес - ' + s;
if tk(s) then Memo1.Lines[i]:= '2 сценарий: номер телефона - ' + s;
end;
end;
Msg.Result:= 0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PrevHwnd:= SetClipboardViewer(Handle);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ChangeClipboardChain(Handle, PrevHwnd);
end;
end.
правда так и не понял, построчно данные в буфере лежат или все сразу?
|