Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±

    [C#] Разбить программу на файлы

    Всем привет.

    Предыстория: Пишу мелкие програмки через Microsoft Visual C# 2010 Express для удобства в работе. В момент срочной необходимости сделал прогу учёта пациентов по прикреплению для отправки данных в ТФОМС(ФОНД(гутфомспк.ру)). Внесение, выгрузка данныв в xml формате и прочее. И тут настал момент редактирования отдельных участков кода. То бишь, какие-то поля, какие-либо дополнения.

    К сути: Имеется программа, как ее разбить на разные файлы?

    К примеру:
    Название общей папки, которая будет находится в корне Programs Files > name: Patients
    Внутри разветвление папок на: db, head (к примеру)
    В db - база данных
    В head - файлы, которые подключаются напрямую к программе, вот их через notepadd++ изменять к примеру, и в итоге все изменения учитывались при новом запуске проги.

    Так же, например, дома написать какие-либо изменения, придти на работу - заменить один файл. И все.


    А если по стандарту, то нужно заменять всю программу в корне. Это до боли не удобно.

    Надеюсь поможет кто. Ибо на киберфорумах такую бредню пишут.

  2. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    И что не получается? Если чтение из одного файла уже реализовано, то в чём трудность то вообще?

  3. Пользователь сказал cпасибо:
    Disinterpreter (20.10.2016)
  4. #3
    Аватар для Disinterpreter
    Проверенный

    Статус
    Оффлайн
    Регистрация
    02.01.2014
    Сообщений
    88
    Репутация:
    91 ±
    В чем проблема собственно?
    Культурный обмен во все времена был одним из важных развлечений. (С) Татикома из "Призрак в доспехах: Синдром одиночки"

  5. #4
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    1 вкладка - Внести пациента - форма заполнения(addpat)
    2 вкладка - Поиск(searchpat)

    В скобках указаны названия с которых считывалась инфа в форму.

    Сложность в том, что я вообще не понимаю как это делать)

  6. #5
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    https://habrahabr.ru/post/110999/

    Если я правильно понял, то это должно подойти.
    При выполнении нужного действия считываете содержимое нужного вам файла и выполняете его.

  7. Пользователь сказал cпасибо:
    BadPawn (22.10.2016)
  8. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    https://habrahabr.ru/post/110999/

    Если я правильно понял, то это должно подойти.
    При выполнении нужного действия считываете содержимое нужного вам файла и выполняете его.
    Мне кажется автору нужно что-то вроде этого: https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx. Хотя, пока он сам не поймёт то, что у него не получается, вряд ли ему кто-либо сможет помочь.

  9. Пользователь сказал cпасибо:
    BadPawn (22.10.2016)
  10. #7
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    В head - файлы, которые подключаются напрямую к программе, вот их через notepadd++ изменять к примеру, и в итоге все изменения учитывались при новом запуске проги.
    Ну как я понял, ему нужно не менять всю программу целиком, а только отдельные файлы, потому и подумал, что ему потребуется то, что я скидывал. System.IO там для считывания файлов только понадобится.

  11. Пользователь сказал cпасибо:
    BadPawn (27.10.2016)
  12. #8
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Неееет, пацаны, у меня программа целиком, выходящая в namefile.exe. То есть, изменив что-либо в файле, нужно откомпилировать код опять же в тот namefile.exe.

    Имеется MainBody(основные действия программы) и MainClass(переменные, массивы, функции и т.п.), нужно переконструировать программу так, что бы 1 кнопка вызывала форму 2:
    PHP код:
    Application.Run(new Form2());//и это у нас файл: Form2.хз-формат 
    Далее кнопка 2:
    PHP код:
    Application.Run(new Form3());//и это у нас файл: Form3.хз-формат 
    Потом например во второй кнопке, изменил на Form5 и без компиляции открываю экзешник, все изменения работали. Реально вообще?

    - - - Добавлено - - -

    Известен мне такой метод загрузки текста из файла:
    PHP код:
    //System.IO
        
    StreamReader sr = new StreamReader("C:/File.txt");
        
    string text;
        while ((
    text sr.ReadLine()) != null)
        {
            
    label1test.Items.Add(text);
        } 
    Как быть с кодом?

  13. #9
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от BadPawn Посмотреть сообщение
    Известен мне такой метод загрузки текста из файла:
    PHP код:
    //System.IO
        
    StreamReader sr = new StreamReader("C:/File.txt");
        
    string text;
        while ((
    text sr.ReadLine()) != null)
        {
            
    label1test.Items.Add(text);
        } 
    Как быть с кодом?
    PHP код:
    string[] items File.ReadAllLines("path to file");
    label1test.Items.AddRange(items); 
    Я же дал ссылку по рантайму. Или читать лень?

    Набросал рабочий код. Разберетесь - решите свою проблему.
     Program.cs
    PHP код:
    /*
     * Создано в SharpDevelop.
     * Пользователь: Seregami1
     * Дата: 27.10.2016
     * Время: 11:09
     * 
     * Для изменения этого шаблона используйте меню "Инструменты | Параметры | Кодирование | Стандартные заголовки".
     */
    using System;
    using System.IO;
    using System.CodeDom.Compiler;

    namespace 
    pp
    {
        class 
    Program
        
    {
            public static 
    void Main(string[] args)
            {
                
    string sourceCode File.ReadAllText("csharp_1.cs");
                
    object result EvalCode("calc""sum"sourceCode, new object[] {57});
                
    Console.WriteLine("Result: " + (int)result);
                
    Console.ReadKey(true);
            }
            
            
            private static 
    object EvalCode(string typeNamestring methodNamestring sourceCodeobject[] methodParams)
            {
                var 
    compiler CodeDomProvider.CreateProvider("CSharp");
                var 
    parameters = new CompilerParameters
                
    {
                    
    CompilerOptions "/t:library",
                    
    GenerateInMemory true,
                    
    IncludeDebugInformation true
                
    };
                var 
    results compiler.CompileAssemblyFromSource(parameterssourceCode);
                 
                if (!
    results.Errors.HasErrors)
                {
                    var 
    assembly results.CompiledAssembly;
                    var 
    evaluatorType assembly.GetType(typeName);
                    var 
    evaluator Activator.CreateInstance(evaluatorType);
                     
                    return (object) 
    evaluatorType.InvokeMember(methodNameSystem.Reflection.BindingFlags.InvokeMethodnullevaluatormethodParams);
                }
                 
                return (object)
    "Error!";
            }  
        }


     csharp_1.cs
    PHP код:
    using System;

    public class 
    calc {
        public 
    int sumint aint b ) {
            return 
    b;
        }



    В этом примере можете менять файл csharp_1.cs как захотите, при этом перекомпилировать program.cs не нужно.
    Последний раз редактировалось Seregamil; 27.10.2016 в 08:33.

  14. Пользователь сказал cпасибо:
    BadPawn (27.10.2016)
  15. #10
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Спасибо огромнейшее! Начнём разбираться.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •