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

Вниз

Array Of Variant - Read of address 00000000   Найти похожие ветки 

 
YuRock ©   (2004-02-26 14:04) [0]

Здравствуйте, уважаемые мастера! Уже третий день пытаюсь найти ошибку, и не получается.

Вызывается функция:


function ibGetSQLRes(db: TIBDatabase; tr: TIBTransaction; SQLStr: string): Variant;
var
Query: TIBQuery;
begin
Query := TIBQuery.Create(nil);
try
Query.Database := db;
Query.Transaction := tr;
Query.SQL.Text := SQLStr;
Query.Open;
Result := Query.Fields[0].Value;
finally
Query.Free;
end;
end;


При ее трассировке (по F8) все проходит нормально. На последнем end"е (при выходе из ф-ции) нажимаю F7 - попадаю в следующую ф-цию (из модуля Variants):


procedure _VarToDynArray(var DynArray: Pointer; const V: TVarData; TypeInfo: Pointer);
asm
CALL DynArrayFromVariant
OR EAX, EAX
JNZ @@1
JMP VarCastError
@@1:
end;


И сразу по F7, соответственно, в DynArrayFromVariant:


procedure DynArrayFromVariant(var DynArray: Pointer; const V: Variant; TypeInfo: Pointer);
var
DADimCount, VDimCount: Integer;
DAVarType, I: Integer;
lengthVec: System.PLongInt;
Bounds, Indices: TBoundArray;
Value: Variant;
PDAData: Pointer;
begin
{ Get Variant information }
VDimCount:= VarArrayDimCount(V);

{ Allocate vector for lengths }
GetMem(lengthVec, VDimCount * sizeof(Integer));

{ Initialize lengths - NOTE: VarArrayxxxxBound are 1-based.}
for I := 0 to VDimCount-1 do
PIntegerArray(lengthVec)[I]:= (VarArrayHighBound(V, I+1) - VarArrayLowBound(V, I+1)) + 1;

{ Set Length of DynArray }
DynArraySetLength(DynArray, PDynArrayTypeInfo(TypeInfo), VDimCount, lengthVec);
...
end;


Так вот, валится при вызове "DynArraySetLength" - и не удевительно, ведь DynArray = nil!!!

Пожалуйста, объясните, что вообще происходит?! Зачем, почему и откуда эти ф-ции вообще вызываются? У меня эта проблема уже всю душу выела. Пожалуйста, попробуйте помочь. Спасибо.


 
Silver Alex ©   (2004-02-26 14:14) [1]

а чему присваиваешь результат этой функции? кода побольше покажи


 
YuRock ©   (2004-02-26 14:20) [2]

Спасибо большое! Я присваивал ее переменной типа TArrayOfVariant = Array Of Variant, а ф-ция возвращала Variant! Я 3 дня не мог этого заметить!

Спасибо большое!



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
3-25682
sohat
2004-02-11 10:09
2004.03.09
Общий коннект для COM объектов.


1-25816
Galerus
2004-02-25 20:39
2004.03.09
TStringGrid


14-25930
Chupcan
2004-02-14 14:18
2004.03.09
Ос на Паскале?


14-25940
vajo
2004-02-14 18:54
2004.03.09
Компаненты Semples для D7


7-25950
YuRock
2003-12-19 14:47
2004.03.09
Программы для работы с измерителем VEEDER-ROOT