Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непонятные тормоза при чтении из файла [D7, WinXP]


lee_mour ©   (2006-05-06 15:03:00) 

Есть такой код:


function GetDbAttr(Pos: Integer; Value: Integer): Variant;
var Tmp: TOrganization;
begin
 Result := '##error## '+inttostr(pos);
 frmDesktop.lblAuthType.Caption := Inttostr(filepos(database));
 if ((Pos < 0) or (Pos > FileSize(database))) then Exit;
 Seek(Database, Pos);
 Read(Database, Tmp);
 if (Value=DA_NAME) then Result := Tmp.Name;
end;


так вот, если делать GetDbAttr(1, DA_NAME) то всё чики-пуки, а если GetDbAttr(0, DA_NAME) - прога виснет. В чём секрет?


lee_mour   (2006-05-07 11:07:00) [1]

TOrganization= packed record
хм... а он строчки с кириллицей поганитю...


han_malign   (2006-05-06 16:26:00) [2]

TOrganization= packedrecord
- не поможет ли?


> (vlLow, vlMedium, vlHigh, vlNone)

- а вот размер перечислений, от версии к версии и от опций к опциям, я даже предсказать не возьмусь...


lee_mour   (2006-05-06 15:46:00) [3]

Jeer, да что ты говоришь!


Jeer   (2006-05-06 15:40:00) [4]

Извращенцы.


lee_mour   (2006-05-06 15:33:00) [5]

Я этот файл взял со старой версии, как был так и остался, и методика обработки не изменилась. А теперь мне надо посчитать, сколько записей в файле имеют атрибут "Холдинг" (IsHolding=True), и при проходе через эту позицию он виснет.

Структура вот:


type

 TOrganization=record

   Name           : String[100];

   AdressIndex    : String[8];
   AdressCity     : String[50];
   AdressStreet   : String[100];
   AdressDom      : String[4];
   AdressOffice   : String[4];
   OfficePhoneC   : String[6];
   OfficePhoneN   : String[8];

   RukovodName    : String[80];
   RukovodPhoneC  : String[6];
   RukovodPhoneN  : String[8];
   RukovodPhoneE  : String[4];
   ExtPhones      : String[110];

   Vajnost        : (vlLow, vlMedium, vlHigh, vlNone);
   VajnostFlag    : (vfRed, vfGreen, vfBlue, vfNone);
   Prozvon        : (psProzvoneno, psNeprozvoneno, psPM);
   Vozrast        : (tsOld, tsNew);
   Obrabotka      : (osObrabotano, osNeobrabotano);
   Prodagi        : (pcLow, pcMedium, pcHigh, pcNone);
   SpecFlag       : (sfRed, sfGreen, sfBlue, sfNone);

   ExtInfoFile    : String[20];    // ext-info filename
   Category       : String[80];
   Region         : String[80];
   IsInHolding    : Boolean;
   HoldingName    : String[100];

   WWW            : String[80];
   Email          : String[80];
 end;


han_malign   (2006-05-06 15:26:00) [6]


> В чём секрет?

- может в содержимом файла в нулевой позиции?
Или в использовании динамических типов в TOrganization?

А скорее всего "ошибка в 17-й строке"(c)app


Наверх

Титульная страница Поиск, карта сайта Написать письмо