-
Здравствуйте! Я тут нагородил библиотеку одну для компаса, и что-то там не так. Если кто-то что-то знает про отладку библиотеки, расскажите пожалуйста как. Может кто-нибудь захочет так посмотреть код(он не большой).
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.
-
> Если кто-то что-то знает про отладку библиотеки, расскажите > пожалуйста как.
Добавляешь в Run/Parameters exe-шник компаса и запускаешь проект DLL по F9. В нужных местах ставишь точки останова. Для отладки используй кнопки F4, F7, F8.
|