На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
  
> Обращение к памяти , связка с FoxPro
    Ситуация такая есть некая система(довольно большая) написаная на FoxPro, а я пишу программы на си++ для нее(через fll-библиотеки) сейчас передо мной стоит проблема, я должен обратиться к глобальным переменным FoxPro для того чтобы не передавать куеву тучу параметров. Кто может подсказать хоть что нибудь буду очень благодарен, или хотя бы подсказать в какую сторону смотреть.
    Сообщение отредактировано: Qraizer -
      Dll FAQ
      смотреть последний вопрос
        Я ни ыксперт по данным "системам", но некоторое мнение все же есть. Писать во что-угодно через память возможно, если только все находится на одной машине. Для этого нужно всего-то знать адрес нужной переменной в памяти и ее тип. Вот только дело в том, что адрес данной переменной может внезапно измениться и твоя программа перезапишет что-нить не то. Другими словами если у этой системы нет никаких специальных интерфейсов для этого, то писать напрямую в память очень опасно.
        Цитата Umbrellla90 @
        для того чтобы не передавать куеву тучу параметров.

        А чего это так сложно? По моему скромному мнению нормальный вариант.
          Там вроде как наоборот, мне нужно достать из памяти системы глобальные переменные, как я понял там объясняется как задать глобальную переменную в своей памяти и чтобы одной ей могли пользоваться разные процессы.
          Я просто не понимаю как это вообще сделать ни малейшей мысли.. Все что мне пока в голову пришло задать их руками по умолчанию но они могут изменяться, поясню:
          В памяти системы(которая на FoxPro) есть переменные IT_SC_* их там порядка 20-25, пока что они не меняются но не известно что будет в будущем а каждый раз менять исходник и перекомпиливать мягко говоря не удобно поэтому я и ищу метод который бы мог найти значения этих переменных в памяти компа. хм.. это ведь реально?
            Цитата Umbrellla90 @
            метод который бы мог найти значения этих переменных в памяти компа. хм.. это ведь реально?

            Если у самой системы нету таких методов, то безопасных способов нет. И, да просто сканируя память ты вряд-ли чего найдешь (если у данной структуры нет уникальной сигнатуры).
            Сообщение отредактировано: shm -
              Я думал еще о том чтобы прочитать их один раз как только библиотека подключается и потом спокойно хранить в памяти и пользоваться когда надо, но я незнаю оптимально ли это поэтому и ищу другой способ чтобы сравнить. К примеру:
              ExpandedWrap disabled
                SET LIBRARY TO "..bla-bla\SV.fll" //подключу библиотеу
                GetAttrib(IT_SC_LENPREF,....,..) // возбму все атрибуты

              это будет нормально?
                Цитата Umbrellla90 @
                Я думал еще о том чтобы прочитать их один раз как только библиотека подключается и потом спокойно хранить в памяти и пользоваться когда надо

                Если размер структуры IT_SC_ не слишком большой, то нормальный вариант.
                  IT_SC_* это не структура ;) такие имена имеют переменные в системе, большенсто символьные и их размер не больше 6 знаков..

                  Добавлено
                  ладно пока остановлюсь на этом.. Всем спасибо за помощь.
                    Если кто нибудь будет искать подобное:
                    ExpandedWrap disabled
                      NTI nti;
                      Locator loc;
                      Value val;
                      nti=_NameTableIndex("Имя_Переменной");
                      if(nti>0&&_FindVar(nti,-1,&loc))
                      {
                           if(_Load(&loc,&val)<0)
                           { return;}                       //Ошибка чтения переменной
                      .....                                 //В переменной val записана нужная переменная
                      Что мешает на фоксе сохранять эти переменные в общий dbf-ник?
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0264 ]   [ 17 queries used ]   [ Generated: 19.05.24, 05:19 GMT ]