Ошибка при заполнении штампа.

Автор EnginegrPeckin, 20.12.07, 22:08:35

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

EnginegrPeckin

Компас 5.11, при попытке записать в яцейку штампа вылетает с ошибкой (Программа выполнила недопустимую операцию).

OpenStamp;
ColumnNumber(1);
TextLine(New_Line, 0, nil,'Чегото там');
CloseStamp;

В чем может бать проблема? Есть ли другие способы заполнить штамп?

ink

А документ при этом открыт?

EnginegrPeckin

Открыт. OpenStam и ColumnNumber возвращают единины.

ink

Ошибка скорее всего где-то раньше.
Чтобы разобраться, нужен текст исходника.

EnginegrPeckin


library project1;

uses
  Classes, SysUtils, Dialogs, libtool, Ltdefine, ldefin2d;

procedure  LIBRARYENTRY( comm: WORD  );pascal;
begin
if OpenStamp=0 then begin
   KsMessage('Не открывается штамп');
   Exit;
end;
if ColumnNumber(2)=0 then
   KsMessage('Не выбирается графа');
if TextLine(New_Line,0,nil,'rrrrr')=0 then
   KsMessage('Не записывается текст');
CloseStamp;
end;

function   LIBRARYNAME : PChar;pascal;
begin
Result:='Так побаловаться';
end;

function   LIBRARYID   : Cardinal; pascal;
begin
Result:=100;
end;

exports
LIBRARYENTRY,
LIBRARYNAME,
LIBRARYID;

begin
end.

Ошибка возникает при вызове TextLine

ink

25.12.07, 21:58:30 #5 Последнее редактирование: 25.12.07, 23:09:04 от ink
Вроде бы все правильно. А настройки проекта соотв. требованиям?
Каким образом установлено, что ошибка возникает именно при вызове TextLine?

AndreySt

26.12.07, 07:34:57 #6 Последнее редактирование: 26.12.07, 07:41:45 от AndreySt
Вот у меня сделано заполнение ячейки штампа и все замечательно работет

procedure SetStampItem(k: integer);
var
    stamp    : ksStamp;
    itemParam: ksTextItemParam;
    itemFont : ksTextItemFont;
    kompasApi: KompasObject;
    ksDoc: ksDocument2D;
begin               
  KompasApi := KompasObject(CreateKompasObject);
  ksDoc := ksDocument2D(KompasApi.ActiveDocument2D);
  itemParam := ksTextItemParam(KompasApi.GetParamStruct(ko_TextItemParam));
  if (itemParam <> nil) then begin
    itemParam.Init;
    itemFont := ksTextItemFont(itemParam.GetItemFont);
    itemFont.SetBitVectorValue(NEW_LINE, true);
    stamp := ksStamp(ksDoc.GetStamp);
    stamp.ksOpenStamp;
       if (stamp <> nil) then begin
    stamp.ksColumnNumber(k);
          if (itemFont <> nil) then begin
  itemParam.s := IntToStr(k) + ' ячейка';
ksDoc.ksTextLine(itemParam);
          end;
       end;
    stamp.ksCloseStamp;
  End;
End;


Если есть вопросы или что то не получится отпиши(я это вырезал из одной большой ф-ции)