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

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

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


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