Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
14-1093852029
GRAND25
2004-08-30 11:47
2004.09.19
Конкурс футбольных прогнозистов Лиги Чемпионов сезона 2004/2005


14-1093570865
Думкин
2004-08-27 05:41
2004.09.19
С днем рождения! 27 августа


14-1093434174
Гаврила
2004-08-25 15:42
2004.09.19
Кто знает грибные места в подмосковье?


1-1094100604
bjohny
2004-09-02 08:50
2004.09.19
Fast report 2.47


3-1093269521
realbeer
2004-08-23 17:58
2004.09.19
уникальность строки dbf




   Наверх