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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 21:44   #1
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
Восклицание Програма не может найти тип данных, ошибки

Взял исходники программы С#, она также использует язык R для вычисления статистических данных наподобие: авторегресия, експоненциальное сглаживание и т.д.

При вы полнении кода вылетает 8 одинаковых ошибок отличающихся только именами в кавычках:

Error 1 The type or namespace name 'RStatData' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Mainform.cs 14 9 WindowsApplication1


Mainform.cs
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
 
namespace RStat
{
    public partial class MainForm : Form
    {
        RStatData _data;
 
        private DataPanel _dataPanel;
        private DataSetPanel _dataSetPanel;
        private MainTsSummaryPanel _tsSummaryPanel;
        private MainModelPanel _modelPanel;
 
        public MainForm()
        {
            InitializeComponent();
 
            _data = new RStatData();
 
            _dataPanel = new DataPanel(_data.RawDataFrames);
            panelTabs.Controls.Add(_dataPanel);
 
            _dataSetPanel = new DataSetPanel(_data, this);
            panelTabs.Controls.Add(_dataSetPanel);
 
            _tsSummaryPanel = new MainTsSummaryPanel();
            panelTabs.Controls.Add(_tsSummaryPanel);
 
            _modelPanel = new MainModelPanel(_data);
            panelTabs.Controls.Add(_modelPanel);
 
            _dataPanel.Dock = DockStyle.Fill;
            _dataSetPanel.Dock = DockStyle.Fill;
            _tsSummaryPanel.Dock = DockStyle.Fill;
            _modelPanel.Dock = DockStyle.Fill;
 
            ShowPanel(_dataPanel);
        }
        public void AddTs(TimeSeries ts)
        {
            _data.TimeSeriesList.Add(ts);
            _tsSummaryPanel.AddTs(ts);
            _modelPanel.AddTs(ts);
        }
        public void RemoveTsAt(int index)
        {
            _tsSummaryPanel.RemoveTsAt(index);
            _modelPanel.RemoveTsAt(index);
            _data.TimeSeriesList.RemoveAt(index);
            GC.Collect();
        }
        private void ShowPanel(UserControl panel)
        {
            foreach (Control ctrl in panelTabs.Controls)
            {
                ctrl.Visible = false;
            }
            panel.Visible = true;
        }
        private void linkLabelDataPanel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ShowPanel(_dataPanel);
        }
        private void linkLabelDataSetPanel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ShowPanel(_dataSetPanel);
        }
        private void linkLabelExit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Close();
        }
        private void linkLabelTSSummaryPanel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ShowPanel(_tsSummaryPanel);
        }
        private void linkLabelModelPanel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ShowPanel(_modelPanel);
        }
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            string[] dirs = Directory.GetDirectories(Application.StartupPath, "tmp*");
            foreach (string dir in dirs)
                try { Directory.Delete(dir, true); }
                catch { }
        }
    }
}

В файле Rexecutor.cs поидее должен происходить вызов внешней программы но он почему то не происходит, видимо из-за этого и ошибки.

Может кто знает как правильно вызвать внешнее приложение в С#?
Помогите пожалуйста!
Ladanua вне форума Ответить с цитированием
Старый 18.06.2011, 21:45   #2
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
По умолчанию

Rexecutor.cs
Код:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
 
namespace RStat
{
    public class RExecutor
    {
        private string _wd;
        private string _rcmd = "Rcmd";
        public string WorkDir
        {
            get { return _wd; }
            set
            {
                if (value.EndsWith("\\"))
                    _wd = value;
                else
                    _wd = value + "\\";
            }
        }
        public RExecutor(string path)
        {
            if (path.EndsWith("\\"))
                _wd = path;
            else
                _wd = path + "\\";
        }
        private void Exec(string filename)
        {
            Process p = new Process();
            p.StartInfo.FileName = _rcmd;
            p.StartInfo.Arguments = "BATCH \"" + filename + "\"";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.WaitForExit();
            p.Close();
        }
        public void TSSummary(TimeSeries ts)
        {
            ts.Data.WriteCsv(_wd + "buffer.csv", true);
            string cmd = "";
            cmd += "setwd('" + _wd + "')\n";
            cmd += "s = " + ts.Start + "\n";
            cmd += "f = " + ts.Frequency + "\n";
            string s;
            using (StreamReader sr = new StreamReader(Application.StartupPath + "\\scripts\\summary.R"))
            {
                while ((s = sr.ReadLine()) != null)
                cmd += s + "\n";
            }
            cmd = cmd.Replace("\\", "\\\\");
            using (StreamWriter sw = new StreamWriter(_wd + "batch.R", false, Encoding.GetEncoding(1251)))
            {
                sw.WriteLine(cmd);
            }
            Exec(_wd + "batch.R");
            int nCols = ts.Data.Data.Columns.Count;
            ts.Cor = new Dataframe();
...
Ladanua вне форума Ответить с цитированием
Старый 18.06.2011, 22:20   #3
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Вы используете класс RStatData, описание которого,в выложенном коде, я не увидел, посмотрите внимательнее что это за RStatData _data и где описание этого класса.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 18.06.2011, 22:23   #4
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
По умолчанию

Да в том то и дело что класс RStatData упоминается только в файле Mainform.cs который я выложил. Я в других сорсах програмы его нету.

Выходит так что возможно это класс который вызывается из внешней программы, но там сорсов нету, там просто исполняемые файлы.

Если бы все было так просто 8)
Ladanua вне форума Ответить с цитированием
Старый 18.06.2011, 22:35   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Я думаю,что это обращение к какому-то компоненту,который рисует графики,на подобии этого,а может быть и этого. По смысловой нагрузке выходит так.
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 18.06.2011 в 22:42.
Скарам вне форума Ответить с цитированием
Старый 18.06.2011, 22:42   #6
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
По умолчанию

Ну скорее всего, а как тогда его активировать то?
Или хотя бы пару идей если можно подкиньте пожалуйста.
Ladanua вне форума Ответить с цитированием
Старый 18.06.2011, 22:49   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Что означает для Вас активировать? Скомпилировать проект? Тогда надо закомментировать все RStatData и _data. Если хотите заменить компонент по рисованию графиков, тогда придется приложить больше знаний, заменив компонент RStatData на другой, например, на ZedGraph. И сделать рисовку графиков через него.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 18.06.2011, 22:59   #8
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
По умолчанию

При компиляции в первом посте я писал вылетает не 1 а 8 подобных ошибок.


Error 1 The type or namespace name 'RStatData' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Mainform.cs 14 9 WindowsApplication1
Error 2 The type or namespace name 'MainTsSummaryPanel' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Mainform.cs 18 17 WindowsApplication1
Error 3 The type or namespace name 'MainModelPanel' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Mainform.cs 19 17 WindowsApplication1
Error 4 The type or namespace name 'TimeSeries' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Mainform.cs 46 27 WindowsApplication1
Error 5 The type or namespace name 'TimeSeries' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Rexecutor.cs 44 31 WindowsApplication1
Error 6 The type or namespace name 'Dataframe' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Rexecutor.cs 260 27 WindowsApplication1
Error 7 The type or namespace name 'Dataframe' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Rexecutor.cs 283 28 WindowsApplication1
Error 8 The type or namespace name 'LMResult' could not be found (are you missing a using directive or an assembly reference?) C:\Users\Lampack\Documents\Visual Studio 2005\Projects\WindowsApplication1\W indowsApplication1\Rexecutor.cs 283 16 WindowsApplication1

Все их не закоментиш.
Активировать в плане запустить внешнее приложение.
Вот тут же описано что вызывается что-то внешнее, но видимо не запускается или чтото надо дополнительно сделать что бы оно запустилось, вот я и не знаю что.

Код:
private void Exec(string filename)
        {
            Process p = new Process();
            p.StartInfo.FileName = _rcmd;
            p.StartInfo.Arguments = "BATCH \"" + filename + "\"";
            p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.WaitForExit();
            p.Close();
        }
Ladanua вне форума Ответить с цитированием
Старый 18.06.2011, 23:00   #9
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Написал на том форуме, напишу и тут, пока ссылок не укажете, хоть головой о стенку бейтесь, ошибки будут.
Запуск стороннего процесса ну никак делу не поможет.
Spawn™Production® вне форума Ответить с цитированием
Старый 18.06.2011, 23:06   #10
Ladanua
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 7
По умолчанию

Ну, а вы когда ищете что то в гугле после первой проверенной сылки бросаете дело к черту что ли?
Или в правилах данного форума есть пункт где запрещено создавать одинаковы темы на разных форумах?

Тут все дело походу в стороннем процесе, ибо откуда еще может взяться этот класс RStatData. Вот FAQ по R могу показать где, но там ответа я не увидел к сожалению.
FAQ
Ladanua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти ошибки!!)) Ангел без крыльев Visual C++ 1 01.05.2011 01:06
почему у меня програма не работает? Где ошибки? vova_makarovych Общие вопросы C/C++ 4 22.09.2010 18:27
Ядро базы данных Microsoft Jet не может найти входную таблицу.... _-Re@l-_ БД в Delphi 0 27.06.2010 16:27
Найти количество положительных чисел (тип данных: слово) Владимир Павлов Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 25.01.2010 04:09
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55