Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2009, 15:02   #1
GSirr
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 42
Сообщение из C# в Delphi

Добрый день, уважаемые форумчане.
Столкнулся с проблемой - мне необходимо переделать процедуру, написанную на с# в делфи, а вот с дотнет я не знаком. Задача срочная и разбираться у меня времени нет - так что прошу - помогите

In the below code I have performed a query on a specific feature and placed all the features in a datagrid. As the user clicks a cell in the datagrid the map zooms in to the selected feature. This snippet is writing in the CAB architecture where the m_iMapViewService is an instance of the IMapViewService object obtained in the “OnViewReady” method of the presenter class (“m_iMapViewService = WorkItem.Services.Get<IMapViewServi ce>();”)



public void SetSelectedFeature(String FID)
{
try
{
m_iMapViewService.SetSelectedFeatur e(Convert.ToInt16(Address_FNO), Convert.ToInt32(FID), 0, 0);
}
catch (Exception ex)
{
MessageBox.Show("Error selecting feature '" + FID + "'." +
Environment.NewLine + " ---> " + ex.ToString(),
"Error Selecting Feature", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

Последний раз редактировалось GSirr; 16.07.2009 в 15:06.
GSirr вне форума Ответить с цитированием
Старый 16.07.2009, 15:14   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Код:
procedure SetSelectedFeature(FID: String);
begin
  try
    //m_iMapViewService.SetSelectedFeaturr(
    //Convert.ToInt16(Address_FNO), Convert.ToInt32(FID), 0, 0);

  except
    on e: Exception do ShowMessage('Error selecting feature ' + FID + '.#10#13'
                             + ' ---> ' + e.Message + 'Error Selecting Feature');
  end;
end;
Надо посмотреть насчет этой строки:
Цитата:
m_iMapViewService.SetSelectedFeatur e(Convert.ToInt16(Address_FNO), Convert.ToInt32(FID), 0, 0);
Какие компоненты, типы переменных.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 16.07.2009 в 15:17.
Daramant вне форума Ответить с цитированием
Старый 16.07.2009, 15:30   #3
GSirr
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 42
По умолчанию

На самом, как мне кажется, закавыка в этой строке
Код:
m_iMapViewService = WorkItem.Services.Get<IMapViewService>();
IMapViewService - поидее .net объект, если так можно выразиться. Вот как мне подключить этот объект (это .dll файл зарегистрированный в системе) используя delphi, я даже не догадываюсь.
GSirr вне форума Ответить с цитированием
Старый 16.07.2009, 15:41   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Вы переносите проект с C# в Delphi?
Цитата:
IMapViewService - поидее .net объект
Этому необходимо найти компонент-аналог в Delphi, или реализовать как-то самому.
Так не очень понятно, может пример выложите на C#.

P.S. Какая версия Delphi. Если Delphi.NET, то, возможно, и данный компонент получится использовать.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 16.07.2009, 15:50   #5
GSirr
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 42
По умолчанию

Если более подробно - я реализую программу на delphi (2007) используя базу данных на oracle (различные аналитические подсчеты, отчетные данные и т.п.). Так же с этой БД работает и геоинформационная система, купленная за бугром. Так вот, задача такая - есть геоинформационная система, есть приложение с объектами этой же ГИС ситемы, только без графических составляющих. То есть - в таблице. Задача - из моего приложение организовать позиционирование объекта на карте ГИС системы. Единственное что удалось добиться от забугорного саппорта - это вот та процедурка, которую я уже выкладывал.
GSirr вне форума Ответить с цитированием
Старый 16.07.2009, 16:49   #6
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Так же с этой БД работает и геоинформационная система, купленная за бугром
Я так понимаю, ее исходников у вас нет, или есть и эта процедура взята оттуда?
Цитата:
Так вот, задача такая - есть геоинформационная система, есть приложение с объектами этой же ГИС ситемы, только без графических составляющих. То есть - в таблице.
Т.е. вы работаете только с базой данных (на oracle). Для этого подойдут стандартные компоненты Delphi.
Цитата:
Задача - из моего приложение организовать позиционирование объекта на карте ГИС системы.
Или графический интерфейс вы тоже организуете? Для этого так же подойдут стандартные компоненты Delphi.

Вполне возможно написать аналог или дополнение на Delphi к ГИС.
Поясните подробнее в чем проблема.

P.S. Вам самим понятно, назначение функции из первого поста?
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 16.07.2009, 17:11   #7
GSirr
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 42
По умолчанию

Когда я говорю о гис системе я имею ввиду не только базу, но и приложение, поставляемое с ней. Это приложение отвечает за графическое построение и простмотр атрибутики у объектов.
Я же пишу приложение которое позволяет быстрее и точнее находить данные, делать гибкие отчены и т.п.
Исходники ГИС закрыты - есть только библиотеки которые я могу использовать. Процедура - это своего рода экзампл, который должен помоч мне решить поставленную задачу.

Если брать по факту процедуру - она понятна

m_iMapViewService.SetSelectedFeatur e(Convert.ToInt16(Address_FNO), Convert.ToInt32(FID), 0, 0);

то есть интерфейс iMapViewService процедура SetSelectedFeature (уникальные индетификаторы)

Проблема в том, что у меня не получается взаимодействовать с эти интерфейсом - access violation на вызове функции.

m_iMapViewService = WorkItem.Services.Get<IMapViewServi ce>();
я думаю что у меня ошибка в этой строчке. Как правильно подключить библиотеку? Я делаю через Component -> Import Component, это верно?
GSirr вне форума Ответить с цитированием
Старый 16.07.2009, 17:31   #8
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Component -> Import Component
Так подключаются компоненты.
Цитата:
Исходники ГИС закрыты - есть только библиотеки которые я могу использовать
Т.е. у вас есть описание функций из библиотек?
Если библиотеки в виде dll-файлов то их можно подключить вот так:
http://www.helloworld.ru/texts/comp/.../dll/index.htm

Цитата:
Проблема в том, что у меня не получается взаимодействовать с эти интерфейсом - access violation на вызове функции.

m_iMapViewService = WorkItem.Services.Get<IMapViewServi ce>();
я думаю что у меня ошибка в этой строчке.
Т.е. код у вас компилируется? Если да, то библиотеки вы подключили верно.

Цитата:
access violation на вызове функции.
Возможно не создан объект к которому происходит обращение.
(В данному случае WorkItem или WorkItem.Services)

P.S. Если ГИС писалась на C#, и есть документация на C#, почему перешли на Delphi?
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27