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

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

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

Студворк — интернет-сервис помощи студентам
Задание такое: сделать массив для сохранения веса студентов группы из 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2011, 10:56
Ответы с готовыми решениями:

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

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

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

28
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 12:36
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  [ТС]
Создаю длл через библиотеку классов. Просто я незнаю какой код вписать в длл а также как потом в новом консольном калькляторе вписать чтобы оно брало функцию с той длл. Как подключать длл к проэкту и всё остальное я знаю...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 12:51
Какой код - зависит от твоей задачи. Я думаю пойдет какой нибудь статический класс со статическим методом. Чтобы не создавать экземпляры класса только из-за пользования методом
короче, на пример ДЛЛ со статическим классом

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  [ТС]
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
можно тогда и сам класс сделать 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  [ТС]
Если правильно что тогда нужно вписать в консольное прложение чтобы оно показывало те данные с длл???
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
15.11.2011, 14:17
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  [ТС]
а почему при построении длл ругается вот на эту строчку:
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
потому что сам твой метод имеет аргумент int array1
имя это уже для другой переменной не можешь использовать, а ты еще пытаешься сделать вместо инта массив с таким же именем.

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

C#
1
public static int[] CalculateSomething()
1
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
15.11.2011, 16:55  [ТС]
Это сделал... Всё заработало, спасибо. А как теперь сделать тоже самое только в 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
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  [ТС]
Ещё один такой простенький вопрос: в чём разница между этими двумя пунктами в задании:
3) Создать Windows-проэкт в том самом решении, который включает библиотечные методы.
4) Создать DLL-библиотеку как отдельное решение. Связать библиотеку с Windows-проэктом.
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 13:37
В студии решение (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  [ТС]
Вот посмотрите пожалуйста как сделал я. И покажите пожалуйста на примере как сделать 4 пункт. Спасибо!
Вложения
Тип файла: rar Lab1.rar (90.5 Кб, 16 просмотров)
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 14:19
У меня студия 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  [ТС]
А как это сделать? Я имею ввиду 4 задание? Куда заходить нужно??? Случайно не так:
Проэкт - добавить сылку - обзор... и указать ту длл
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 14:28
именно так! Я тебе отправил два решения для п3 и для п4.
0
1 / 1 / 1
Регистрация: 03.02.2010
Сообщений: 89
16.11.2011, 15:07  [ТС]
Тогда полючается между этими заданиями разница только в том что там выбираеш с тех что уже есть - когда нажимаеш добавить ссылку там выбирается сразу подменю "проэкты" и выбираеш уже с существующих... А в 4 выбираеш "Обзор" и указываеш где лежить твоя длл и всё? Просто всё очень просто... зачем было такие похожие задания давать я непонимаю тогда...
0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
16.11.2011, 15:51
А вот в чем разница, преподаватель наверняка тебя спросит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2011, 15:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru