Главная страница
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.017 c
3-25683
gedd
2004-02-09 07:22
2004.03.09
ehlib


7-25947
LordBTR
2003-12-17 11:51
2004.03.09
Группы пользователей домена


1-25771
Yad
2004-02-26 13:02
2004.03.09
Динамическое создание контролов


1-25731
Mihalich
2004-02-27 00:22
2004.03.09
Работа с файлом смешанного типа.


3-25705
Belkova
2004-02-10 16:58
2004.03.09
Уважаемые мастера Delphi! Подскажите, как организовать цикл по вы