К основному контенту

Сообщения

Сообщения за 2017

Библиотека Firebird для моих программ

Часто ставлю свои программы, используемые Firebird, без установки официального клиента. Для нормальной работы программы нужна библиотека fbclient.dll, лучше взятая с сервера, где лежит база Для Windows XP ещё надо Microsoft C/C ++ Runtime Libraries Microsoft.VC80.CRT.manifest msvcp80.dll msvcr80.dll Всё это надо поместить в c:\Windows\System32 или прямо в папку с программой.

Парсинг URL'а средствами Indy

Очень просто uses IdURI; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var URI: TIdURI; begin URI := TIdURI.Create('http://login:password@somehost.somedomain.com:8080/some_path/something_else.html?param1=val&param2=val'); try Memo1.lines.add(URI.Protocol); Memo1.lines.add(URI.Username); Memo1.lines.add(URI.Password); Memo1.lines.add(URI.Host); Memo1.lines.add(URI.Port); Memo1.lines.add(URI.Path); Memo1.lines.add(URI.Document); Memo1.lines.add(URI.Params); finally URI.Free; end; end;

Firebird various delimiters for GET_WORDS

Использование процедуры GET_WORDS для разных разделителей можно в таком виде: select WORD from GET_WORDS((select list(WORD, ';') from GET_WORDS((select list(WORD) from GET_WORDS('12 7712 12,12;12 333556', ' ')), ',')), ';') где используются последовательно несколько разделителей ' ', ',' и ';' .

Firebird get words

Задался вопросом сохранения настроек через запятую в одном поле с последующим разбором этой строки в самом Firebird'е. Вот что получилось. Меня устраивает. Может кому поможет. create or alter procedure GET_WORDS (     INSTR varchar(30000),     DELIMITER varchar(200) = ' ') returns (     NUMBER integer,     WORD varchar(30000)) as declare variable I integer; declare variable J integer; begin   NUMBER = 1;   I = 1;   J = position(:DELIMITER, INSTR, I);   if (J > I) then   begin     WORD = substring(INSTR from I for J - I);     while (WORD is not null) do     begin       if (char_length(trim(WORD)) > 0) then       begin         WORD = trim(WORD);         suspend;         NUMBER = NUMBER + 1;       end       I = J + char_length(DELIMITER); ...