CGI на Free Pascal

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

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

CGI на Free Pascal

Сообщение first-leon » 13.01.2007 19:04:45

Подскажите библиотеку чтобы писать CGI приложения на Free Pascal.
Обратил внимание на PSP. Довольно проста, но! Нет версии для FreeBSD. А надо кросс платформенную. Желательно побольше поддерживаемых платформ.

В статье на сайте нашел такие строки:
Borland WebSnap, портированием которого в Free Pascal занимается один из ключевых разработчиков FPC — Michael Van Canneyt. Он основан на полной визуализации процесса с помощью компонентов.


Так и не нашел в сети какой либо информации по этому проекту, но похоже что он мне и не подойдет. Визуальные компоненты ни к чему. Как и сказано в этой статье - жирно сильно, для простых вещей.

Еще есть в Лазаре тип приложения CGI. А есть ли какие нибудь библиотеки, облегчающие работу с CGI?
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение ev » 13.01.2007 19:25:30

насколько я помню CGI - это банальная консольная программа
для вывода используется стандартный вывод (writeln), только надо учитывать что надо выдавать заголовки (типа Content-type: text/html)
ev
долгожитель
 
Сообщения: 1764
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение first-leon » 13.01.2007 19:27:47

Ну на счет того что банальная - я бы не согласился. Все таки люди целые библиотеки пишут чтобы удобнее этой банальностью пользоваться было.
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение ev » 13.01.2007 21:19:05

Аналог explode из PHP
чем не банальная функция? ;)
однако я бы не отказался от нее в стандартной библиотеке

а вот и немного по теме
ev
долгожитель
 
Сообщения: 1764
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение shade » 13.01.2007 21:57:40

В PHP очень удобные функции. Решил завести себе модуль phputils.pas и наполнять его по мере необходимости.

На данный момент не много:
Код: Выделить всё
function file_get_contents(const FileName: string): AnsiString;
procedure file_put_contents(const FileName: string; const Text: AnsiString);
function Explode(Ch: Char; const Text: string): TStringArray;
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Replicator » 14.01.2007 15:11:49

Здесь лежит мой модуль: http://nyumesoft.org.ru/upl/@FreePascal/@Units/ZUtils.zip.

Там довольно много функций которые в свое время помогали мне упростить разработку. Часть из них только под виндовс, так как писалось еще для Delphi. Но часть будет работать и во FreePascal. Вот часть заголовка:
Код: Выделить всё
uses windows;

type
  TComplex = record
              re : real;
              im : real
            end;
  TCharTable = set of char;
  TArray = array of string;

  // Стек
  TStack = class(TObject)
    private
      current_length : cardinal;

      function  get_length : cardinal;
      function  get_heap : string;
      procedure set_heap(str : string);
      function  get_text : string;

    public
      elements : array of string;

      constructor create;
      destructor  free;

      property length : cardinal read get_length;
      property heap   : string read get_heap write set_heap;
      property text   : string read get_text;

      procedure add(str : string);
      function  remove : string;
      procedure clear;
  end;

// Математические функции
  function  pow(base, p : real) : real;

  function  AddC(x, y : Tcomplex) : TComplex;
  function  SubC(x, y : Tcomplex) : TComplex;
  function  MulC(x, y : Tcomplex) : TComplex;
  function  DivC(x, y : Tcomplex) : TComplex;

// Системы счисления
  function  dec2hex(str : string; Digits : byte = 0) : string;
  function  hex2dec(Value : string) : string;

  function  dec2okt(str : string; Digits : byte = 0) : string;
  function  okt2dec(Value : string) : string;

  function  dec2bin(str : string; Digits : byte = 0) : string;
  function  bin2dec(Value : string) : string;

// Хеш - функции
  function  md5(s : string) : string;
  function  md5bin(s : string) : string;
  function  crc32(str : string) : string;

// Управление Консолью
  function  readkey : char;
  procedure clrscr(FillWith : char = ' ');
  procedure concolors(Color : Word);
  procedure conTitle(title : string);
  procedure gotoxy(x, y : byte);
  function  ConsoleFullScreen(bFullScreen: Boolean): Boolean;

// Системные функции
  function  winver : string;
  function WinIsNT: boolean;
  procedure delay(time : cardinal);
  procedure Sound(Frequency, Duration: Integer);
  function  comp_id : string;

  function  openCOM(Device : string; ComSpeed : string = '19200') : THandle;
  function  writeCOM(ComFile : THandle; str : string) : Cardinal;
  function  readCOM(ComFile : THandle) : string;
  procedure closeCOM(ComFile : THandle);

// Строковые функции
  function  str2lower(s : string) : string;
  function  str2upper(s : string) : string;

  function  num2str(num : real; d : byte = 0) : string;
  function  str2real(str : string) : real;
  function  str2int(str : string; mode : byte = 0) : longint;

  function  substr(str : string; start : cardinal; num : cardinal = 0) : string;

  function  str_replace(sb, sa, needle : string) : string;
  function  stri_replace(sb, sa, needle : string) : string;

  function  strtr(var ar1, ar2; s : string) : string;
  function  stritr(var ar1, ar2; s : string) : string;

  function  trim(s : string; CharTable : TCharTable = []) : string;

  function  convert_cyr_string(str : string; from, to_ : char) : string;

  function  base64encode(s : string) : string;
  function  base64decode(s : string) : string;

  function  rot13(s : string) : string;
  function  rot_cyr(s : string; RotateEnglish : boolean = true) : string;

  function  str_reverse(s : string) : string;

  function  format_str(str : string; lng : word; mode : byte = 0; custom_char : char = ' ') : string;

  function  translit(str : string) : string;
  function  retranslit(str : string) : string;
  function  wordwrap(str : string; width : word = 76; break : string = #10) : string;

  function  calculate(str : string) : string;

// Функции типов данных
  function  isnum(s : string) : boolean;
  function  isint(s : string) : boolean;
  function  ishex(s : string) : boolean;
  function  isbin(s : string) : boolean;
  function  isreal(s : string) : boolean;

  function  hex2Color(hex : string) : cardinal; overload;
  function  hex2Color(hex : cardinal) : cardinal; overload;

  function  Color2hex(color : cardinal) : string;
  function  GetByte(var Buf; byte_number: cardinal) : byte;

// Функции файловой системы
  function  get_current_dir : string;
  function  dir_from_path(path : string) : string;
  function  get_win_dir : string;
  function  name_from_path(path : string) : string;
  function  file_exists(path : string) : boolean;
  function  getfile(path : string) : string;
  function  file_size(path : string) : Integer;
  function  get_current_disk : string;

// Функции даты/времени
  function  getdate(format : string = 'r') : string;

// Функции массивов
  function  explode(separator, str : string) : TArray;

Некоторые функции повторяют уже присутствующие в SysUtils, но модуль не использует SysUtils, от чего размер программ уменьшается. Это не кроссплатформенно, но для Delphi эта задача и не стояла.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение first-leon » 14.01.2007 15:15:55

Replicator
Спасибо! Будем глядеть.
Но мне бы еще и кросплатформенную.
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение Serge30 » 14.01.2007 15:43:39

Посмотри в FCL в папке Web. Сам точно не разбирался, но вроде то, что тебе нужно.
Serge30
незнакомец
 
Сообщения: 6
Зарегистрирован: 08.01.2007 23:57:21

Сообщение first-leon » 14.01.2007 15:48:20

Че то нету у меня такой папочки ни FPC ни в Lazarus!
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение shade » 14.01.2007 16:54:02

Есть еще шаблонный интерпретатор, но он еще в разработке (сейчас им и занимаюсь):
Шаблонный интерпретатор почти готов (tpl_pas.zip). Осталось еще доделать блок let, но это уже в Новом году. В архиве есть пример шаблона example.tpl, с краткими комментариями по поводу всех конструкций.

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

Интересно ваше мнение по поводу синтаксиса шаблонов. В принципе у меня есть еще идеи по расширению, н-р добавить арифметические выражения {x * y}, функции {COUNT(list)}.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Serge30 » 16.01.2007 02:13:18

first-leon писал(а):Че то нету у меня такой папочки ни FPC ни в Lazarus!


У меня в FPC 2.1.1 от 28.11.2006 есть. Значит где-то недавно добавили.
Serge30
незнакомец
 
Сообщения: 6
Зарегистрирован: 08.01.2007 23:57:21

Сообщение Prof » 21.02.2007 11:51:51

CGI на FPC:
Предварительно рекомендую посмотреть
http://www.glossary.ru/pas/pasweb.htm
Prof
новенький
 
Сообщения: 14
Зарегистрирован: 27.09.2006 16:25:13

Re: CGI на Free Pascal

Сообщение L505 » 28.09.2007 09:05:33

first-leon писал(а):Подскажите библиотеку чтобы писать CGI приложения на Free Pascal.
Обратил внимание на PSP. Довольно проста, но! Нет версии для FreeBSD. А надо кросс платформенную. Желательно побольше поддерживаемых платформ.


BSD supported!

Код: Выделить всё
program test;
uses
  pwumain;
begin
  webwrite('hello mommy!');
end;
L505
незнакомец
 
Сообщения: 2
Зарегистрирован: 28.09.2007 09:03:29

Сообщение Attid » 28.09.2007 18:11:51

L505
вы бы еще пятилетний топик подняли и сказали а вот это вот работает.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение spv » 28.09.2007 20:43:17

Attid

Если я не ошибаюсь, L505- один из разработчиков PSP... И год назад, когда поднималась тема, PSP вполне себе работал под BSD...

Это ж присмотр за собственным дитем... Обида за несправедливый упрек... А Вы ругаетесь...

И правильно сказал. Иначе читал бы кто-нибудь тему и реально думал, что PSP под BSD не работает... И не попробовал бы даже...
spv
новенький
 
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

След.

Вернуться в Сторонние средства

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

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

Рейтинг@Mail.ru