Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.01 c
3-25697
Yrtimd
2004-02-10 18:49
2004.03.09
Как в ehDbGrid узнать, какую запись выбрал пользователь?


1-25763
Romstein
2004-02-26 16:13
2004.03.09
2D движок


1-25733
Rayslava
2004-02-26 17:48
2004.03.09
RichEdit из Dll


3-25685
PavelSin
2004-02-11 09:42
2004.03.09
EhLib first line


1-25802
Германн
2004-02-19 02:33
2004.03.09
Exceptions. Можно ли получить полный контроль над ними?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский