Delphi & Rastr

Программа Владимира Неуймина RastrWin и ее клоны: ActOpus, Барс. Статическая устойчивость.

Delphi & Rastr

СообщениеRomanov » 28 янв 2007, 22:06

Немогу понять. Есть код  v := 1;  Tbl.Cols.Item(_Qg).Z(0) := v;  v := Tbl.Cols.Item(_Qg).Z(0);стрка Tbl.Cols.Item(_Qg).Z(0) := v; выполняется без проблем, а в следующей строкеv := Tbl.Cols.Item(_Qg).Z(0); программа прерывается с ошибкой "Член группы не найден".Где грабли?
Romanov
 
Сообщения: 0
Зарегистрирован: 25 июн 2006, 23:00

Re: Delphi & Rastr

Сообщениеgena » 29 янв 2007, 15:48

скорее всего грабли в типе переменной. v - у тебя какого типа?если посмотреть исходник ASTRALib_TLB.pas    
property Z[i: Integer]: OleVariant read Get_Z write Set_Z;
то v должна быть OleVariant или просто Variant
gena
Администратор
 
Сообщения: 29
Зарегистрирован: 07 июл 2015, 23:37

Re: Delphi & Rastr

СообщениеRomanov » 29 янв 2007, 21:47

Попробуй у себя такой код.У меня прерывается на строке v := Tables.Item('node').Cols.Item('pg').Z(0);Если ее закомментировать все работает нормально.Брось на форму кнопку и скопируй код.
implementationuses ASTRALib_TLB, Registry, ComObj;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);const  _RegDirKey = '\SOFTWARE\Classes\TypeLib\{84B05080-ABC9-11D3-B740-00500454CF3F}\1.0\HELPDIR';var  RastrDir: string; // Каталог растра  RastrObject: IRastr; // Объект Rastr  Tables: ITables; // Объект таблицы  ShablonName_rg2: string;  Reg: TRegistry;  v: OleVariant;  AppPath: string;begin  RastrObject := CreateoleObject('Astra.Rastr') as IRastr;  Tables := RastrObject.Tables;  AppPath := ExtractFilePath(ParamStr(0)); // Каталог программы  Reg := TRegistry.Create;  try    Reg.RootKey := HKEY_LOCAL_MACHINE;    if Reg.OpenKey(_RegDirKey, False) then   begin      RastrDir:=Reg.ReadString(''); // Директория с Rastr      Reg.CloseKey;    end;  finally    Reg.Free;  end;  ShablonName_rg2 := RastrDir + 'SHABLON\режим.rg2';  RastrObject.NewFile(ShablonName_rg2);  Tables.Item('node').AddRow;  v := 100;  Tables.Item('node').Cols.Item('pg').Z(0) := v;  RastrObject.Save(AppPath + '1.rg2', ShablonName_rg2);  v := Tables.Item('node').Cols.Item('pg').Z(0);  ShowMessage(v);end;end.
Romanov
 
Сообщения: 0
Зарегистрирован: 25 июн 2006, 23:00

Re: Delphi & Rastr

СообщениеRomanov » 29 янв 2007, 22:56

А такой макрос в Excel записывает 300 в активную ячейку
Private Sub CommandButton1_Click()Dim RastrObject As RastrDim v As VariantSet RastrObject = CreateObject("Astra.Rastr")RastrObject.NewFile ("C:\Program Files\RastrWin\SHABLON\режим.rg2")RastrObject.Tables.Item("node").AddRowRastrObject.Tables.Item("node").Cols.Item("pg").Z(0) = 300v = RastrObject.Tables.Item("node").Cols.Item("pg").Z(0)ActiveCell.Value = vEnd Sub
Совсем ничего не понятно Sad
Romanov
 
Сообщения: 0
Зарегистрирован: 25 июн 2006, 23:00

Re: Delphi & Rastr

Сообщениеgena » 30 янв 2007, 10:41

попробуй так:v := Tables.Item('node').Cols.Item('pg').Z[0];
gena
Администратор
 
Сообщения: 29
Зарегистрирован: 07 июл 2015, 23:37

Re: Delphi & Rastr

СообщениеRomanov » 31 янв 2007, 06:20

О... заработало! Спасибо.
Romanov
 
Сообщения: 0
Зарегистрирован: 25 июн 2006, 23:00


Вернуться в Rastr