На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67419398
10748
Hosts 3609242
2279
Visitors 53571875
10345

103


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Rastr и Delphi » в форуме: Макро   Просмотров: 14314
 
Windtalker
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 06.06.2008 18:14:47
 
 
Подскажите , работоспособен ли метод Tabla Rastr - ReadCDU ?
Пишу в Delphi
var
tnode:oleVariant;
file:string;
begin
tnode:=Rastr1.Tables.Item­('node');
tnode.ReadCDU (cdu_repl,file,'0201,nsx,­ny,uhom,pn,qn,pg,qg,vzd,q­min,qmax',' ');

Приложение упорно совершает недопустимую операцию ???????
 
Профиль
Наверх
Юрий Федоров
Посетитель
 
Всего сообщений: 39
Дата регистрации: 07.09.2007
Создано: 07.06.2008 19:29:21
 
 
Думается, что метод все же работоспособен С улыбкой
По крайней мере, соответствующий макрос выполняется корректно:
Код

set Tbl=Rastr.Tables("vetv")
Tbl.ReadCDU CDU_REPL,"c:\test.cdu","0­301,np,ip,iq,r,x,b,kti","­"

Также нет проблем в СОМ-версии для CBuilder:
Код

...
Tables=Rastr->Tables();
Table=Tables->Item(TVaria­nt("vetv"));
Table->ReadCDU(CDU_REPL,L­"C:\test.cdu",L"0301,np,i­p,iq,r,x,b,kti",L"");
Col=Table->Cols->Item(TVa­riant("r"));
for(i=0;i<Table->Size;i++­)
  Form1->Memo1->Lines->Add(­"R("+IntToStr(i)+")="+Flo­atToStr(Col->get_Z(i).dbl­Val));
...

Наверное, Delphi тоже не виновата С улыбкой
Проверьте типы передаваемых входных параметров, скорее всего какой-нибудь параметр метода задается неверно. Вот например, в Rastr-manual.pdf указано, что первый параметр метода может быть CDU_REPL, а не cdu_repl, как у Вас. Как говорится, "the variable is case sensitive!". Следите за написанием, а лучше задавайте параметр числом: CDU_REPL=1.
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 03.11.2009 15:39:56
 
 
Обнаружил сообщение в дружественном форуме:
http://forum.regimov.net/­index.php?t=...rt=0&rid=0­

С выводом не согласен. Проблема широко известна и связана с Delphi, компилятор которой формирует странный BSTR нулевой длины в виде NULL-указателя. Ключ "c" нужно использовать, когда он действительно нужен, во всех остальных случаях, когда нужен вызов расчета режима без параметров, достаточно в параметрах указать пробел.
 
Профиль
Наверх
Андрей Крутенёв
Гость
 
Создано: 17.11.2009 11:56:38
 
 
Цитата
Windtalker пишет:
tnode.ReadCDU (cdu_repl,file,'0201,nsx,­ny,uhom,pn,qn,pg,qg,vzd,q­min,qmax',' ');

А если так:
tnode.ReadCDU (cdu_repl,file,'0201,nsx,­ny,uhom,pn,qn,pg,qg,vzd,q­min,qmax','sel=0') Вопрос
 
Наверх
tan ya
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 14.02.2011
Создано: 15.02.2011 12:43:53
 
 
Подскажите, пожалуйста, как в delphi получить значения из таблиц Растра? Пробую так:
s:=cols.Item('ny').z(1);
В ответ ошибка "Член группы не найден"
Что я делаю не так? Можно ли вообще эти функции (z, zn, zs) использовать?
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 15.02.2011 14:58:20
 
 
что такое cols? как был получен объект?
и попробуйте
Код

s:=cols.Item("ny").Z(1);
 
Профиль
Наверх
tan ya
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 14.02.2011
Создано: 15.02.2011 17:58:28
 
 
cols - коллекция столбцов:
Код
tabs:= rastr.tables;
tab:= tabs.Item('node');
cols:= tab.Cols;


Когда вывожу
Код
cols.Item('ny').name

проблем не возникает - имя столбца прекрасно выводится. Видимо, дело именно в функции Z. Или, может, в типах данных (я пытаюсь вывести в переменную типа real)

Вариант
Код
s:=cols.Item("ny").Z(1);

не компилируется
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 16.02.2011 01:22:22
 
 
Цитата
tan ya пишет:
Или, может, в типах данных (я пытаюсь вывести в переменную типа real)
Попробуйте long или long integer (целое, 4 байта), как правильно называется этот тип в Delphi не знаю. В VB метод Z для столбца ny возвращает Long.
 
Профиль
Наверх
tan ya
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 14.02.2011
Создано: 16.02.2011 10:44:57
 
 
Цитата
Попробуйте long или long integer (целое, 4 байта), как правильно называется этот тип в Delphi не знаю. В VB метод Z для столбца ny возвращает Long.


Пробую longint - не получается. Вообще ни с одним типом не работает.
Вот мой код:

Код
rastr:= CreateOleObject('Astra.Ra­str');
rastr.load(1, 'F:\rastr\210606-3-00­.rg2', ''); // или rastr.load(1, 'F:\rastr\210606-3-00­.rg2', 'C:\Program Files\RastrWin\SHABLON\ре­жим.rg2');
tabs:= rastr.tables;
tab:= tabs.Item('node');
memo1.Text:= IntToStr(tab.size); // Здесь выводит 1019, то есть таблица не пуста
cols:= tab.Cols;
col:= Cols.item('ny');
s:=col.name;
n:=col.Z(1);

col:= unassigned;
cols:= unassigned;
tab:= unassigned;
tabs:=unassigned;
table:= unassigned;
rastr:= Unassigned;


Причем, когда вставляю данные в Растр, все работает:

Код
col.z(1020):=2020;


P.S. Никто не знает, почему форум regimov.net не работает? Там вроде была подобная тема..
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 01.08.2011 17:37:24
 
 
Цитата
tan ya пишет:
Подскажите, пожалуйста, как в delphi получить значения из таблиц Растра? Пробую так:
s:=cols.Item('ny').z(1);
В ответ ошибка "Член группы не найден"
Что я делаю не так? Можно ли вообще эти функции (z, zn, zs) использовать?
tan ya,

Tan ya !
Все очень просто.
В Delphi индексы перчисляемых элементов массивов, а как раз массивом является Cols указываются в квадратных скобках

примерно так это выглядит
tn.AddRow;
tn.cols.item('na').z[tn.s­ize-1]:=11;
tn.cols.item('name').zs[t­n.size-1]:='ТУЛА';
tn.cols.item('no').z[tn.s­ize-1]:=1;
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 11.10.2011 09:18:16
 
 
Уважаемые разработчики !
Помогите пожалуйста разобраться с одной проблемой !
При попытке создания объекта Rastr в проекте batch -файла в Delphi -синтаксис выглядит как
r:=coRastr.Create;
при компиляции проекта выдается ошибка object not initialized.
Умом понимаю, что где то надо прописать инициализацию объекта, перерыл все книжки, но ничего не помогает. Самое интересное, что обычное приложение Delphi данный пример проглатывает на ура, видимо объект инициализируется автоматически. Печально
 
Профиль
Наверх



Читают тему
гостей: 2, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019