Несколько элементарных вопросов

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Несколько элементарных вопросов

Сообщение algorythm » 21.02.2011 21:44:18

Доброго времени суток, господа программисты!
FreePascal начал осваивать недавно - раньше, давным давно писал на старом-добром BP-компиляторе, затем пересел на веб и, в общем-то, все уже позабыл. Сейчас снова возникает необходимость писать десктопные приложения БД для POSIX и в выборе языка остановился на FP потому что паскаль всегда был максимально близок для моего понимания и достаточно красив в сравнении с тем же C++(говорю потому что недавно в целях ознакомления пробовал C++ в связке с Qt).
Вот, собственно, и вопросы:
1) Решил, что в приложении буду использовать консольный псевдографический интерфейс(в стиле TurboVision), чтобы приложение могло работать на машине любой производительности и, кроме того, в некоторых случаях, видимо придется использовать SSH-доступ. Подскажите, какой можно использовать для этого фреймворк(ну в стиле того же TurboVision, видел какие-то заметки о некоем FreeVision для компилятора FPC, но скачать ничего не удалось. Слышал, проект остановлен).
2) Порекомендуйте способы работы с БД Firebird из FreePascal, желательно кроссплатформенные.
Ну пока все,
Заранее благодарен за информативные ответы.
algorythm
незнакомец
 
Сообщения: 1
Зарегистрирован: 21.02.2011 21:22:59

Re: Несколько элементарных вопросов

Сообщение Mr.Smart » 21.02.2011 21:50:53

1) На FreeVision написана IDE идущее в комплекте, похожая на IDE BP. И если вы когда-либо писали под TurboVision, то проблем не возникнет;
2) Сказать ничего не могу т.к. не использую.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Несколько элементарных вопросов

Сообщение Vadim » 22.02.2011 05:09:44

algorythm писал(а):2) Порекомендуйте способы работы с БД Firebird из FreePascal, желательно кроссплатформенные.

Три компонента на выбор:
- SQLDb - стандартно входит в состав FreePascal и предлагает универсальные набор компонентов для работы с самыми популярными БД, в том числе и с FireBird (TIBConnection - соединение с сервером БД, TSQLTransaction - управление транзакциями, TSQLQuery - для работы с запросами и формирование из них набора данных и т.д.). Пример работы есть в исходниках, в каталоге fcl-db/src/scldb/examples.
- ZEOS - хорош тем, что практически один-в-один повторяет борландовские компоненты BDE, так что можно в работе с ним использовать любую книжку по Delphi. Ссылка - http://zeos.firmos.at/
- FBManager - разработка участника этого форума - универсальный компонент типа TDataSet и хорош своим минимализмом. Ссылка - http://w7site.ru/fpc/fbm/
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Несколько элементарных вопросов

Сообщение alexs » 22.02.2011 09:06:41

Vadim писал(а): FBManager - разработка участника этого форума - универсальный компонент типа TDataSet и хорош своим минимализмом. Ссылка - http://w7site.ru/fpc/fbm/

Не так.
Это инструмент управления БД - типа IBExpert-а.
А чловеку нужны библиотеки:
UIB - получить через SVN командой svn co https://uib.svn.sourceforge.net/svnroot/uib uib
FBDataSet - svn co svn://svn.shamangrad.net/FBDataSet
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Несколько элементарных вопросов

Сообщение ADR » 08.03.2011 00:26:47

как
1) воспроизвести аудио
2) узнать содержание буфера иксов (в линуксе при выделении текста...)
3) зарегистрировать хоткей
?
ADR
новенький
 
Сообщения: 43
Зарегистрирован: 11.05.2010 18:22:39
Откуда: Ukraine

Re: Несколько элементарных вопросов

Сообщение Maxizar » 08.03.2011 10:18:43

ADR - Ну зачем надо было задавать все вопросы в одной теме :evil: ? Тем более не в вашей.. вот если вы получите ответ, вы не сможете написать в название темы [Решено]… ладно уже поздно.
ADR писал(а):как
1) воспроизвести аудио


Тут было про то как воспроизвести видео (для линукс) про аудио я думаю тоже самое..
так же можно вот это для кучи: Путеводитель по джунглям звуковых API в Linux
Для Windows, можно воспользоваться Win API и модулем mmsystem или как он там называется.. но там полная Х.. .. но решать вам. Так же можно использовать Bass, ну или писать свой движок.

ADR писал(а):как
2)узнать содержание буфера иксов (в линуксе при выделении текста...)

Не могу помочь. :evil:

ADR писал(а):как
3)зарегистрировать хоткей


С линухом.. не знаком.. так что там ХЗ как делать, скорее всего через Ядро или Систему Х или еще какую нибудь Весчь :mrgreen:
для Win можно поставить глобальный отлов клавиши (комбинации)…
Ниже код: формы для загрузки библиотеки dll в которой и идет отлов глобальной клавиши в данном случае клавиши A. (и записываем число нажатий этой клавиши в файл) Ну типа маленький KeyLogger… удачи.
Ну а в форме идет подключение данной библиотеки.. почему именно ДЛЛ – это ограничение самой Винды на сколько я помню…
Форма:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls,Windows;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;


var
  Form1: TForm1;

  //экспортируем 3 функции из библиотеки с НООК'ами
  procedure Start; external 'Hook.dll' name 'Start';
  procedure Remove; external 'Hook.dll' name 'Remove';
  Function  Count1:Integer; external 'Hook.dll' name 'GetCount';

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
    Start; //Старт ловушки
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   Remove;   //Ой убивают Хэлп ми
end;

end.

DLL:
Код: Выделить всё
library Hook;

{$mode objfpc}{$H+}

uses
  windows, messages, IniFiles
  { you can add units after this };
  //модуль Classes удален для экономии размера ДЛЛ


var
    Count:Integer=0;   //Изначально число нажатий = 0
    theHook: THandle;  //хэндл ловушки для дальнейшего удаления


function MouseHook(nCode, wParam, lParam: integer): Lresult; stdcall;
var Ini:TIniFile;
     X:Integer;
begin

   if nCode < 0 then
  begin            //фигня какая то, передаем дальше
    result := CallNextHookEx(theHook, nCode, wParam, lParam);
    exit;
  end;
           //(lParam >$8000) - считаем только нажатие клавиш and (GetKeyState(VK_SHIFT)<>0)
    if (wParam = VK_A) and (lParam >$8000)     then
     begin
     Ini:=TIniFile.Create('C:\Count.Ini');
     X:=Ini.ReadInteger('Count','Value',0);
     Ini.WriteInteger('Count','Value',X+1); //тупо  подсчет числа нажатий данной клавиши
     Ini.Free;
     beep(100,100);  //Ну для красоты чтоб слышать что идет отлов
     end;

    result := CallNextHookEx(theHook, nCode, wParam, lParam); //дальше по цепочке
end;

//-------------------------------------------------------------------------
procedure Start;
begin
  theHook := SetWindowsHookEx(WH_KEYBOARD, @MouseHook, hInstance, 0); //установка ловушки
  if theHook = 0 then
    messageBox(0, 'Error!', 'Error!', mb_ok);
end;
//-------------------------------------------------------------------------
procedure Remove;
begin
  UnhookWindowsHookEx(theHook);   //удаление ловушки
end;
//-------------------------------------------------------------------------
{$R *.res}

Exports

Start     index 1 name 'Start',
Remove    index 2 name 'Remove';

begin
end.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru