Установлено Delphi 7 (ещё 2000 годов) и RAD Studio 10.1 Berlin (относительно новая).
Требуется работать (чтение и запись) с dbf fox pro (dBase IV). Причем с одним файлом base.dbf (по стандарту их должно быть два).
Каким компонентом это можно сделать?
Раньше использовал Delphi 7+TDBF 1.11. Но там даты из БД читаются некорректно.
А именно дата 11.11.1980 читается как 1.11.80. И дата 11.11.18 - уже непонятна 1918 или 2018?
Работает, читает-пишет. Если изначально знаешь, что даты-даты рождения, можно исправить и дополнить.
Но даты бывают разные. И логикой уже не дополнишь 11.11.18 до yyyy (1918 или 2018?)
Новая версия TDBF 701 содержит множественные ошибки при компиляции. А для RAD Studio 10.1 Berlin - именно Berlin версии нет (там есть для Токио). Предыдущие (Delphi 8-7-6..) тоже не компилируются.
Обратите внимание dbf fox pro (dBase IV).
Многие современные компоненты будут работать с dbf, но не все с dbf fox pro. А те, что будут работать с dbf fox pro, потребуют дополнительные файлы - помимо base.dbf так как по стандарту должно быть несколько файлов.
Психанул и снес свои ответы не отмечающим решения…
А именно дата 11.11.1980 читается как 1.11.80. И дата 11.11.18 - уже непонятна 1918 или 2018?
В самой базе дата полная хранится? Если да, я бы на вашем месте посмотрел код чтения и поправил бы. Если уж, как вы говорите, новая версия выдает слишком много ошибок при компиляции.
Если да, я бы на вашем месте посмотрел код чтения и поправил бы.
Это первое, что я попытался сделать. Исправить файл компонента TDBF. Он всего один.
Но не вышло. Вроде даже место в коде нашел, но не сработало.
Хм, может не там исправлял?
Часть кода TDBF
'D' : begin
G:=StrToInt(Copy(W, 7, 2))+1900; if G<=1920 then G:=G+100;
//G:=StrToInt(Copy(W, 5, 4)); //Это моё - но не сработало (
M:=StrToInt(Copy(W, 4, 2)); D:=StrToInt(Copy(W, 1, 2));
S:=FormatDateTime('yyyymmdd', EncodeDate(G, M, D));
end;
Предыдущие (Delphi 8-7-6..) тоже не компилируются.
Евгений Иванов, сегодня просматривал старые ответы и под раннеутренний кофе решил поиграться. Скачал TDBF 7.01 и поставил под Delphi 6. Для успешной компиляции пришлось лишь закомментить 3 штуки $WARN в блоке для Delphi 6/7:
Хотя, наверное, проблемные $WARN нужно перенести из блока Delphi 6 в Delphi 7. Вроде в нем эта возможность появилась. Современной версии Delphi нигде нет, проверить собираемость не на чем. БД dBASE IV тоже нигде нет.