Считывание данных из файла *.loa

Автор Kredo, 11.10.05, 08:38:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Kredo

Мне необходимо считать все значения из файла. Если считываю один столбец, тогда всё без проблем, при считывании 2 и более столбцов выдаются непонятные значения, которые не соответсвуют действительности. Что не так?
Вот кусок кода:

        resRecord:=DataBase.ksRelation(dbRef);
        DataBase.ksRInt(’R’);
        DataBase.ksRInt(’H1’);
        DataBase.ksRDouble(’H2’);
        DataBase.ksRInt(’L2’);
        DataBase.ksRInt(’L1’);
        DataBase.ksRDouble(’R1’);
        DataBase.ksEndRelation;
       
        DataBase.ksDoStatement(dbRef,resRecord,’’);

        Item:=ksLtVariant(Kompas.GetParamStruct(ko_LtVariant));
        Arr:=ksDynamicArray(Kompas.GetDynamicArra(LTVARIANT_ARR));
       
        Item.Init;
        Item.intVal:=0;
        Arr.ksAddArrayItem(-1,Item);
        Item.Init;
        Item.intVal:=0;
        Arr.ksAddArrayItem(-1,Item);
        Item.Init;
        Item.doubleVal:=0.0;
        Arr.ksAddArrayItem(-1,Item);
        Item.Init;
        Item.intVal:=0;
        Arr.ksAddArrayItem(-1,Item);
        Item.Init;
        Item.intVal:=0;
        Arr.ksAddArrayItem(-1,Item);
        Item.Init;
        Item.doubleVal:=0.0;
        Arr.ksAddArrayItem(-1,Item);
       
        Par:=ksUserParam(Kompas.GetParamStruct(ko_UserParam));
        Par.Init;
        Par.SetUserArray(Arr);
       
        repeat
       
        Code:=DataBase.ksReadRecord(dbRef,resRecord,Par);

                if Code0 then
                begin
                Arr.ksGetArrayItem(0,Item);
                rodInfo.R:=Item.intVal;
                Arr.ksGetArrayItem(1,Item);
                rodInfo.H1:=Item.intVal;
                Arr.ksGetArrayItem(2,Item);
                rodInfo.H2:=Item.doubleVal;
                Arr.ksGetArrayItem(3,Item);
                rodInfo.L2:=Item.intVal;
                Arr.ksGetArrayItem(4,Item);
                rodInfo.L1:=Item.intVal;
                Arr.ksGetArrayItem(5,Item);
                rodInfo.R1:=Item.doubleVal;
               
                msg:=Format(’R=%d H1=%d H2=%f L2=%d L1=%d R1=%f’,[rodInfo.R, rodInfo.H1, rodInfo.H2, rodInfo.L2, rodInfo.L1, rodInfo.R1]);
                Kompas.ksMessage(msg);
                end;

Kredo

Всё стало работать нормально, когда все типы данных объявил как Double. Может кто подскажет почему при типе Integer у меня не работало.

slаviаtiоn

ЦитироватьВсё стало работать нормально, когда все типы данных объявил как Double. Может кто подскажет почему при типе Integer у меня не работало.
А как с ksLtVariant::longVal?

Kredo

Попробуй использовать его после в самом конце, после Double. У меня лично надо было ещё и строковое значение вытаскивать, так работать начало только после того, как я strVal поместил после всех объявленных DoubleVal. Хотелось бы узнать мнение опытных, почему так происходит? Почему не работает, если я объявлю типы переменных в любом месте?