Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/160: Рейтинг темы: голосов - 160, средняя оценка - 4.60
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449

Как вызвать функцию в функции

03.03.2012, 18:13. Показов 32852. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время ))

Как вызвать функцию ?
Имеется две функции

C#
1
2
3
4
5
6
        private void Completed(object sender, AsyncCompletedEventArgs e)
        {
 
        // вот отсюда надо вызвать функцию file
 
        }
Нужно перейти вот к этой функции

C#
1
2
3
4
        private void file(string zep, string raz)
        {
         // 
        }
Как это сделать ?
Подскажите.

Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2012, 18:13
Ответы с готовыми решениями:

Вызвать функцию в private функции
private static bool vkLogin(string login="", string pass="") { string s = "qweqwe"; http(s); // Ошибка! } void...

Как вызвать функцию из функции?
Мб не туда мысли пошли, но хочу передать метод аргументом в метод, т.е. чтобы не писать проверку каждый раз при использовании функций из...

Как вызвать функцию из функции
Всем привет !!! Не могу понять как вызвать функцию из функции adea.game.prototype = { update: function(){ //Как вызвать...

16
14 / 14 / 2
Регистрация: 01.04.2011
Сообщений: 20
03.03.2012, 18:18
та вот так прямо и вызвать
C#
1
file(zep, raz);
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 18:20  [ТС]
Цитата Сообщение от chipmunk Посмотреть сообщение
та вот так прямо и вызвать

Не получается ругается на file(zep, raz);
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 18:33
Цитата Сообщение от sasha0192 Посмотреть сообщение
Не получается ругается на file(zep, raz);
Естевственно, нужно посылать в функцию переменные!

Функция ждет 2 строки - значит и шлем 2 строки.

C#
1
file("Строка_1", "Строка_2");
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 18:55  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
Естевственно, нужно посылать в функцию переменные!
Вот мой код:



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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
        private void Copi(string html, string path) // Скачка файла из интернета
        {
            WebClient webClient = new WebClient();
 
            webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
            string downloadFileName = System.IO.Path.GetFileName(html);
 
            webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
            webClient.DownloadFileAsync(new Uri(html), path + downloadFileName);
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); //После скачки файла переходим на [B]Completed[/B]
        }
 
        private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) //Отображение Prograssbara
        {
            progressBar1.Value = e.ProgressPercentage;
            label1.Text = "" + e.ProgressPercentage + "";
            label4.Text = "Идет загрузка";
        }
 
        private void Completed(object sender, AsyncCompletedEventArgs e)
        {
          //тут код который переадресовывает в [B]ziip[/B]
        }
 
        private void ziip(string zep, string raz) //Распаковываем архив
        {
            double p = double.Parse(label1.Text);
 
            try
                {
                    label4.Text = "Идет разархивация";
                    string create = zep;
                    string patch = raz;
                    using (ZipFile zip = ZipFile.Read(create))
                    {
                        zip.ProvisionalAlternateEncoding = Encoding.UTF8;
                        zip.ExtractAll(patch);
                        progressBar1.Value = 0;
                        progressBar1.Value = Convert.ToInt32(100);
                        // label4.Text = "Разархивация завершина";
                    }
                }
                catch (Exception)
                {
 
                    label4.Text = "Ошибка кода";
                }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            string html = txtUrl.Text; // Http:/адрес прямой ссылки на скачку
            string path = txtPath.Text; // Указание путив которую будет производится загрузка
            Copi(html, path);
 
            string zep = @"D:\es\rzip.zip"; //Расположение ZIP архива
            string raz = txtPath.Text; //Путь распаковки
        }
Который работает так:
0) Нажимаем на кнопку button4_Click в который указываем пути (присваиваем значения html, path, zep, raz)
1) Скачиваем файл с интернета
1.1) выводим в PrograssBar процесс загрузки
1.2) После скачки файла идет обращение в Completed
1.3) Completed переадресовывает на ziip
2)Идет распаковка архива
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 19:06
Вот в этих строках:
C#
1
2
string raz = txtPath.Text; //Путь распаковки
string path = txtPath.Text; // Указание путив которую будет производится загрузка
Текст в txtPath должен быть вида "с:\\file.txt", а если в поле вводится путь с одиночными слешами, следует писать:
C#
1
2
string raz = @txtPath.Text; //Путь распаковки
string path = @txtPath.Text; // Указание путив которую будет производится загрузка
А проблемы с вызовом у вас в том, что нужные переменные объявлены в другом методе, и недоступны там где вызывается функция. Объявите string raz и string zep в классе, и тогда они будут доступны.

Вот код
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
private void Copi(string html, string path) // Скачка файла из интернета
//Объявляем переменнные
 
string zep; 
string raz;  
 
...    
 
{
            WebClient webClient = new WebClient();
 
            webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
            string downloadFileName = System.IO.Path.GetFileName(html);
 
            webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
            webClient.DownloadFileAsync(new Uri(html), path + downloadFileName);
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); //После скачки файла переходим на [B]Completed[/B]
        }
 
        private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) //Отображение Prograssbara
        {
            progressBar1.Value = e.ProgressPercentage;
            label1.Text = "" + e.ProgressPercentage + "";
            label4.Text = "Идет загрузка";
        }
 
        private void Completed(object sender, AsyncCompletedEventArgs e)
        {
          //тут код который переадресовывает в [B]ziip[/B]
        }
 
        private void ziip(string zep, string raz) //Распаковываем архив
        {
            double p = double.Parse(label1.Text);
 
            try
                {
                    label4.Text = "Идет разархивация";
                    string create = zep;
                    string patch = raz;
                    using (ZipFile zip = ZipFile.Read(create))
                    {
                        zip.ProvisionalAlternateEncoding = Encoding.UTF8;
                        zip.ExtractAll(patch);
                        progressBar1.Value = 0;
                        progressBar1.Value = Convert.ToInt32(100);
                        // label4.Text = "Разархивация завершина";
                    }
                }
                catch (Exception)
                {
 
                    label4.Text = "Ошибка кода";
                }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            string html = txtUrl.Text; // Http:/адрес прямой ссылки на скачку
            string path = @txtPath.Text; // Указание путив которую будет производится загрузка
            Copi(html, path);
 
            zep = @"D:\es\rzip.zip"; //Расположение ZIP архива
            raz = @txtPath.Text; //Путь распаковки
        }


P.S. Зачем в
этой
C#
1
label1.Text = "" + e.ProgressPercentage + "";
строке пустые кавычки?
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 19:15  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
Текст в txtPath должен быть вида "с:\\file.txt"
Да именно такого он и вида.

Просто я не знаю как перейти из функции в другую функцию.

Не получается(

вот строчка обращения к Completed

C#
1
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
Как мне сделать чтобы она сразу обращалась в ziip

C#
1
2
3
4
        private void ziip(string zep, string raz)
         {
 
         }
?????
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 19:21
C#
1
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(ziip);
Но тогда ziip будет такого вида:
C#
1
2
3
private void ziip(object sender, AsyncCompletedEventArgs e)
{
}
И если в ziip будет осуществляться работа с переменными zep и raz, то они все равно должны быть объявлены глобально.
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 19:28  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
должны быть объявлены глобально.
Как их объявить глобально ?

C#
1
2
3
4
5
    public partial class Form1 : Form
    {
        string zep;
        string raz;
    }
При нажатии на кнопку я записываю значения в

C#
1
2
            string zep = @"D:\es\rzip.zip"; //Расположение ZIP архива
            string raz = txtPath.Text; //Путь распаковки
Но после их чтения другой кнопкой они все очищены.

Как исправить? Спасибо
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 19:45
Объявляешь правильно, в теле класса, записывать теперь так:
C#
1
2
zep = @"D:\es\rzip.zip"; //Расположение ZIP архива
raz = txtPath.Text; //Путь распаковки
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 19:51  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
записывать теперь так:
Все получилось спасибо

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void button5_Click(object sender, EventArgs e) //При нажатии идет распаковка с записанными путями
        {
            using (ZipFile zip = ZipFile.Read(zep))
            {
                zip.ProvisionalAlternateEncoding = Encoding.UTF8;
                zip.ExtractAll(raz);
                progressBar1.Value = 0;
                progressBar1.Value = Convert.ToInt32(100);
                // label4.Text = "Разархивация завершина";
            }
        }
 
        private void button3_Click(object sender, EventArgs e) //При нажатии записывает 
        {
            zep = @"D:\es\rzip.zip"; //Расположение ZIP архива
            raz = txtPath.Text; //Путь распаковки
        }
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 19:57
Цитата Сообщение от sasha0192 Посмотреть сообщение
Все получилось спасибо
Пожалуйста)) Только пишется - "Разархивация завершена!"
1
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
03.03.2012, 19:58  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
зархивация завершена!
Да конечно. Просто постоянно спешка
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
03.03.2012, 20:09
Цитата Сообщение от sasha0192 Посмотреть сообщение
Да конечно. Просто постоянно спешка
Это да... спешим спешим, куда спешим???
0
 Аватар для undelete
28 / 28 / 4
Регистрация: 03.11.2010
Сообщений: 85
16.03.2012, 02:12
А если файлов например 10 000 ? Тогда как? Тоже глобально пути объявлять? Вот что делать если нужно обработать файл после его скачивания (добавить что то или вообще его удалить его)?
0
 Аватар для sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
16.03.2012, 08:09  [ТС]
Вам нужно из 10 000 тыс. найти нужный? Или что вы имели под словом обработать?
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
16.03.2012, 19:01
Вот как решается твоя проблема:
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
29
30
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Copi(@"http://www.bla-bla.ru/ziiiiiiiiiiiip/last-updater/Updater.exe", 
                Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
        }
 
        private void Copi(string html, string path) 
        {
            //после выхода из этой области видимости будет вызван метод Dispose()
            using (WebClient webClient = new WebClient()) 
            {
                webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                string downloadFileName = System.IO.Path.GetFileName(html);
 
                string downloadedFileName = Path.Combine(path, downloadFileName); //!!!
                webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                webClient.DownloadFileAsync(new Uri(html), downloadedFileName, downloadedFileName); //!!!
                webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); //После скачки файла переходим на Completed
            }
        }
 
        private void Completed(object sender, AsyncCompletedEventArgs e)
        {
            string fileName = (string)e.UserState;
 
            //тут код который переадресовывает в ziip
        }
Добавлено через 3 минуты
Ещё советую сайт: http://lingvopro.abbyyonline.com/ru
А то сомнения насчёт Copi, или ты имел ввиду Copy (копировать).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2012, 19:01
Помогаю со студенческими работами здесь

Как вызвать функцию из функции main?
работаю в деве. предположим я создал проект, изначально в нем находится файл main.cpp. предположим я создал в нем еще один файл с именем...

Как вызвать функцию pictureBox1_Paint_1() из другой функции?
Здравствуйте, граждане программисты! Уже долго не могу запустить функцию из другой функции: private: System::Void...

Как вызвать функцию в главной функции main?
как вызвать ету функцию в главной функции main? int sum(int n, int arr, int trans, int summa) for(int i=0;i<n;i++) {for (int...

Как вызвать функцию чужого приложения, как подменить значения аргументов функции?
собственно вопрос первый: мне нужно каким то образом из своей программы/библиотеки вызвать функцию чужого приложения, естессно...

Как вызвать функцию в другой функции описанную в этом же классе
Вообщем есть класс cms_model_questions в нём есть функция public function checkLimitQuestion($id_question){ return true; } ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru