Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

отладка библиотеки [D7, WinXP]


Anton ©   (2008-06-13 09:49:00) 

Здравствуйте! Я тут нагородил библиотеку одну для компаса, и что-то там не так. Если кто-то что-то знает про отладку библиотеки, расскажите пожалуйста как. Может кто-нибудь захочет так посмотреть код(он не большой).

library Zapolnenie_o_n;

uses
SysUtils,
Messages,
Dialogs,
Classes,
Windows,
LDefin2D,
ksAuto,
ksConstTLB,
ksTLB,
StdCtrls, ExtCtrls,
DataUnit1 in 'DataUnit1.pas' {DataModule1: TDataModule};

function Code_128(A:ShortString):ShortString; stdcall; external  'S:\SAPR\Resources\BarCode\EAN13\BarCodeEAN13.dll';
{$E rtw}

function LibraryName: PChar; pascal;
begin
Result:='Ïîëó÷èòü øòðèõ-êîä';
end;

procedure LibraryEntry(command: WORD); pascal;

var
  num, num1, note, code: String;
  iKompas:  KompasObject;
  iDoc2D:   ksDocument2D;
  iStamp:   ksStamp;
  iTextLineDynamicArray,
  iTextItemDynamicArray:  ksDynamicArray;
  iTextLineParam:         ksTextLineParam;
  iTextItemParam:         ksTextItemParam;
  numb: integer;
  j:integer;
  itemParam: ksTextItemParam;
  itemFont : ksTextItemFont;
begin

///////////////

iKompas:=KompasObject(CreateKompasObject);
if iKompas = nil then Exit;

iDoc2D:=ksDocument2D(iKompas.ActiveDocument2D);
 //  if iDoc2D = nil then Exit;

   //  if iKompas.ksReadInt('Óêàæèòå íîìåð ÿ÷åéêè îñíîâíîé íàäïèñè', 1, 1, 231, numb) = 1 then
   //      begin
             numb:=0;
             iStamp:=ksStamp(iDoc2D.GetStamp);
             iStamp.ksOpenStamp;
             iStamp.ksColumnNumber(numb);

             iTextLineParam:=ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
             iTextItemParam:=ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));

             iTextLineDynamicArray:=ksDynamicArray(iStamp.ksGetStampColumnText(numb));
             iTextLineDynamicArray.ksGetArrayItem(0, iTextLineParam);
             iTextItemDynamicArray:=ksDynamicArray(iTextLineParam.GetTextItemArr());
             iTextItemDynamicArray.ksGetArrayItem(0, iTextItemParam);

             iStamp.ksCloseStamp;

             iTextItemParam.s := note;

        // end;
////////////////////

//////////////////

    with DataModule1.IBQuery1 do
        begin
            SQL.Clear;
            SQL.Add('select nmk_note from nmk where nmk_note = :oboz');

            ParamByName('oboz').AsString := note;
            Open;
            Close;
            if recordcount 0 then
               begin
                   SQL.Clear;
                   SQL.Add('select Bar_Code from Bar_Codes left join NMK on Bar_Codes.ref_id = NMK.Nmk_id where Bar_Code_Type_id = 1');
                   Open;
                   Close;
                   if recordcount 0 then
                       begin
                           FieldByName('Bar_Code').AsString := code;
                       end
                   else
                       begin
                           num:= 'Doc.01.';

                           SQL.Clear;
                           SQL.Add('select Nmk_id from NMK where Nmk_note =:Nmk_note');
                           ParamByName('Nmk_note').AsString := note;
                           Open;
                           j := FieldByName('Nmk_id').AsInteger;
                           Close;
                           num1 := IntToStr(j);
                           num := 'Doc.01.' + num1;
                           SQL.Clear;
                           SQL.Add('insert into Bar_Codes(Bar_code, Bar_Code_Type_id, Ref_id) values('+
                           ':Bar_Code, :Bar_Code_Type_id, :Ref_id');
                           ParamByName('Bar_Code').AsString := num;
                           ParamByName('Bar_Code_Type_id').AsInteger := 1;
                           ParamByName('Ref_id').AsInteger := j;
                           Code:= Code_128(num);
                       end;
               end
         else
             ShowMessage('?a?oa? ia iaeaai! Ii?aeoenoa, nio?aieoa ?a?oa? a aaca e iiaoi?eoa iiiuoeo!');
    end;

////////////////

numb := 1;
iKompas := KompasObject(CreateKompasObject);
iDoc2D := ksDocument2D(iKompas.ActiveDocument2D);
itemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
if (itemParam nil) then begin
  itemParam.Init;
  itemFont := ksTextItemFont(itemParam.GetItemFont);
  itemFont.fontName := 'BarCode';
  itemfont.SetBitVectorValue(ITALIC_OFF, true);
  itemFont.SetBitVectorValue(NEW_LINE, true);
  iStamp := ksStamp(iDoc2D.GetStamp);
  iStamp.ksOpenStamp;
    if (iStamp nil) then begin

   iStamp.ksColumnNumber(numb);
        if (itemFont nil) then begin

           itemParam.s :=  Code;//IntToStr(k) + ' 2121212';
 iDoc2D.ksTextLine(itemParam);
        end;
     end;
  iStamp.ksCloseStamp;
End;
End;

Exports
LibraryName name 'LIBRARYNAME',
LibraryEntry name 'LIBRARYENTRY';

begin
end.


Loginov Dmitry   (2008-06-13 18:19:00) [1]

> Если кто-то что-то знает про отладку библиотеки, расскажите
> пожалуйста как.


Добавляешь в Run/Parameters exe-шник компаса и запускаешь проект DLL по F9. В нужных местах ставишь точки останова. Для отладки используй кнопки F4, F7, F8.


Наверх

Титульная страница Поиск, карта сайта Написать письмо