Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка данных в массивы / 4 сообщений из 4, страница 1 из 1
04.09.2002, 20:14
    #32048254
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных в массивы
Привет.
Кто нибудь знает, как можно и можно ли вобще в процедурах и триггерах работать с полями типа "массив".
Выбирать нужно по одному значению, а обновльть и вставлять - хоть как нибудь.
...
Рейтинг: 0 / 0
05.09.2002, 11:31
    #32048347
Вставка данных в массивы
Привет!
Выбирать в процедурах легко - что вроде select MyArr[:i]... Подробнее смотри доку про процедуры, там есть хороший пример.
А вставлять - только через АПИ или используя FIBPlus или IBProvider. IBX нельзя, по-моему...
Подробнее в книге написано.

Кстати, а что за задача, в которой массивы понадобились? Почему нельзя таблицами-деталями обойтись?

С уважением,
Алексей.
...
Рейтинг: 0 / 0
05.09.2002, 13:32
    #32048423
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных в массивы
Алексею Ковязину:
Я пробовал запрос со скобками делать и раньше, но т.к. в массив вставить ничего не мог, то получал null.
Я массив использовать хотел для перекодировки кодов в символы, т.к. мне надо было случайным образом строки генерировать. Ну а цифры то генерировать легче, вот я и подумал, что массвы тут удобно использовать. Оно у меня сейчас в dll генерируется, а в будущем сервер под Free переводить будем и хотелось бы от библиотек отказаться, чтоб мороки меньше было.
К стати говоря, я сначала UDF сделал, которая готовые строки возвращает. Вот текст:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function RandStr:pchar; stdcall;
var
  i,j:byte;
  c:pchar;
begin
  GetMem(c, 256 );
  for j:= 0  to  254  do
  begin
    i:=Random( 35 );
    if i<= 9  then
      (c+j)^:=Chr(Ord('0')+i)
    else
      (c+j)^:=Chr(Ord('A')+i- 9 )
  end;
  (c+ 255 )^:=# 0 ;
  Result:=c
end;

Обьявил её так:
Код: plaintext
1.
2.
DECLARE EXTERNAL FUNCTION RANDSTR
RETURNS CSTRING( 256 ) FREE_IT
ENTRY_POINT 'RandStr' MODULE_NAME 'TutLib';

И эта функция после трёх вызовов разрывает соединение с базой. Что я тут неправильно сделал?
...
Рейтинг: 0 / 0
05.09.2002, 13:33
    #32048425
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных в массивы
Тестил эту функцию на 10000 вызовов в самом Дельфи - всё великолепно работает.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка данных в массивы / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]