Показаны сообщения с ярлыком Delphi. Показать все сообщения
Показаны сообщения с ярлыком Delphi. Показать все сообщения

среда, 23 октября 2013 г.

Delphi. Поиск самого длинного слова в строке


var
s, max:string;
list:TStrings;
i:Integer;
begin
list :=TStringList.Create;
s :=edt1.Text;
    ExtractStrings([';', ',','.','?','!',':',' '], [' '], PChar(s), list); // с учетом возможных разделителей
      max :=list[0]; //пусть первое слово имеет максимальную длину
    for i := 0 to list.Count-1 do
    begin
    if Length(list[i])>Length(max) then //сравниваем последующие слова с ним
     max :=list[i];
    end;
    ShowMessage('Самое длинное слово '+max+#10#13+'Количество букв: '+Inttostr(Length(max)));
    list.Free;
end;

пятница, 12 августа 2011 г.

Получить дескриптор окна. Get Handle

Копался в исходнике http://www.delphisources.ru/pages/sources/system/2009-year/get-handle.html

Всю полезную работу делает процедура ShowHwndAndClassName, а все остальное - прибамбасы.


procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName: array [0..255] of Char;
Title: string;
begin
hWnd := WindowFromPoint(CrPos);
ed5.Text := IntToStr(hWnd);
if Boolean(GetClassName(hWnd, aName, 256)) then
ed4.Text := string(aName)
else
ed4.Text := 'Class not found';
SetLength (Title, 100);
GetWindowText (hWnd, PChar (Title), 100);
ed3.Text := string(PChar(Title));
ed2.Text := IntToHex (hWnd, 8);
end;

Эта процедура вызывается в таймере.


procedure TForm1.Timer1Timer(Sender: TObject);
var
rPos: TPoint; var
Cursor: TPoint;
begin
if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
GetCursorPos(Cursor);
ed1.Text :=
'X= ' + IntToStr(Cursor.X) + ', Y='+ IntToStr(Cursor.Y);
end;


Сделал маленькую программку, которая выдает всю нужную инфу.



четверг, 11 августа 2011 г.

Получить список активных процессов, модулей в системе

Для этого используется функция CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);

Она возвращает кучу всякой полезной информации.

Из нее уже можно доставать отдельно процессы (Process32First), модули (Module32First) и другое.

Кому интересно, посмотрите unit TlHelp32;

Исходники программы, которая демонстрирует использование CreateToolhelp32Snapshot

Сгенерировать случайный пароль.

Исходники - http://sources.ru/delphi/delphi_create_random_password.shtml


Готовая программа с исходниками - http://chizzx.wallst.ru/msk/sourcePasGen (архив 7z)