Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с DBX и Дельфями...
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > P-CAD 200x howto
Massi
Собственно немного истории...программер наш написал прогу для добычи перечня состоявшего из полей
имя выделеного компонента, номер ножки, имя ножки...что было очень удобно...выделил матрицу
208-ногую...и получил список красивый...видно что где находится...но это было в каде 2002...
перешел на 2006...взял ДБХ от него...программер в Дельфях пытается установить связь с новой длл-кой...и ничего...
кто писал что то подобное...и где копатся...
ошибка 32141 dbx_item_not_found
Yuri Potapoff
С выходом очередной версии пикада DBX интерфейс менялся, иногда кардинально. Мы замучились переписывать код своих утилит для пикада DrawPCAD и прекратили обновления.
SergM
Цитата(Massi @ Dec 21 2007, 11:37) *
...перешел на 2006...взял ДБХ от него...программер в Дельфях пытается установить связь с новой длл-кой...и ничего...
кто писал что то подобное...и где копатся...


Я использовал не много подправленный результат трансляции заголовочного файла Dbx32.h
Нажмите для просмотра прикрепленного файла

Связь с pcb через вызов функции TOpenDesign DBX выглядит у меня примерно так (практически не меняясь со времен P-CAD 2002):

Код
unit Unit1;
...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls;

type
  TForm1 = class(TForm)
...
    Edit1: TEdit;
    StatusBar1: TStatusBar;
    dgSaveDrlFile: TSaveDialog;
...
    procedure FormCreate(Sender: TObject);
...
  private
    function ConnectToPcb: boolean;
   public
    procedure DisplayEdStr(Ed: TEdit; EdStr: string);
  end;


var
  Form1: TForm1;

  
implementation

uses DBX32,         // прикреплен к этому посту                                                    
       FileCtrl;

{$R *.dfm}

var
  dbx_Res: LongInt;    // Результат вызова DBX функции                                                            
  dbx_Context: DbxContext;
  dbx_Design: TDesign;
...

function TForm1.ConnectToPcb: boolean;
begin
  Result:=False;
  StatusBar1.SimpleText:=' Подключение к PCB проекту ...';
  dbx_Res:=TOpenDesign(DBX_LANGUAGE, DBX_VERSION, 'pcb', dbx_Context);
  if dbx_Res=DBX_OK then begin
    dbx_Res:=TGetDesignInfo(dbx_Context, dbx_Design);
    if dbx_Res=DBX_OK then begin
      PcbFileName:=dbx_Design.designName;
      if PcbFileName='' then
        StatusBar1.SimpleText:=' Сохраните проект.'
      else begin
// Название PCB файла
       DisplayEdStr(Edit1, pcbFileName);
       dgSaveDrlFile.FileName:=ChangeFileExt(PcbFileName, '.drl');
       DisplayEdStr(Edit2, dgSaveDrlFile.FileName);
       StatusBar1.SimpleText:='';
       Result:=True;
      end;
    end;
  end else StatusBar1.SimpleText:=' Ошибка подключения к проекту.';
end;


Цитата
ошибка 32141 dbx_item_not_found

Эта ошибка может появлятьсся во многих местах. Надо обязательно
после вызова каждой DBX функции, проверять возвращаемое ей значение.
Т.е. предусматривать что-то вроде такого:
Код
    if dbx_Res=DBX_OK then
    begin                                                                // ОК
       ...
    end else                                                            // Error - анализ и последующая обработка
       ...
    end;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.