![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClientDataSet ftArray не могу создать поле
Вова © (2013-10-20 23:47:00)В ClientDataset есть тип данных поля ftArray, ну или FtStream на худой конец. Но когда я добавляю поле с таким типом данных и нажимаю Create то мне выдается ошибка Invalid Type - почему?
А следующий вопрос будет - как затолкать массив типа byte (вообщем то динамический) в поле ClientDataSet?
sniknik (2013-10-21 20:19:00) [1]главное не путать переменные с указателями...
sniknik (2013-10-21 20:17:00) [2]пример
procedure TForm1.Button1Click(Sender: TObject);
type
TPixel = record
x: cardinal;
y: cardinal;
end;
Tmass = array of TPixel;
var
mass: Tmass;
st: string;
Size: integer;
begin
SetLength(mass, 2);
mass[0].x:= 1;
mass[0].y:= 2;
mass[1].x:= 3;
mass[1].y:= 4;
Size:= Length(mass)*SizeOf(TPixel);
SetLength(st, Size);
Move(mass[0], st[1], Size);
mass[0].x:= 0;
mass[0].y:= 0;
mass[1].x:= 0;
mass[1].y:= 0;
Move(st[1], mass[0], Size);
ShowMessage(IntToStr(mass[1].x));
end;
Вова (2013-10-21 17:34:00) [3]
> > Я не использую BD просто в локальной таблице все хранится.
> абсолютно неважно есть bd или нет, данные локально в тех
> же компонентах/типы описаны для всех. > К тому же я понял,
> что массив вовсе не из байтов должен бытьвся информация
> из байтов(более дробно из битов)... различие в интерпретации.
> > m array of cardinal;//m[i]:=x + y*x;> Во!Length(m) * SizeOf(cardinal)
> = количество байт.
я в курсе, но все равно не знаю как массив затолкать в стринг.
Туповатый (2013-10-21 14:44:00) [4]
> (более дробно из битов)
помнится, еще миллибит бит был.
sniknik (2013-10-21 12:10:00) [5]> Я не использую BD просто в локальной таблице все хранится.
абсолютно неважно есть bd или нет, данные локально в тех же компонентах/типы описаны для всех.
> К тому же я понял, что массив вовсе не из байтов должен быть
вся информация из байтов(более дробно из битов)... различие в интерпретации.
> m array of cardinal;//m[i]:=x + y*x;
> Во!
Length(m) * SizeOf(cardinal) = количество байт.
Вова (2013-10-21 11:31:00) [6]
m array of cardinal;//m[i]:=x + y*x;
Во!
Вова (2013-10-21 11:04:00) [7].....или из битов массив....вообщем как запихать любой массив )) т.к. размер занимаемый в памяти компа у массива должен быть минимальным, но одномерный массив содержит намного больше элементов, чем тот что я выше нарисовал, поэтому какой будет массив пока я не знаю, потому что не могу попробовать.
Вова (2013-10-21 11:01:00) [8]Я не использую BD просто в локальной таблице все хранится.
К тому же я понял, что массив вовсе не из байтов должен быть
TPixel record
begin
x:cardinal;
y:cardinal;
end
Tmass array of TPixel;
а такой. Делфи рядом нет, синтаксис я не помню без делфи, так что не пинать )
> ftBlob, CreateBlobField, TBlobStream + F1
попробую
Ega23 (2013-10-21 09:52:00) [9]ftBlob, CreateBlobField, TBlobStream + F1
sniknik (2013-10-21 08:32:00) [10]строка это тот же массив, просто стандартная интерпретация у типа текст.
> выдается ошибка Invalid Type - почему?
значит не поддерживается клиентским датасетом... описания типов для всех (bde, ado, ... подключенными базами), у каждого конкретного набор ограничивается своими, в основном одинаковым.
кстати ftArray не знаю кем поддерживается... вот у informix тип есть, но через что не подключайся в дельфю его "пробросить" не получалось.
Вова (2013-10-21 01:22:00) [11]
> ну вот когда - тогда и ответ.
да нет, уже сейчас, и почему для меня идеально подходит стринг, у меня в массиве числа, а не буквы...который там к тому же фиксированной длины, я что то не понял
Туповатый (2013-10-21 00:24:00) [12]
> ftArray, ну или FtStream на худой конец.
значит, для тебя идеально подходит ftString
> следующий вопрос будет
ну вот когда - тогда и ответ.