Перейти к содержанию
СофтФорум - всё о компьютерах и не только

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


Рекомендуемые сообщения

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

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

Я в обработчике события 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;  }

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

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

=(

Ссылка на комментарий
Поделиться на другие сайты

DoctorG:

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

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

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Не ну хорошо. А что делать с нежеланием компилятора, складывать, делить и умножать?

Ссылка на комментарий
Поделиться на другие сайты

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

-----

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Изменено пользователем DoctorG
Ссылка на комментарий
Поделиться на другие сайты

DoctorG:

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

...

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

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

Lion HC:

что значит симовол ^
Операция побитового исключающего "ИЛИ". Каким образом ее использует в своей программеDoctorG, знает только он сам ;).
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

KeyPress

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

Ссылка на комментарий
Поделиться на другие сайты

Проще всего проверяй введенный текст и если там что-то неподходящее, заставляй ввести его заново. Ведь буквы можно ввести и не с клавы, а, например, вставкой из буфера.

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

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

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

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

StreamWriter^ sw = gcnew StreamWriter(fileName);

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

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

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

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

Изменено пользователем Shadow TH
Ссылка на комментарий
Поделиться на другие сайты

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

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

Изменено пользователем Shadow TH
Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...