Блог по программированию в среде Delphi

Поиск по блогу

Есть идея по созданию интересной программы?

Опиши тут и я по возможности постараюсь это реализовать специально для тебя! Без $ ))

четверг, 6 января 2011 г.

TStringList замена переносов строки запятыми

procedure TForm1.Button1Click(Sender: TObject);
var
  st:TStringList;
begin
  st:=TStringList.Create;
  try 
    st.Add('1');
    st.Add('2');
    st.Add('3');
    st.Add('4');
    st.Add('5');
    st.Delimiter:=',';
    Memo1.Text:=st.DelimitedText; //результат 1,2,3,4,5
  finally
    st.Free;
  end;
end;

Хотя можно было использовать StringReplace, но если есть это в классе то зачем))
Обратная задача

procedure TForm1.Button1Click(Sender: TObject);
var
  st:TStringList;
  i:integer;
begin

  st:=TStringList.Create;
  try
      st.Delimiter:=',';
      st.DelimitedText:= Memo1.Text;//текст разделенный запятыми

     //теперь можно обращаться по индексу
     for i := 0 to sTemp.Count - 1 do
     begin
        //переменная string:=st.string[i];

     end;
     //или
     Memo1.Lines:=st;
  finally
    st.Free;
  end;
end;

среда, 5 января 2011 г.

Бот для Тюряги (онлайн игра вконтакте+mail)


Сделал новую версию всех, кто купил старую версию просьба написать номер телефона с которого платили без 2 последних цифр и email для отправки новой версии бота, пишем в комментариях при модерации удалю.


Данный бот может делать автоматически или в ручном режиме следующее:
  1. Собирать сигареты со двора
  2. Звать всех друзей в качалку
  3. Отправлять подогревы (любого уровня (если дыры в игре не закрыли, пока работает))
  4. Получать подогревы
  5. Выполнять движухи на зонах



Теперь и для мейла и вконтакта в одном флаконе



Для работы программы необходим логин и пароль вконтакте.
Для того чтобы программа работала корректно необходимо ей один раз показать когда вы делаете сбор во дворе, отправить подогрев и другое. Просто программе нужна точка отсчета от которой она может отталкиваться для выполнения уже тех же самых действий в автоматическом режиме.

Вирусов нет, пароли и логины, мне ваши не нужны.

НОВАЯ ВЕРСИЯ от 4 марта 2011 года.
теперь можно качать, как и говорил раньше, кто купил старую версию пишут в комментариях номер с которого платили без последних двух цифр и адрес электронной почты на который, я отправлю вам новую версию бота.

Скачать отсюда Download

НОВАЯ ВЕРСИЯ от 27 марта 2011 года.
Теперь бот работает и в mail'е достаточно выбрать переключатель нужного вам сервиса

Стоимость бота для тюряги в mail  и вконтакте 50 рублей. (смс теперь не принимаю)
Скачать бот для тюряги с поддержкой mail и вконтакта отсюда Download

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

ПРОИЗОШЛИ изменения на сайте так что все кто купил пишем свои номера без последних двух чисел и получаем исправленную версию (пишите в комментариях).

Для тех кто думает, что обман не качайте ваше право, не нужно меня учить жить... как нибудь сам, а тем кто хочет на халяву да ради бога только не тут))!!!

среда, 29 декабря 2010 г.

Простенький пример выполнения запроса в Wininet

По просьбе трудящихся выкладываю вот такой простенький исходник программки с помощью, которой можно получить ТИЦ и PR  сайта путем выполнения POST запроса

Скрин примера



unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,WinInet, StdCtrls;

type
  TfrmMain = class(TForm)
    Button1: TButton;
    edtSite: TEdit;
    lblTC_PR: TLabel;
    lblSite: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}
const
  // дефолное название приложение через которое якобы происходит соединение
  DefaultAppName ='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6';

function exam(msData: TMemoryStream):string;
  function DataAvailable(hRequest: pointer; out Size: cardinal): BOOLEAN;
  begin
    Result := WinInet.InternetQueryDataAvailable(hRequest, Size, 0, 0);
  end;
var
  hInternet, hConnect, hRequest: pointer;
  dwBytesRead, i, L: cardinal;
  sTemp: AnsiString; // текст страницы
  sHeader: String;
begin
  Result:='';
  try
    hInternet := InternetOpen(PChar(DefaultAppName),INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
    if Assigned(hInternet) then
    begin
      // Открываем сессию
      //http://ip-whois.net/pr_cy_check.php обратите внимание как записал в коде адрес сайта
      hConnect := InternetConnect(hInternet, PWideChar('ip-whois.net'),INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 1);
      if Assigned(hConnect) then
      begin
        // открываем запрос
        hRequest := HttpOpenRequest(hConnect, PWideChar('POST'),
          PWideChar('/pr_cy_check.php'), HTTP_VERSION, nil, Nil,
          INTERNET_FLAG_KEEP_CONNECTION, 1);

        sHeader:='Accept: */*';
        HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
        sHeader:= 'Content-Type: application/x-www-form-urlencoded';
        HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
        sHeader:= 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
        HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
        sHeader:= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7';
        HttpAddRequestHeaders(hRequest, Pointer(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);

        if Assigned(hRequest) then
        begin
          // Отправляем запрос
          i := 1;
          if HttpSendRequest(hRequest, nil, 0, msData.memory, msData.Size) then
          begin
            repeat
              DataAvailable(hRequest, L); // Получаем кол-во принимаемых данных
              if L = 0 then
                break;
              SetLength(sTemp, L + i);
              if not InternetReadFile(hRequest, @sTemp[i], sizeof(L),dwBytesRead) then
                break; // Получаем данные с сервера
              inc(i, dwBytesRead);
            until dwBytesRead = 0;
            sTemp[i] := #0;
            Result:=sTemp;
          end;
        end;
      end;
    end;
  finally
    InternetCloseHandle(hRequest);
    InternetCloseHandle(hConnect);
    InternetCloseHandle(hInternet);
  end;
end;

function TC_PR(aValue:string):string;
var
  i:Integer;
  TC,PR:string;
begin
  i:=AnsiPos('</h2><h3>ТИЦ: ',aValue);
  if i=0 then
  begin
    Result:='Неизвестно!';
    Exit;
  end;
  Delete(aValue,1,i+length('</h2><h3>ТИЦ: ')-1);
  i:=AnsiPos('</h3><h3>PR: ',aValue);
  TC:=Copy(aValue,0,i-1);
  Delete(aValue,1,i+length('</h3><h3>PR: ')-1);
  i:=AnsiPos('</h3><br>',aValue);
  PR:=Copy(aValue,0,i-1);
  Result:='ТИЦ '+TC+' PR '+PR;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  zapros:TStringStream;
  sTemp:string;
begin
  zapros:=TStringStream.Create;
  zapros.WriteString('T1='+edtSite.Text+'&B1=T2=%D3%E7%ED%E0%F2%FC+%D2%C8%D6+%E8+PR');
  sTemp:=exam(zapros);
  if Length(sTemp)>0 then
    lblTC_PR.Caption:=TC_PR(sTemp);

  zapros.Free;
end;

end.

Скачать исходник проекта можно отсюда Download

четверг, 2 декабря 2010 г.

Конкурс на WebDelphi с неограниченным призовым фондом.

Хочу поздравить всех со вторым днем зимы и сообщить о прекрасном известии.

1 декабря 2010 года (т.е. вчера) начался конкурс по программированию с неограниченным призовым фондом ( все зависит от количества принявших в нем участие людей( 50 рублей за каждого нового конкурсанта), но начальный призовой фонд составляет 1000 рублей ).

Принять участие в конкурсе могут все программисты круг не ограничивается только Delphi (нас ни так много, но мы в тельняшках).

Если вы не профессионал то не беда, программу будут оценивать только по ее функционалу далекие от программирования люди следовательно и у вас есть шанс занять почетное первое место в этом конкурсе.

Правила и требования для участия в конкурсе можете просмотреть на сайте автора конкурса!


Желаю удачи!!!

пятница, 19 ноября 2010 г.

Время простоя ПК

function CheckIddleTime: DWord;
var
   LastInput: TLastInputInfo;
begin
   LastInput.cbSize := SizeOf(TLastInputInfo);
   GetLastInputInfo(LastInput);
   Result := GetTickCount - LastInput.dwTime;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:= 'Время простоя: ' + vartostr(CheckIddleTime/1000)+' секунд(ы)';
end;

четверг, 18 ноября 2010 г.

Создание именованной, совместно используемой памяти (Delphi)

Отображение файла в память для совместного использования несколькими процессами.



Первый процесс создает файл Temp.txt, после чего проецирует его в память

//первый процесс
unit mainServ;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

среда, 17 ноября 2010 г.

Файлы, проецируемые в память

Технология файлов, проецируемых в память, является изящным средством для разделения ресурсов файловой системы между процессами.
При проецировании файла на адресное пространство процесса процесс может обращаться к содержимому файла так, как если бы файл был загружен в оперативную память.
Если несколько процессов выполняют проецирование одного и того же файла, то содержимое файла будет доступно для всех процессов, то есть позволит избежать загрузки множества экземпляров файла в оперативную память.
Для проецируемых файлов применяется 64-битная адресация, что позволяет использовать данную технологию для обработки сверхбольших (до 18 экзабайт) файлов, преодолевая, тем самым, ограничение на размер файла в 2 гигабайта.

пятница, 12 ноября 2010 г.

Программа для информирования пользователя о смене языка ввода 2 (Написана на Delphi)

Немного изменил интерфейс, добавил то, что просили






Если нужен дополнительный функционал пишите.

Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows XP SP3 и Windows 7 64 можно отсюда Download

Как и просили  исходник Windows 7 64
Так как нет возможности создания 64-х разрядной DLL сделал по таймеру))

пятница, 5 ноября 2010 г.

Программа для информирования пользователя о смене языка ввода (Написана на Delphi)

Программа информирует вас о смене языка ввода так, как это не всегда происходит при нажатии комбинации клавиш которые, как раз отвечают за это дело, но эта программа известит вас об этом звуковым сигналом или сменой указателя мыши и гудком все это дело настраивается без проблем в программе.
Программа работает в ОС Windows XP SP3
Скриншот программы


Программа бесплатная так, что вы ее используете на свой страх и риск!
Я не несу ответственности за вред который вы причините используя эту программу!
ВИРУСОВ НЕТ!
Скачать программу под Windows XP SP3 можно отсюда Download
Скачать программу под Windows 7 64 можно отсюда Download

В дополнение ко все хочу сказать, что я не пытался сделать PuntoSwithcher, слишком много автоматизации иногда мешает им ни когда не пользовался и не собираюсь, каждому своё!

понедельник, 1 ноября 2010 г.

Google Chrome Frame for Delphi 2010

Компонент для использования функций Google Chrome в своих приложениях или же написания своего браузера на основе Google Chrome в Delphi.
Скриншот примера идущего в комплекте с компонентом.


ActiveX из npchrome_frame.dll не импортируется полностью и один хороший человек написал компонент на радость пользователям Delphi сайт автора компонента.

Компонент Google Chrome Frame для Delphi 2010 можно скачать отсюда Download