Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
1

С консольного приложения в Dll, Windows Form!

15.11.2011, 10:56. Показов 6550. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание такое: сделать массив для сохранения веса студентов группы из 20 человек. Заполнить массив с помощью класса Random целыми числами в диапазоне от 50 до 100 включительно. Отсортировать массив и вывести на консоль его элементы.
Задание сделано... Вот решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
namespace Lab1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random realRnd = new Random();
            int[] array1 = new int[20];
 
            int min = 50, max = 100;
            Console.WriteLine("Випадковi числа в дiапазонi [" + min + "," + max + "]");
            Array.Sort(array1);
            for (int i = 0; i < 20; i++)
            {
                array1[i] = realRnd.Next(min, max);
                
                Console.WriteLine("Вага студента = " + array1[i] + " кг");
            }
            Console.WriteLine("\nТi ж самi числа, але вже вiдсортованi:");
            Array.Sort(array1);
            for (int i = 0; i < 20; i++)
            {
              Console.WriteLine("Вага студента = " + array1[i] + " кг");
            }
            Console.ReadKey();
        }
    }
}
Но теперь ещё есть дополнительное задание с которым я несправился(.
1) Создать DLL-библиотеку, которая содержит реализацию задания. Указать XML-коментарии.
2) Создать решение, которое включает DLL-библиотеку, консольный проэкт, который тестирует работу библиотечных методов.
3) Создать Windows-проэкт в том самом решении, который включает библиотечные методы.
4) Создать DLL-библиотеку как отдельное решение. Связать библиотеку с Windows-проэктом.
Помогите с реализацией. Спасибо!

Добавлено через 22 часа 10 минут
Что никто неможет подсказать какой код нужно вписать в длл а какой тогда в новый консольный калькулятор???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2011, 10:56
Ответы с готовыми решениями:

Перевод консольного приложения в Windows Form
Доброго времени суток , вот код , который вызывает все ссылки javascript моего сайта в console...

Перевод консольного приложения на Windows Form
Перевести этот код в Visual Studio 2010 в Wuindows Form Application Module Module1 Sub...

Перевод консольного приложения на Windows Form
Сортировка слиянием Public Sub MergeSort(ByRef Arr() As Double, ByVal N As Long) Dim C As...

Переделать программу из консольного приложения в Windows Form
Помогите переделать программу из консольного приложения в Windows Form в Visual Studio 2008,...

28
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 12:36 2
1) Создать DLL-библиотеку, которая содержит реализацию задания. Указать XML-коментарии.

Создать библиотеку можно 2-мя вариантами,
1 - Создать проект типа class library (.dll)
2 - В свойствах уже существующего проекта - вкладка Application - Output type = class library;

Только от метода Main избавься, перенеси всю логику в отдельный public метод.

2) Создать решение, которое включает DLL-библиотеку, консольный проэкт, который тестирует работу библиотечных методов.

запускаешь build Solution, чтобы твоя библиотека скомпилировалась
В тестовом консольном проекте правой кнопкой на References - Add Reference - Browse - и добавляешь свою библиотеку. Подключаешь ее командой using и пользуешься.
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 12:41  [ТС] 3
Создаю длл через библиотеку классов. Просто я незнаю какой код вписать в длл а также как потом в новом консольном калькляторе вписать чтобы оно брало функцию с той длл. Как подключать длл к проэкту и всё остальное я знаю...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 12:51 4
Какой код - зависит от твоей задачи. Я думаю пойдет какой нибудь статический класс со статическим методом. Чтобы не создавать экземпляры класса только из-за пользования методом
короче, на пример ДЛЛ со статическим классом

C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
 
namespace LPTprovider
{
  public static class LptPortHelper
  {
    public static int CalculateSomething(int a, int b)
    {
      return a + b;
    }
  }
}

И твоя консольная прога:


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using LPTprovider;
 
namespace test1
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.Write(LptPortHelper.CalculateSomething(2, 2));
      Console.ReadKey();
    }
  }
}
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 13:05  [ТС] 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace DLL1
{
    public class MyfirstDll
    {
        public static int CalculateSomething(int array1)
        {
            Random realRnd = new Random();
            int[] array1 = new int[20];
            int min = 50, max = 100;
            for (int i = 0; i < 20; i++)
            {
                array1[i] = realRnd.Next(min, max);
            }
            return array1;
        }
    }
}
Вот такое накидал для длл. Правильно?
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 14:09 6
можно тогда и сам класс сделать static

1 у тебя метод должен возвращать int а возвращает int[]
2 а зачем ты над аргументом array1 издеваешься, заменяешь его на новый массив. Тут как то совсем все запутано написано.

C#
1
public static int[] CalculateSomething()
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 14:13  [ТС] 7
Если правильно что тогда нужно вписать в консольное прложение чтобы оно показывало те данные с длл???
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 14:17 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
using DLL1;
 
namespace TraTaTa
{
  class Program
  {
    static void Main(string[] args)
    {
       int[] array = MyfirstDll.CalculateSomething();
    }
  }
}
где-то так
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 15:23  [ТС] 9
а почему при построении длл ругается вот на эту строчку:
C#
1
int[] array1 = new int[20];
Ошибка 1 Невозможно объявить локальную переменную с именем "array1" в этой области видимости, т.к. она придаст другое значение "array1", которая уже используется в области видимости "родительский или текущий" для обозначения чего-то другого
И вот на эту:
C#
1
return array1;
Ошибка 2 Неявное преобразование типа "int[]" в "int" невозможно
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 15:27 10
потому что сам твой метод имеет аргумент int array1
имя это уже для другой переменной не можешь использовать, а ты еще пытаешься сделать вместо инта массив с таким же именем.

Я ж тебе правил эту строчку,

C#
1
public static int[] CalculateSomething()
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 16:55  [ТС] 11
Это сделал... Всё заработало, спасибо. А как теперь сделать тоже самое только в Windows Forms? Добавил на форму две кнопки и два richTextBox. Одна кнопка называется "показать масив" а вторая "отсортировать". И что нужно написать на свойство кнопки онклик чтобы в тех эдитах показывались данные массива?

Добавлено через 17 минут
Добавил для первой кнопки на свойство онклик следующее:
C#
1
2
3
4
5
6
private void button1_Click(object sender, EventArgs e)
        {
            int[] array = MyfirstDll.CalculateSomething();
            for (int i = 0; i < 20; i++)
                richTextBox1.Text = "Вага студента = " + array[i] + " кг";
        }
Но проблема в том что оно показывает только одну строчку а не целый массив в первом текстбоксе. Как решить?
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 17:13 12
1 - ты в каждом проходе цикла обновлял значение richTextBox1.Text, а нужно было прибавлять
2 - символы "\n" переносят вывод на новую строку

C#
1
2
3
4
5
int[] array = MyfirstDll.CalculateSomething();
for (int i = 0; i < 20; i++)
{
   richTextBox1.Text += "Вага студента = " + array[i] + " кг \n";
}
а еще лучше:
C#
1
for (int i = 0; i < array.Lenght; i++)
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 12:49  [ТС] 13
Ещё один такой простенький вопрос: в чём разница между этими двумя пунктами в задании:
3) Создать Windows-проэкт в том самом решении, который включает библиотечные методы.
4) Создать DLL-библиотеку как отдельное решение. Связать библиотеку с Windows-проэктом.
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 13:37 14
В студии решение (Solution) это самая главная сущность, которая может в себя включать несколько проектов, как dll, так и WinForms проектов.
Я так понимаю твои задачи:

3 - dll и WinForm должны быть в одном Solution
(Открываешь свою dll, Клик правой кнопкой на Solution - Add - New Project - Win Form Application)

4 - отдельно созданное WinForm приложение, в которое ты подключаешь уже готовую dll
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 13:57  [ТС] 15
Вот посмотрите пожалуйста как сделал я. И покажите пожалуйста на примере как сделать 4 пункт. Спасибо!
Вложения
Тип файла: rar Lab1.rar (90.5 Кб, 16 просмотров)
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 14:19 16
У меня студия 2008, так что я открыть не могу твой проект,
На, это наброски:

Не забудь, что когда ты изменяешь dll, в проекте 3 студия сама об этом заботиться,
а в проекте 4 тебе нужно новую dll самому копировать из проекта 3 в проект 4
Вложения
Тип файла: rar Lab1_item3_item4.rar (69.1 Кб, 15 просмотров)
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 14:21  [ТС] 17
А как это сделать? Я имею ввиду 4 задание? Куда заходить нужно??? Случайно не так:
Проэкт - добавить сылку - обзор... и указать ту длл
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 14:28 18
именно так! Я тебе отправил два решения для п3 и для п4.
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 15:07  [ТС] 19
Тогда полючается между этими заданиями разница только в том что там выбираеш с тех что уже есть - когда нажимаеш добавить ссылку там выбирается сразу подменю "проэкты" и выбираеш уже с существующих... А в 4 выбираеш "Обзор" и указываеш где лежить твоя длл и всё? Просто всё очень просто... зачем было такие похожие задания давать я непонимаю тогда...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 15:51 20
А вот в чем разница, преподаватель наверняка тебя спросит.
0
16.11.2011, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2011, 15:51
Помогаю со студенческими работами здесь

Из консольного приложения в dll
Доброго времени суток. Есть консольный проект который нужно переделать в dll библиотеку....

Перенос кода консольного приложения в DLL
Была написана программа (а именно классы) которая работала для консоли. Теперь хочу перегнать это...

Нужно создать dll из консольного приложения
Всем привет! У меня есть проект типа &quot;консольное приложение&quot;. Мне нужно скомпилировать его в dll. В...

Компиляция консольного приложения. Ошибка msvcp120.dll
Добрый день. Cсоздаю проект консольного приложения фреймворк 2.0 ставлю(не знаю влияет ли это на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru