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

Вниз

Проблема с открытием таблици   Найти похожие ветки 

 
SZap   (2003-02-26 19:14) [0]

Есть некая dbf таблица, при открытии ее Delphi ругается "не могу найти индекс"...
На сколько я понимаю, гдето в нутрях dbf прописано, что для этой таблици сужествует индекс...
У меня этого индекса нет, да и ненужен он мне...
Подскажите пожалуйста:
- как мне открыть эту таблицу? (програмно)
- можно ли из этого dbf удалить информацию о индексах?


 
sniknik   (2003-02-26 20:09) [1]

28 байт заголовка считай с нуля (заголовой идет с начала таблици), обнули его. (самый простой хотя и немного хакерский способ)


 
SZap   (2003-02-26 20:28) [2]

>sniknik
а по другому, более корректно, никак?


 
sniknik   (2003-02-26 21:36) [3]

Открой в Фоксе (или через ODBC фоксовый драйвер) сам снимет, и еще можно через функцию какуюто dbi**** не помню (BDE).

но в итоге любой способ лезет в заголовок и обнуляет этот байт. что тебе проще? выбирай.


 
DarkGreen   (2003-02-27 05:34) [4]

А через Database Desktop не получится?


 
SZap   (2003-02-27 09:33) [5]

>DarkGreen
Получается, но меня интересует как это програмно сделать???


 
SZap   (2003-02-27 12:06) [6]

Есть какието еще варианты???


 
sniknik   (2003-02-27 12:10) [7]

Тебе трех недостаточно? хотябы одним сделай. Или компонент нужен который будет признак снимать? ;(


 
gek   (2003-02-27 12:10) [8]

Есть на сайте Борланд"a специальная утилита для восстановления порушенных таблиц. Вот ее и надо искать


 
SZap   (2003-02-27 12:23) [9]

sniknik> нет, все предложенное меня неустраивает...
gek> это тоже, что и с помощью Database Desktop...

у меня программа использует чужую таблицу, обновляется она примерно раз в час, каждый раз использовать какието утилиты устать можно, хочу, чтобы программа сама все делала (копировала в нужное место, удаляла информацию о индексе, ну и все остальное, что от нее требуется)


 
gek   (2003-02-27 12:29) [10]


> (копировала в нужное место, удаляла информацию о индексе,
> ну и все остальное, что от нее требуется)

Ну а зачем индексы то удалять?
если каждый час рушатся индексы, тут что-то не так.


 
SZap   (2003-02-27 12:33) [11]

gek> индексы не рушатся, их просто у меня нет, файл dbf лежит на сервере, а индексы у юзеров на компах...


 
sniknik   (2003-02-27 12:34) [12]

SZap (27.02.03 12:23)
ну тоды я тебя разочарую, других способов нет, может только замаскированные, а на самом деле способ единственный открываеш таблицу исправляеш байт, все. Кто это будет делать неважно.


 
Anatoly Podgoretsky   (2003-02-27 13:41) [13]

SZap (27.02.03 09:33)
dbiRegisterCallback
остальные методы хакерские и опасные


 
SZap   (2003-03-03 16:28) [14]

Хорошо, убедили...
а может кто нибудь показать пример кода, как работать с dbiRegisterCallback ???


 
Anatoly Podgoretsky   (2003-03-03 16:32) [15]

А ты ленивый Парамоша


 
SZap   (2003-03-03 16:39) [16]

>>Anatoly Podgoretsky
может ты и прав...
а может я не такой умный как ты :(


 
Anatoly Podgoretsky   (2003-03-03 16:45) [17]

Рассказываю, в хелпе нажимаешь левую кнопку и тянешь мышко до конца текста (не отпуская), затем Ctrl+C, открываешь редактор и в нем Ctrl+V (в нужном месте конечно).

Потренируйся и если не получится, то придешь и подробно опишесь свои шаги.

Но мне кажется, тебе еще рано с компьютером работать.


 
Ditrix   (2003-03-03 18:05) [18]

функция прописывает нули в заголовок dbf файла и он свободен для открытия

function OpenDBF(aFName: string): byte;
var ccode, cnt, smb: byte;
f: file of byte;
begin
ccode:= 1;
smb:= 0;
Assign(f, aFName);
{$I-}
Reset(f);
for cnt:= 15 to 31 do begin
seek(f,cnt); write(f,smb);
end;
Close(f);
if IOResult <> 0 then ccode:= 0;
{$I+}
OpenDBF:= ccode;
end; // OpenDBF


 
SZap   (2003-03-05 16:36) [19]

>>Ditrix
Спасибо...


 
sniknik   (2003-03-05 16:46) [20]

???????? в итоге оказывается нужно было не правильное решение, а готовый код? ???????

кстати данный код чреват глюками (перекрываются зарезервированные байты, 29 точно знаю в фоксе используется)


 
SZap   (2003-03-06 09:25) [21]

>sniknik
ты немного неправ, нужно правильное решение, выраженное готовым кодом...
Если кто нибыдь поделится примером работы с dbiRegisterCallback, буду премного благодарен...


 
sniknik   (2003-03-06 10:54) [22]

правильное решение (2 варианта) и неправильное тебе давно подсказали, но до сих пор ждеш. вот я решил код нужен. и вот этот пост SZap (05.03.03 16:36) добавил уверенности (Анатолий который для тебя функцию вспомнил спасиба не удостоился).

ладно это я так. продолжим. (хотя сейчас повторять буду см. Anatoly Podgoretsky © (03.03.03 16:45) но другими словами).
береш текст -> dbiRegisterCallback переносиш в редактор дельфей, ставиш курсор на этот текст, нажимаеш Ctrl (держиш) и нажимаеш F1 - открывается хелп по нему, видиш ->
Example 1: Create a callback that handles the condition of a missing .MDX file for a dBASE file or a missing .CDX file for a FoxPro file: { - Код вызова, пример - }
чего еще? или тебе сюда и код скопировать? Пара копирований и пара проб и все у тебя заработает (уверен, хотя сам этим никогда не пользовался, можеш считать это предубеждением)


 
SZap   (2003-03-06 11:15) [23]

>sniknik
Спасибо большое, извените идиота, в рот положили а не разжевали...

Спасибо всем кто отвечал...


 
Anatoly Podgoretsky   (2003-03-06 12:20) [24]

SZap (06.03.03 09:25)
Если воспользуешься хакерскими советами то жди неприятностей в порчей, надежный путь тебе указан, этим же путем пользуется и Database Desktop. Код примера не жди, это наглость просить скопировать код из хелпа, это твое домашнее задание научиться работать с Виндоус, копировать и вставлять тексты, копировать и удалять файлы, звапускать и закрывать программы и т.д.


 
SZap   (2003-03-06 13:31) [25]

>Anatoly Podgoretsky
:) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
по поводу: "копировать и удалять файлы" это тоже вопрос, как скопировать файл из под Delphi (хотя это уже другой вопрос)...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
1-76412
Igor-san
2003-03-06 16:37
2003.03.24
Как прочитать путь из ярлыка,например, Word XP ?


3-76371
polecat79
2003-03-06 16:48
2003.03.24
Не допустимое символьное значение для спецификации броска


14-76588
Mantic0re
2003-03-03 07:12
2003.03.24
16К - минимум для экзешника под дельфи ?!


14-76668
Новичек
2003-03-09 11:24
2003.03.24
Новости VCL


3-76267
ДмитрийБ
2003-03-06 18:29
2003.03.24
программная регстрация в BDE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский