Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

InsertRecord   Найти похожие ветки 

 
Vir   (2004-08-22 01:45) [0]

В рантайме нужно добовальть запись в ClientDataSet.
функции передается Array of Const.
Поскольку количество полей заранее не известно то Array of Const динамически создаю.
И где-то ошибся с выделением памяти
вот кусок кода.


var i:integer;
   value,fname:string;
   rec:array of TVarRec ;
   p_value:Pchar;
begin
SetLength(rec,GoodsGrid.FieldCount-1);
for i:=0 to GoodsGrid.FieldCount-1 do
 begin
 fname:=GoodsGrid.Fields[i].FieldName;
 if DataForm.GoodsQuery.FieldByName(fname).Value<>NULL
   then value:=DataForm.GoodsQuery.FieldByName(fname).Value
   else value:="NULL!";
 p_value:=StrAlloc(length(value));
 FillMemory(p_value,length(value)+1,0);
 MoveMemory(p_value,@value[1],length(value));
 rec[i].VType:=6;
 rec[i].VPChar:=p_value;
 end;
DataForm.ClientDataSet1.InsertRecord(rec);


Сам по себе он срабатывает но, по выходу из процедуры выпадаю в exception "Invalid Pointer Operation"
Помогите где ошибся?


 
Desdechado ©   (2004-08-22 19:17) [1]

что такое TVarRec?
и зачем вот это
 p_value:=StrAlloc(length(value));
 FillMemory(p_value,length(value)+1,0);
 MoveMemory(p_value,@value[1],length(value));
 rec[i].VType:=6;
 rec[i].VPChar:=p_value;


 
Erik1   (2004-08-23 10:46) [2]

С масивами надо работать разрешоными средствами, а не топором по принципу куда нибудь да попадем. Вобщем код полная ерунда, откуда такой взялся непонятно. Создай масив
Rec: Array of Variant;
begin
 j := 0;
 SetLength(Rec, FieldCount);
 for i := 0 to FieldCount-1 do
   if Fields[i].Value <> nil then
   begin
    Rec[j] := Fields[i].Value;
    inc(j);
   end;
 SetLength(Rec, j+1);

А вобщето все это можно сделать еще проще:
DataForm.ClientDataSet1.InsertRecord(DataForm.GoodsQuery.Fields);



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
8-1087798849
Korneley
2004-06-21 10:20
2004.09.19
Нужен пример захвата видео


14-1093539517
Никита
2004-08-26 20:58
2004.09.19
Где можно найти хорошую книгу по ассемблеру?


14-1093938568
Prohodil Mimo
2004-08-31 11:49
2004.09.19
Алгоритм шифрования паролей на суд народа :о)


9-1083360628
wiz
2004-05-01 01:30
2004.09.19
2D аркада на 3D движке (oGL). demo N8


9-1084886879
istemy
2004-05-18 17:27
2004.09.19
Сферические координаты в OpenGL