Конференция "Основная" » отладка библиотеки [D7, WinXP]
 
  • Anton (13.06.08 09:49) [0]
    Здравствуйте! Я тут нагородил библиотеку одну для компаса, и что-то там не так. Если кто-то что-то знает про отладку библиотеки, расскажите пожалуйста как. Может кто-нибудь захочет так посмотреть код(он не большой).

    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 © (13.06.08 18:19) [1]
    > Если кто-то что-то знает про отладку библиотеки, расскажите
    > пожалуйста как.


    Добавляешь в Run/Parameters exe-шник компаса и запускаешь проект DLL по F9. В нужных местах ставишь точки останова. Для отладки используй кнопки F4, F7, F8.
 
Конференция "Основная" » отладка библиотеки [D7, WinXP]
Есть новые Нет новых   [134491   +8][b:0][p:0]