Jump to content
СофтФорум - всё о компьютерах и не только

Несколько вопросов по Visual C++ 2008


Recommended Posts

Вобщем при изучении возникли некоторые вопросы.

Допустим не совсем понятно почему не работает следующий код.

Я в обработчике события button1_Click пишу следующее

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 	 {float e,e1; int k=0; e=1.0; do { e=e/2.0; e1=e+1.0; k++; } while (e1>1.0); Form1::label3->Text=FloatToStF(e1,ffGeneral,7,2); Form1::label4->Text=FloatToStF(k,ffGeneral,7,2);;	 }};

На что получаю целый ворох ошибок

Ошибка 8 error C3861: FloatToStF: идентификатор не найден

Ошибка 3 error C2676: бинарный '+': 'System::EventArgs ^' не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору (это вобще что такое? плюс не воспринимает.)

Ошибка 1 error C2676: бинарный '/': 'System::EventArgs ^' не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору (и деление тоже)

Далее мне необходимо прочитать некий фаил и вывести его в текст бокс.

Делаю так

String^ fileName = "1.txt";StreamReader^ din = File::OpenText(fileName);String^ str;  int count = 0;  while ((str = din->ReadLine()) != nullptr)   {	 count++;	 Zam::textBox1->Text=str;  }

Работает. Но читает и выводит только последнюю строку. а надо весь текстовый фаил.

Потом тудаже нужно записать. Тут вобще трабл. Пробывал по разному записывать. Ничего не получилось.

=(

Link to comment
Share on other sites

DoctorG:

Компилятор же написал, что функция FloatToStF ему неизвестна. Скорее всего, нужна была функция FloatToStrF.

Относительно строки - из файла читаются строки и помещаются в одну и ту же переменную, каждый раз замещая предыдущую строку. В итоге в переменной будет последняя считанная строка. Надо не полностью заменять каждый раз строку в Text, а добавлять к старому содержимому Text очередную считанную из файла строку. Или, эффективнее, сначала собрать все строки из файла в одну и потом уже ее вывести.

Edited by Тролль
Link to comment
Share on other sites

Вобщем все мои проблемы решились вдумчивым чтением справки =)

-----

Еще вопрос такой. Я когда сохраняю фаил. Хочу чтобы к каждой строке цеплялась текущая системная дата. Как ее вытащить?

Link to comment
Share on other sites

И еще. есть некая переменная int I;

Как привести ее к String ^p; ?

Чтобы была возможность информацию из нее вставить в textbox;

C переводом форматов справился. Осталось дата.

Edited by DoctorG
Link to comment
Share on other sites

DoctorG:

C переводом форматов справился. Осталось дата.
#include <time.h>

...

char s[12]; cout<<_strdate(s);

Дата в строке будет в несколько непривычном формате (американском), надеюсь, переставить части строки местами будет нетрудно.

Lion HC:

что значит симовол ^
Операция побитового исключающего "ИЛИ". Каким образом ее использует в своей программеDoctorG, знает только он сам ;).
Link to comment
Share on other sites

Еще один вопрос.

допустим есть некое поле, типа textBox

мне нужно чтобы в него была возможность вводить лишь цифры, но не буквы.

я так понимаю это нужно сделать с помощью события

KeyPress

а что писать в обработчике события?

Link to comment
Share on other sites

Да ни в каком событии... Ввели строку - прежде чем передать ее дальше, прсто в тексте программы проверь, нет ли в ней букв и, если есть, выдай на экран "Введите снова: допустимы только цифры".

Если уж хочется контролировать именно ввод, то проверка во время ввода описана, например, тут (ближе к концу страницы), правда, на C#, но это, видимо, нетрудно изменить и для C++.

Link to comment
Share on other sites

Скажите пожалуйста, что значит симовол ^

В Борланде я такого еще не встречал :g:

Не знаю почему, но в .net таким образом обозначаются указатели.

Link to comment
Share on other sites

Так обозначались указатели в Pascal, потом в Delphi. В C++ мне такого пока не попадалось, хотя не исключено, конечно, что такое уже существует и просто до меня не дошло. Borland, активно продвигавшая Delphi и даже свой C++ Builder строившая с большой оглядкой на Delphi, вполне могла бы такое учудить. Но Microsoft... :) хотя чем черт не шутит :(

Link to comment
Share on other sites

  • 3 months later...

Microsoft не отказалась от *.

Значение в звездочки прежнее. Но при програмировании под .NET, появилась необходимость ввести новий спец.символ...

...обратите внимание на необходимость использования ключевого слова gcnew вместо new при создании объекта .NET, а также на то, что gcnew возвращает дескриптор (^), а не указатель (*):

StreamWriter^ sw = gcnew StreamWriter(fileName);

П.С.: ето я вчера поставил себе русскую версию Microsoft Visual Studio Team System 2008 Architecture Edition с русской справкой. Пока очень доволен :)

Link to comment
Share on other sites

  • 3 weeks later...

Есть вопрос. Пишу программу, которая, грубо говоря, считывает байты из одного файла и записывает их в новый (т.е. сначала считывается байт из файла, затем сразу же идёт его запись в новый файл и так далее). Однако, когда размер исходного файла достаточно велик, программа при выполнении операций перестаёт отвечать, она начинает загружать процессор на 50-60%. Соответственно, различные индикаторы прогресса в программе тоже застывают на месте, всё окно программы как бы заморожено, хотя сам процесс считывания/записи идёт (это заметно из того, что размер нового файла с каждым разом увеличивается). Как только процесс чтения/записи завершается, программа снова начинает отвечать и процессор перестаёт быть загруженным. Почему так происходит?

P.S: Должен заметить, что это было не только в VB.NET, но и раньше, когда писал подобные приложения в VB 6.0.

Edited by Shadow TH
Link to comment
Share on other sites

Вы считываете/записываете каждый раз только по 1 байту? Какой примерно размер файла?

Ну, допустим, файл размером 10 МБ. Я открываю файл для чтения и ещё один файл для записи. Затем в цикле указываю нижний предел = 1, и верхний предел в зависимости от того, сколько байтов мне нужно сохранить в новом файле. Уже в самом цикле находятся операторы чтения/записи.

Edited by Shadow TH
Link to comment
Share on other sites

В том то и проблема...

Очень много итерацый и в каждой выполняется и чтение и запись... Ето и ест много ресурсов. Попробуйте переписывать пакетами по несколько байт.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...