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


Автор: brusel 2.3.2008, 22:19
Программа сохраняет данные в каком-то формате с расширением *.kap. Помогите определить формат и как записать данные обратно в базу. Пример прилагается.

Автор: Данкинг 2.3.2008, 22:38
Формат лично я не определил, но ИМХО самодельный парсинг поможет.

Автор: brusel 2.3.2008, 22:41
а можна на нормальном языке, а то туплю!!

Автор: Данкинг 2.3.2008, 22:48
Можно: внимательно изучаешь структуру данных в этом текстовом файле, выявляешь закономерность, а затем пишешь программу на любом известном тебе языке, которая из этой абстракции делает структуры нормальной БД.

Автор: brusel 2.3.2008, 23:07
Короче. Вот программа из которой нужно взять експорт и импорт данных. Формат данных должен быть таким же. Для чего все это нужно? Делаю свою, на мой взгляд лучшую програму. Очень надо. Заранее благодарю.
Если получится, дайте примеры процедур. 
Если кто хочет помочь напише адрес куда скинуть архив. Размер 450 кб.

Мой [email protected]

Автор: dumb 3.3.2008, 03:49
то, что в Data.rar - это база Paradox. гугл легко выдаст пару сотен тысяч примеров работы с ней.
20.kap - обычный типизированный файл со структурами, которые идентичны структуре записи в таблице Ikpap.db(открыть ее можно через Database Desktop(в оболочке дельфей в меню Tools) - File, Open, Table...)

сэмпл(похоже, я сошел с ума - такой фигней страдать... smile):
Код

type
  SomeRec = packed record
    Counter : String[11];
    C_Code  : String[3];
    N_Code  : String[2];
    DataSkl : String[10];
    ProtNum : String[6];
    FamN    : String[20];
    D_Code  : String[2];
    Pos_Node: String[2];
    ST_Code : String[5];
    Pov_Code: String[1];
    DataV   : String[10];
    FamS    : String[20];
    NameS   : String[14];
    SonameS : String[19];
    DataBD  : String[10];
    ObjName : String[22];
    NamePos : String[22];
    Pos_Code: String[1];
    PRO_Code: String[2];
    NameRoz : String[20];
    Nap_Code: String[1];
    RI_Code : String[2];
    DataRi  : String[10];
    PostN   : String[3];
    SumR    : String[3];
    SumK    : String[2];
    UData   : String[10];
    UNData  : String[10];
    UUData  : String[10];
    SKN_Code: String[1];
    SKP_Code: String[1];
    SS_Code : String[1];
    NPR_Code: String[1];
    PZ_Code : String[1];
    SVS_Code: String[1];
    KZap    : String[20];
    KZData  : String[10];
    PError  : String[1];
    SF      : String[1];
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  f: File of SomeRec;
  r: SomeRec;
begin
  AssignFile(f, '20.kap');
  Reset(f);
  while not Eof(f) do begin
    Read(f, r);
    // work with record
  end;
  CloseFile(f);
end;

Автор: brusel 3.3.2008, 20:46
Сделал пример но выдает ошибку в строке     
Код

Read(f, r[i]);


Где я глючу? Код примера

Код

unit Unit1;

interface

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

type
  TMember = record
    Counter : String[11];
    C_Code  : String[3];
    N_Code  : String[2];
    DataSkl : String[10];
    ProtNum : String[6];
    FamN    : String[20];
    D_Code  : String[2];
    Pos_Node: String[2];
    ST_Code : String[5];
    Pov_Code: String[1];
    DataV   : String[10];
    FamS    : String[20];
    NameS   : String[14];
    SonameS : String[19];
    DataBD  : String[10];
    ObjName : String[22];
    NamePos : String[22];
    Pos_Code: String[1];
    PRO_Code: String[2];
    NameRoz : String[20];
    Nap_Code: String[1];
    RI_Code : String[2];
    DataRi  : String[10];
    PostN   : String[3];
    SumR    : String[3];
    SumK    : String[2];
    UData   : String[10];
    UNData  : String[10];
    UUData  : String[10];
    SKN_Code: String[1];
    SKP_Code: String[1];
    SS_Code : String[1];
    NPR_Code: String[1];
    PZ_Code : String[1];
    SVS_Code: String[1];
    KZap    : String[20];
    KZData  : String[10];
    PError  : String[1];
    SF      : String[1];
  end;
type
  TForm1 = class(TForm)
    ReadButton: TButton;
    SaveButton: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Table: TTable;
    StringGrid1: TStringGrid;
    procedure ReadButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
end;

var
  Form1: TForm1;
  r: array of TMember;

implementation

{$R *.dfm}

procedure TForm1.ReadButtonClick(Sender: TObject);
var
  f: File of TMember;
  i:integer;
begin
  AssignFile(f, '20.kap');
  Reset(f);
  try
  i:=0;
  while not Eof(f) do
    begin
    Read(f, r[i]);
    // work with record
    StringGrid1.Cells[0,i]:=r[i].counter;
    StringGrid1.Cells[1,i]:=r[i].C_Code;
    StringGrid1.Cells[1,i]:=r[i].N_Code;
    i:=i+1;
    end;
  finally
  CloseFile(f);
  end;
end;
end.

Автор: dumb 3.3.2008, 22:42
F1, Dynamic arrays

Автор: brusel 3.3.2008, 23:18
Поподробней. Я же сказал глючуууу

Автор: dumb 4.3.2008, 06:41
Цитата(brusel @  3.3.2008,  23:18 Найти цитируемый пост)
Я же сказал глючуууу
smile
Код

procedure TForm1.ReadButtonClick(Sender: TObject);
var
  f: File of TMember;
  i, count: integer;
begin
  AssignFile(f, '20.kap');
  Reset(f);
  try
    count:=FileSize(f);
    if count<>0 then
      begin
      SetLength(r, count); //!!!
      i:=0;
      while not Eof(f) do
        begin
        Read(f, r[i]);
        // work with record
        StringGrid1.Cells[0,i]:=r[i].counter;
        StringGrid1.Cells[1,i]:=r[i].C_Code;
        StringGrid1.Cells[1,i]:=r[i].N_Code;
        i:=i+1;
        end;
      end;
  finally
    CloseFile(f);
  end;
end;



Автор: brusel 4.3.2008, 09:10
Ура!! Все рабатает.
Всем спасибо. smile 

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