Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

  begin

   EncodeFieldDesc(PFieldDescList(pFieldDesc)^[I], Name,DataType, Size);

  end;

  { Ρ‚ΠΈΠΏ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° nil, Ρ‚.ΠΊ. поля логичСскиС }

  Check(DbiTranslateRecordStructure(nil, iFields, pFieldDesc, nil, nil, pFieldDesc));

  { здСсь hCursor ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ }

  Check(DbiCreateInMemTable(DBHandle, szTblName, iFields, pFieldDesc, hCursor));

 finally

  if pFieldDesc <> nil then FreeMem(pFieldDesc, iFields * SizeOf(FLDDesc));

  SetDBFlag(dbfTable, False);

 end;

end;


end.


{Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ взят ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π›Π»ΠΎΠΉΠ΄Π°!}

Поиск 

FindKey для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ

Delphi 1 

with Table1 do

begin

 SetKey;

 FieldByName('State').AsString := 'CA';

 FieldByName('City').AsString := 'Scotts Valley';

 GotoKey;

end;

Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Findkey с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ DBase Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ поля. 

oEmetb.indexName:='PrimaryKey';

if oEmeTb.findkey([prCLient,prDiv,prEme]) then

Π³Π΄Π΅ findkey ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Primary Keyfields.

Π― ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ имя индСкса (Index) Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ oEmeTb.indexfieldnames, Π½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ваш список ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π² точности ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅. 

oEmetb.indexfieldNames:='EmeClient;EmeDiv;EmeNo';

if oEmeTb.findkey([123,'a',96]) then 

Поиск ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ записи ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ вставлСна

Если Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования (Edit) ΠΈΠ»ΠΈ вставки (Insert), Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° Π²Ρ‹ автоматичСски Π΄Π΅Π»Π°Π΅Ρ‚Π΅ постинг записи. И, СстСствСнно, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π° (Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) записи, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Бпособ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TTable, связанный с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎ Π½Π΅ΠΉ поиск. Π­Ρ‚ΠΎΡ‚ ΠΏΡƒΡ‚ΡŒ самый простой ΠΈ эффСктивный.

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ двумя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ TTable (ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ для поиска, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ для рСдактирования.

Π’Π°ΡˆΠ° Β«ΠΊΠ»ΡŽΡ‡Π΅Π²Π°ΡΒ» Ρ‚Π°Π±Π»ΠΈΡ†Π° BDE Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ созданный ΠΈΠΌ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ»ΡŽΡ‡. Для установки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Database Desktop.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π° основС поля ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ индСкс (Primary Index). Π—Π°Ρ‚Π΅ΠΌ создайтС ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ DB-ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для нашСго Β«Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ».

Моя тСхнология Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ввСсти Ρ‡Π°ΡΡ‚ΡŒ записи, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅). Π—Π°Ρ‚Π΅ΠΌ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сущСствования я Π΄Π΅Π»Π°Π» FindKey. Если ΠΎΠ½ находился, Ρ‡Π΅Ρ€Π΅Π· MessageDlg я ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» Π΅Π³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ рСдактирования, Π½Π΅ создавая Π½ΠΎΠ²ΠΎΠΉ записи. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ссли FindKey Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚, dbCursor Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ пСрСмСщаСтся, ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½Π°. Если запись Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΎΠ½Π° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ рСдактирования для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смог ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΅Π΅ содСрТимоС. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: 

Table.Append;

Table.FieldByName('KeyField').AsString := UserEntry;

{ … позволяСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ поля записи … }

{ Π² это врСмя ΠΊΠ½ΠΎΠΏΠΊΠ° Cancel Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ записи. }

Π’ ΠΌΠΎΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ рСдактирования ΠΏΠΎΠ»Π΅ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ (disabled) ΠΈ показываСтся с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ соблюдСна :-). 

Поиск Ρ„Ρ€Π°Π· ΠΈ записСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹

Delphi 1 

Для тСкста ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DBmemo. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй это Π΄Π΅Π»Π°ΡŽΡ‚ сканированиСм Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ» (ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ постит запрос), Π½ΠΎ для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ускорСния процСсса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ способ ΠΏΡ€Π΅-сканирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°ΡŽΡ‚ «большиС ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊΠΈΒ» (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…):

1. ΠΏΡ€ΠΈ внСсСнии Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠΉ записи ΠΎΠ½Π° сканируСтся Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ опрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ список ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, Ρ‚Π°ΠΊ ΠΈ всСх слов, Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² стоп-листС [ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Β«theΒ», Β«ofΒ», Β«and"])

2. ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова вносятся Π² список ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов со ссылкой Π½Π° Π½ΠΎΠΌΠ΅Ρ€ записи, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«hangΒ»,46 ΠΈΠ»ΠΈ Β«PCΒ»,22.

3. ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ запрос, ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ всС записи, Π³Π΄Π΅ встрСчаСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«hangΒ» ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° записСй 11, 46 ΠΈ 22, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Β«PCΒ» β€” записи с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ 91, 22 ΠΈ 15.

4. Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ объСдиняСм числа ΠΈΠ· всСх списков c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ логичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ запись ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 22 (Π² случаС логичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° AND), ΠΈΠ»ΠΈ записи 11, 15, 22, 46 ΠΈ 91 (Π² случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° OR). Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΠΉΡ‚Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ эти записи.

5. для синонимов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ синонимов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«hangΒ»,"kaputΒ»), ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ поиск синонимов, добавляя ΠΈΡ… ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ списку ΠΊΠ°ΠΊ ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ слово.

6. слова, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ окончания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«hangΒ» ΠΈ Β«hangedΒ»), ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ синонимами, ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСм, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΉ слов, вычисляя ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΠΎ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слову Β«hangΒ» соотвСтствуСт любоС слово, Ρ‡ΡŒΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 4 Π±ΡƒΠΊΠ²Ρ‹ Ρ€Π°Π²Π½Ρ‹ Β«hangΒ»).

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ мноТСстно тСхничСских Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, организация списков, ΠΈΡ… эффСктивноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ объСдинСниС. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ этой характСристики ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π΄Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ быстроС врСмя поиска (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ поиска Nexus, Lycos ΠΈΠ»ΠΈ WebCrawler, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ сотни тысяч записСй Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСкунды).

dBase 

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ записи Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…

Delphi 1

{Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ физичСский Π½ΠΎΠΌΠ΅Ρ€ записи xBase. Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ DBITYPES, DBIPROCS, ΠΈ DBIERRS Π² спискС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Ѐункция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‚ΠΈΠΏΠ° TTable (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Table1).}

function Form1.Recno(oTable: TTable): Longint;

var

 rError: DBIResult;

 rRecProp: RECprops;

 szErrMsg: DBIMSG;

begin

 Result := 0;

 try

  oTable.UpdateCursorPos;

  rError := DbiGetRecord(oTable.Handle, dbiNOLOCK, nil, @rRecProp);

  if rError = DBIERR_NONE then Result := rRecProp.iPhyRecNum

  else case rError of

  DBIERR_BOF: Result := 1;

  DBIERR_EOF: Result := oTable.RecordCount + 1;

  else

   begin

    DbiGetErrorString(rError, szErrMsg);

    ShowMessage(StrPas(szErrMsg));

   end;

  end;

 excepton

  E: EDBEngineError do ShowMessage(E.Message);

 end;

end;

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ dBase, Ссли отсутствуСт Ρ„Π°ΠΉΠ» индСкса?

Nomadic совСтуСт:

Для dBase-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ встроСнными срСдствами Ρ‚Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡˆΡŒ индСкс, Ссли Π΅Π³ΠΎ Π½Π΅Ρ‚. Для этой Ρ†Π΅Π»ΠΈ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для физичСского удалСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° индСксации Π² самом dbf-Ρ„Π°ΠΉΠ»Π΅ ΠΈ послС Π΅Ρ‘ примСнСния Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ индСксы Π·Π°Π½ΠΎΠ²ΠΎ.

Для этого Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„Π°ΠΉΠ»Π° dbf ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ 28(dec) Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΡˆΡŒ 0.

По Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚(я Π΄ΠΎΠ»Π³ΠΎ бился) β€” Π²ΠΎΡ‚ для Paradox Ρ‚Π°Π±Π»ΠΈΡ† всС Ok.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BDE Callbacks. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Delphi 2.0, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π½Π΅ провСрял:

=== Callback.pas ===

unit Callback;


interface


uses BDE, Classes, Forms, DB, DBTables;


type

 TForm1 = class(TForm)

  Table1: TTable;

  procedure FormCreate(Sender: TObject);

  procedure FormDestroy(Sender: TObject);

 private

  CBack: TBDECallback; // ΠΎΠΏpΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ BDE CallBack

  CBBuf: CBInputDesc; // ΠΏpосто Π±ΡƒΡ„Π΅p

  function CBFunc(CBInfo: Pointer): CBRType; // Callback-функция

 public

 end;


var

 Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);

begin

 Session.Open; // Π’ это Π²pСмя сСссия Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΡ‚ΠΊpΡ‹Ρ‚Π°

 CBack := TBDECallback.Create(Session {HΠ°ΠΏpΠΈΠΌΠ΅p}, nil, cbINPUTREQ, @CBRegBuf, SizeOf(CBBuf), CBFunc, False); // ОпpΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Callback

 Table1.Open;

 //^^^^^^^^^^^ - здСсь Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ошибка с индСксом, etc.

end;


procedure TForm1.FormDestroy(Sender: TObject);

begin

 CBack.Free; // ОсвобоТдаСм CallBack

end;


function TForm1.CBFunc(CBInfo: Pointer): CBRType;

begin

 with PCBInputDesc(CBInfo)^ do case eCbInputId of

 cbiMDXMissing {, cbiDBTMissing - ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ BLOB-поля}: