Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 2
Регистрация: 07.10.2013
Сообщений: 34
1

Как "доказать" Delphi, что файл с расширением не DBF - все таки dbf

22.10.2013, 11:59. Показов 1247. Ответов 10
Метки нет (Все метки)

Добрый день, коллеги-сокнопочники!
Бьюсь-ломлюсь в открытую дверь (как мне кажется).
Есть файл с именем *.0ew или *.1t6, но на самом деле это dbf-ный файл.
Его надо найти, выбрать и содержимое распечатать (таблица из двух колонок), при этом файл должен остаться в первозданном виде.
С OpenDialog разобралась - все получается отлично, если расширение файла dbf.
И Операционка и Delphi ориентируются на расширение и в оригинальном виде с файлом работать не хотят - говорят Corruption detected и многое подобное. Попробовала переименовывать и копировать с другим именем чтобы дальше с ним работать, но получается громоздко, некрасиво, тяжело, файл все время участвует то в копировании, то еще в чем-нибудь.
Где-то я краем глаза наталкивалась на процедуру (ил что-то...) ChangeFileExt(); или OnSelectChange..... OnTypeChange.......
Просветите - как заставить ДельфЮ видеть файл не по расширению, а как Я скажу?
Буду ОЧЧЧЧЧЧЧЧЧЕНЬ признательна всем откликнувшимся!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 11:59
Ответы с готовыми решениями:

Как подключить базу данных созданную в DBF Navigator с форматом ".dbf" к приложению на Lazarus?
1) Обязательно ли эти БД хранить ТОЛЬКО на диске C 2) Дайте полный алгоритм подключения их к...

Необходимо произвести "Update" одинаковых данных в 2.dbf из 1.dbf
зарание извеняюсь за корявость темы? вопрос такой. Есть два dbf файла структура баз полностью...

Как переименовать файл в папке в имя папки с добавлением расширения ".dbf"?
Доброго времени суток! :) Уважаемые форумчане. Помогите пожалуйста переименовать файлы: Есть...

Файл формата dbf. отображаются только "???"
Привет Всем !!. Не знаю, может и не по теме, но на Вас последняя надежда. Мне нужно открыть файл...

10
пофигист широкого профиля
4457 / 2945 / 830
Регистрация: 15.07.2013
Сообщений: 16,939
22.10.2013, 12:09 2
Цитата Сообщение от Аглая Посмотреть сообщение
как заставить ДельфЮ видеть файл не по расширению, а как Я скажу?
Вообще-то говоря Дельфи глубоко пофигу какое расширение у файлов, если это не файлы дельфийских исходников. Так что ее трудно заставить.
0
3 / 3 / 2
Регистрация: 07.10.2013
Сообщений: 34
22.10.2013, 14:15  [ТС] 3
Ну не может быть, чтоб не обойти эту маленькую засаду....

Вот, что творится:

фрагмент проги, где я пытаюсь вытащить файл для дальнейшей распечатки (расширение не DBF)

procedure TForm1.Button3Click(Sender: TObject);
begin
If openDialog2.Execute
then begin
Edit6.Text:=OpenDialog2.FileName;
FkName:=OpenDialog2.FileName;
with query1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('Select fio, summa from '+FkName+'');
Active:=True;
end;
end;
end;

Тут исполнение ругается на "Token not found"...

Но стоит только "подцепить" файл - тот же самый, но переименованный в *.DBF - все работает идеально!!!

можно ли обойтись без копирования, переименования, и пр. возни???
0
Эксперт Pascal/Delphi
4858 / 2735 / 845
Регистрация: 04.10.2012
Сообщений: 9,972
22.10.2013, 14:28 4
Цитата Сообщение от Аглая Посмотреть сообщение
переименованный в *.DBF
а что мешает программно прописать расширение?
0
пофигист широкого профиля
4457 / 2945 / 830
Регистрация: 15.07.2013
Сообщений: 16,939
22.10.2013, 14:30 5
Цитата Сообщение от Аглая Посмотреть сообщение
SQL.Add('Select fio, summa from '+FkName+'');
Тут все именно так как в программе? Опечаток нет?
0
3171 / 1930 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
22.10.2013, 14:35 6
Цитата Сообщение от Аглая Посмотреть сообщение
но на самом деле это dbf-ный файл
И что у него в самом первом байте написано (Hex)?
0
3 / 3 / 2
Регистрация: 07.10.2013
Сообщений: 34
22.10.2013, 15:02  [ТС] 7
Получается очень громоздко т.к. исходный файл должен остаться в первозданном виде:
1. "Вытаскиваю" с помощью OpenDialog
2. копирую с другим расширением
3. цепляю к новому имени переменную
4. запихиваю эту переменную для обработки либо через Table либо через Query

Работает через раз.....

Добавлено через 1 минуту
Самый, что ни наесть DBF-ный. он рожден DBF-ным, а потом переименован, т.к. банковская прога работает по коду клиента, который зашит в расширении............

Добавлено через 44 секунды
ВСе как на духу.....
0
пофигист широкого профиля
4457 / 2945 / 830
Регистрация: 15.07.2013
Сообщений: 16,939
22.10.2013, 15:12 8
Цитата Сообщение от Аглая Посмотреть сообщение
ВСе как на духу
А имя файла в кавычки взять в запросе не пробовали?
0
3171 / 1930 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
22.10.2013, 15:33 9
Цитата Сообщение от Аглая Посмотреть сообщение
Самый, что ни наесть DBF-ный. он рожден DBF-ным
На слово не верю :-)

Отрежьте прилагаемой утилиткой первый килобайт файла - с заголовком (1.com Ваш_DBF_файл.DBF), и приложите к посту.
Вложения
Тип файла: 7z 1.7z (2.5 Кб, 8 просмотров)
0
3 / 3 / 2
Регистрация: 07.10.2013
Сообщений: 34
22.10.2013, 15:48  [ТС] 10
РебятЫЫЫЫЫЫЫЫ!!!!!!
Я его обманула!!!!!!!
Не query'ем, а таблицей взяла.
Вот так:

{*************** Обзор - находим нужный файл ******}
procedure TForm1.Button3Click(Sender: TObject);
begin
If openDialog2.Execute
then begin
Edit6.Text:=OpenDialog2.FileName;
FkName:=OpenDialog2.FileName;
CopyFile(PAnsiChar(FkName),PAnsiChar('c:\SBReestr\a1.dbf'),T rue);
Fk1Name:=PAnsiChar('c:\SBReestr\a1.dbf');
end;
end;

{*************** Печать реестра ******************}
procedure TForm1.Button6Click(Sender: TObject);
begin
RvProject2.Execute;
DeleteFile(PAnsiChar('c:\SBReestr\a1.dbf'));
end;
0
Эксперт Pascal/Delphi
4858 / 2735 / 845
Регистрация: 04.10.2012
Сообщений: 9,972
22.10.2013, 16:13 11
Еще можно попробовать так

Delphi
1
2
3
4
5
6
7
8
9
 var
 OldName, NewName:string;
begin
......
OldName :=dlgOpen1.FileName; //путь к файлу без расширения
NewName :=ChangeFileExt(OldName,'.dbf'); //задаем расширение
RenameFile(OldName, NewName); //меняем на имя с расширением
.........
//и т.д.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2013, 16:13

Написать программу для добавления поля gr "Гражданство" в таблицу kadr.dbf и заполнить ее значением "Рф"
Написать программу для добавления поля gr "Гражданство" в таблицу kadr.dbf и заполнить ее значением...

ASUS "Pro57T" - Какая всё-таки модель: "Pro57Ta" или "Pro57Tr"
На нижней стороне ноута сказано: "ASUS Pro57T"

VBS + .DBF. Как узнать имена всех таблиц в "базе данных"?
Доброго времени суток. Пытаюсь узнать имена таблиц.DBF, лежащих в каталоге на харде. Впоследствии,...

Продолжение темы от rookie "Applet-Database": что же всё-таки делать ?
Привет !!! Принимаете новеньких ? - Да ! Тогда вопрос: В теме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru