Все ленты — последние статьи

# Заметки о Delphi

****

Вначале карьеры писал на Delphi, и это было прекрасно (для того времени)! Потом писал на схожей по функциональности платформе Oracle Forms, для околобанковского сектора и не только. Могу с уверенностью сказать — для создания бизнес приложений Oracle Forms лучше Delphi, благодаря прозрачной работе с БД

****

var
S, S2 : String;
P1 : Integer;
begin
//Строка.
S := Edit1.Text;
//Искомая подстрока.
S2 := Edit2.Text;
//Удаление всех вхождений заданной подстроки с учётом регистра букв.
S := StringReplace(S, S2, '', [rfReplaceAll]);
//Или:
//Удаление всех вхождений заданной подстроки без учёта регистра букв.
S := StringReplace(S, S2, '', [rfReplaceAll, rfIgnoreCase]);
//Или:
//Удаление только первого воходения подстроки без учёта регистра букв.
S := StringReplace(S, S2, '', [rfIgnoreCase]);

 

****

 

procedure TForm1.Button2Click(Sender: TObject);
varDoc:IHTMLDocument2;S:string;
beginWebBrowser1.Navigate('URL');
while
WebBrowser1.ReadyState<READYSTATE_COMPLETE do begin
Application.ProcessMessages;
end;Doc:= WebBrowser1.Document as IHTMLDocument2;
s:=doc.body.innerHTML;
Memo1.Text:=s;
end;

*****

 

procedure Ping(IP: String; OutMemo:TMemo);
const BUFSIZE = 2000;
var SecAttr : TSecurityAttributes;
hReadPipe,
hWritePipe : THandle;
StartupInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
Buffer : Pchar;
WaitReason,
BytesRead : DWord;
begin
with SecAttr do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe (hReadPipe, hWritePipe, @SecAttr, 0) then
begin
Buffer := AllocMem(BUFSIZE + 1);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.hStdOutput := hWritePipe;
StartupInfo.hStdInput := hReadPipe;
StartupInfo.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil,
PChar('ping.exe '+IP),
@SecAttr,
@SecAttr,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then
begin
repeat
WaitReason := WaitForSingleObject( ProcessInfo.hProcess,100);
Application.ProcessMessages;
until (WaitReason <> WAIT_TIMEOUT);
Repeat
BytesRead := 0;
ReadFile(hReadPipe, Buffer[0], BUFSIZE, BytesRead, nil);
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer);
OutMemo.Text := OutMemo.text + String(Buffer);
until (BytesRead < BUFSIZE);
end;
FreeMem(Buffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
end;
end;
Процедура отправляет IP адрес и возвращает в TMemo результат работы.
Вот пример использования:
Ping('127.0.0.1', Memo1);

****

Вот таким образом можно осуществить быстрый поиск в ListBox
Код Delphi
123 ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(Edit1.text)));

****

ListBox1.Items.LoadFromFile(‘название Файла’); загрузка из файла;
ListBox1.Items.SaveToFile(‘название Файла’); сохранение в файл;
Для добавления строки в конец списка можно использовать команду
ListBox1.Items.Add(‘Новая Строка’);
Для добавления строки перед строкой n используется команда
ListBox1.Items.Insert(n, ‘Новая_Строка’); новая строка получает номер n.
Для получения выделенной строки используется команда
Vst:=ListBox1.Items[ListBox1.ItemIndex]; где Vst — текст выделенной строки
Для удаления строки используется команда
ListBox1.Items.Delete(i); где i — номер строки

***