Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как прочитать базу данных с Досовским шрифтом


Автор: Alex103 27.2.2005, 05:15
У меня такая история. Вот была у меня досовская прграмма написаная на Паскале. Она читала базы данных формата dbf. Я написал на Делфи прогу но она при чтеннии базы вываливает совсем не понятные слова но если эти слова посмотреть в Far-e то можно прочитать текст. Подскажите что мне нужно сделать и как написать прогу что-бы она читала эти базы. Заранее благодарю. С ув. Александр

Автор: Vit 27.2.2005, 06:43
Для начала попробовать поставить кодировки в BDE администраторе

Автор: Alex 27.2.2005, 10:56
При старте приложения попробуй вызвать вот такую процедуру:
Код

procedure SetLangForParadoxAndDBase;
var
 p :TStringList;
 c :TConfigMode;
begin
 p := TStringList.Create;
 c := Session.ConfigMode;  Session.ConfigMode := cmSession;
 try
   p.Text := 'LANGDRIVER=ancyrr'^M^J'LEVEL=7';
   Session.ModifyDriver('PARADOX',p);
   p.Text := 'LANGDRIVER=db866ru0'^M^J'LEVEL=7';
   Session.ModifyDriver('DBASE',p);
 finally
   Session.ConfigMode := c;
   p.Free;
 end;
end;

Автор: Alex103 28.2.2005, 04:34
Цитата(Vit @ 27.2.2005, 06:43)
Для начала попробовать поставить кодировки в BDE администраторе

А где это!

Автор: Alex103 28.2.2005, 04:56
Цитата(Alex @ 27.2.2005, 10:56)
При старте приложения попробуй вызвать вот такую процедуру:
Код

procedure SetLangForParadoxAndDBase;
var
 p :TStringList;
 c :TConfigMode;
begin
 p := TStringList.Create;
 c := Session.ConfigMode;  Session.ConfigMode := cmSession;
 try
   p.Text := 'LANGDRIVER=ancyrr'^M^J'LEVEL=7';
   Session.ModifyDriver('PARADOX',p);
   p.Text := 'LANGDRIVER=db866ru0'^M^J'LEVEL=7';
   Session.ModifyDriver('DBASE',p);
 finally
   Session.ConfigMode := c;
   p.Free;
 end;
end;

Ничего не помогло я на сайт выкинул файл с частью кода базы данных можешь посмотреть можеть это чем нибудь поможет!!! http://doxod2007.narod.ru/BANK.DBF! Зпранне благодарю!!

Автор: ТоляМБА 28.2.2005, 06:23
Если ничего не поможет - пиши кодировщик. Один раз перегонишь и всё.

Автор: Alex103 28.2.2005, 08:02
Цитата
Если ничего не поможет - пиши кодировщик. Один раз перегонишь и всё.

Что за кодировщик?

Автор: Bes 28.2.2005, 09:11
Ну можно стандартной функцией перегонять текст из досовской кодировки в виндовую и обратно.
Называется что-то типа ОЕМтоАнси и наоборот. Только там есть нюансы с ее использованием.

Автор: Alex 28.2.2005, 09:37
Цитата(Alex103 @ 28.2.2005, 04:56)
Ничего не помогло я на сайт выкинул файл с частью кода базы данных можешь посмотреть можеть это чем нибудь поможет!!!

Ну и какже это оно не работает. Лови пример:

Автор: Alex103 28.2.2005, 15:52
Цитата(Alex @ 28.2.2005, 09:37)
Цитата(Alex103 @ 28.2.2005, 04:56)
Ничего не помогло я на сайт выкинул файл с частью кода базы данных можешь посмотреть можеть это чем нибудь поможет!!!

Ну и какже это оно не работает. Лови пример:

Вот так и не работает я не могу откомпилировать данный файл потому что у меня нет тех компонентов которыми он делался!!!Помоги может у тя получиться откомпилить!!!!!

Автор: bursa 28.2.2005, 16:32
Цитата (Vit @ 27.2.2005, 06:43)
Для начала попробовать поставить кодировки в BDE администраторе

Цитата (Alex103 @ 27.2.2005, 04:34)
А где это!


BDE Administrator-configuration-driver-native-dbase(foxpro)-dBASE RUS cp866


Автор: Alex 28.2.2005, 18:20
Цитата(Alex103 @ 28.2.2005, 15:52)
Помоги может у тя получиться откомпилить!!!!!

Каких компонентов у тебя нету?

Автор: Alex103 28.2.2005, 19:34
Цитата(Alex @ 28.2.2005, 18:20)
Цитата(Alex103 @ 28.2.2005, 15:52)
Помоги может у тя получиться откомпилить!!!!!

Каких компонентов у тебя нету?

Я уже все проверил, это даже не из-за компонентов я сам не знаю из-за чего это. Но факт что я не могу откомпилить прогу!!

Автор: Alex 28.2.2005, 19:37
Цитата(Alex103 @ 28.2.2005, 19:34)
Я уже все проверил, это даже не из-за компонентов я сам не знаю из-за чего это. Но факт что я не могу откомпилить прогу!!

Что пишет?

Автор: Alex 28.2.2005, 19:53
Ну, если не выходит мой проект откомпилировать, то сделай свой
1. Открой новый проект;
2. Положи на форму DBGrid, DataSource и Table;
3. DBGrid свяжи с DataSource, а DataSource с Table;
4. Сохрани проект;
5. В папку, в которую ты сохранил проект, положи свой файл BANK.DBF;
6. В коде модуля напиши процедуру для настройки. Модуль у тебя после этого должен выглядеть так:
Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, DBTables, Grids, DBGrids;

type
 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   Table1: TTable;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure SetLangForParadoxAndDBase;
var
p :TStringList;
c :TConfigMode;
begin
p := TStringList.Create;
c := Session.ConfigMode;  Session.ConfigMode := cmSession;
try
  p.Text := 'LANGDRIVER=ancyrr'^M^J'LEVEL=7';
  Session.ModifyDriver('PARADOX',p);
  p.Text := 'LANGDRIVER=db866ru0'^M^J'LEVEL=7';
  Session.ModifyDriver('DBASE',p);
finally
  Session.ConfigMode := c;
  p.Free;
end;
end;

end.

7. Назначь форме обработчик OnCreate и напиши в него код для подключения к базе. Теперь модуль у тебя должен выглядеть так:
Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, DBTables, Grids, DBGrids;

type
 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   Table1: TTable;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure SetLangForParadoxAndDBase;
var
p :TStringList;
c :TConfigMode;
begin
p := TStringList.Create;
c := Session.ConfigMode;  Session.ConfigMode := cmSession;
try
  p.Text := 'LANGDRIVER=ancyrr'^M^J'LEVEL=7';
  Session.ModifyDriver('PARADOX',p);
  p.Text := 'LANGDRIVER=db866ru0'^M^J'LEVEL=7';
  Session.ModifyDriver('DBASE',p);
finally
  Session.ConfigMode := c;
  p.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetLangForParadoxAndDBase;
 Table1.DatabaseName:= ExtractFilePath(ParamStr(0));
 Table1.TableName:= 'BANK.DBF';
 Table1.Open;
end;

end.


8. Все, запускай программу.

Автор: Alex103 28.2.2005, 20:36
Цитата(Alex @ 28.2.2005, 19:53)
Ну, если не выходит мой проект откомпилировать, то сделай свой

Ну бли огромнейшееееееееееееееее те спасибо ты просто такую тему мне посоветовал я просто очень рад. smile smile smile smile smile smile smile У меня даже слов нет ты просто супер. Я тебе пробывал повысить уровень но у меня не достаточно прав но я тебе обещаю как только у меня эти права будут я тебе повысю уровень smile smile smile smile smile smile Спасибо еще раз огромнеёшее. С ув.Александр smile

Автор: Alex 28.2.2005, 22:06
Alex103 Не за что теска. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)