DoctorG Posted February 7, 2009 Report Share Posted February 7, 2009 Вобщем при изучении возникли некоторые вопросы. Допустим не совсем понятно почему не работает следующий код. Я в обработчике события 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 More sharing options...
Тролль Posted February 7, 2009 Report Share Posted February 7, 2009 (edited) DoctorG: Компилятор же написал, что функция FloatToStF ему неизвестна. Скорее всего, нужна была функция FloatToStrF. Относительно строки - из файла читаются строки и помещаются в одну и ту же переменную, каждый раз замещая предыдущую строку. В итоге в переменной будет последняя считанная строка. Надо не полностью заменять каждый раз строку в Text, а добавлять к старому содержимому Text очередную считанную из файла строку. Или, эффективнее, сначала собрать все строки из файла в одну и потом уже ее вывести. Edited February 7, 2009 by Тролль Link to comment Share on other sites More sharing options...
Lion HC Posted February 7, 2009 Report Share Posted February 7, 2009 Скажите пожалуйста, что значит симовол ^ В Борланде я такого еще не встречал :blush2: Link to comment Share on other sites More sharing options...
DoctorG Posted February 8, 2009 Author Report Share Posted February 8, 2009 Не ну хорошо. А что делать с нежеланием компилятора, складывать, делить и умножать? Link to comment Share on other sites More sharing options...
DoctorG Posted February 8, 2009 Author Report Share Posted February 8, 2009 Вобщем все мои проблемы решились вдумчивым чтением справки =) ----- Еще вопрос такой. Я когда сохраняю фаил. Хочу чтобы к каждой строке цеплялась текущая системная дата. Как ее вытащить? Link to comment Share on other sites More sharing options...
DoctorG Posted February 8, 2009 Author Report Share Posted February 8, 2009 (edited) И еще. есть некая переменная int I; Как привести ее к String ^p; ? Чтобы была возможность информацию из нее вставить в textbox; C переводом форматов справился. Осталось дата. Edited February 8, 2009 by DoctorG Link to comment Share on other sites More sharing options...
Тролль Posted February 9, 2009 Report Share Posted February 9, 2009 DoctorG: C переводом форматов справился. Осталось дата.#include <time.h>... char s[12]; cout<<_strdate(s); Дата в строке будет в несколько непривычном формате (американском), надеюсь, переставить части строки местами будет нетрудно. Lion HC: что значит симовол ^Операция побитового исключающего "ИЛИ". Каким образом ее использует в своей программеDoctorG, знает только он сам ;). Link to comment Share on other sites More sharing options...
DoctorG Posted February 9, 2009 Author Report Share Posted February 9, 2009 Троль. Спасибо. Link to comment Share on other sites More sharing options...
DoctorG Posted February 11, 2009 Author Report Share Posted February 11, 2009 Еще один вопрос. допустим есть некое поле, типа textBox мне нужно чтобы в него была возможность вводить лишь цифры, но не буквы. я так понимаю это нужно сделать с помощью события KeyPress а что писать в обработчике события? Link to comment Share on other sites More sharing options...
Тролль Posted February 11, 2009 Report Share Posted February 11, 2009 Проще всего проверяй введенный текст и если там что-то неподходящее, заставляй ввести его заново. Ведь буквы можно ввести и не с клавы, а, например, вставкой из буфера. Link to comment Share on other sites More sharing options...
DoctorG Posted February 11, 2009 Author Report Share Posted February 11, 2009 В каком событии? И как? Link to comment Share on other sites More sharing options...
Тролль Posted February 11, 2009 Report Share Posted February 11, 2009 Да ни в каком событии... Ввели строку - прежде чем передать ее дальше, прсто в тексте программы проверь, нет ли в ней букв и, если есть, выдай на экран "Введите снова: допустимы только цифры". Если уж хочется контролировать именно ввод, то проверка во время ввода описана, например, тут (ближе к концу страницы), правда, на C#, но это, видимо, нетрудно изменить и для C++. Link to comment Share on other sites More sharing options...
Shadow TH Posted February 12, 2009 Report Share Posted February 12, 2009 Скажите пожалуйста, что значит симовол ^ В Борланде я такого еще не встречал :g: Не знаю почему, но в .net таким образом обозначаются указатели. Link to comment Share on other sites More sharing options...
DoctorG Posted February 12, 2009 Author Report Share Posted February 12, 2009 Shadow TH именно так. Link to comment Share on other sites More sharing options...
Тролль Posted February 12, 2009 Report Share Posted February 12, 2009 Так обозначались указатели в Pascal, потом в Delphi. В C++ мне такого пока не попадалось, хотя не исключено, конечно, что такое уже существует и просто до меня не дошло. Borland, активно продвигавшая Delphi и даже свой C++ Builder строившая с большой оглядкой на Delphi, вполне могла бы такое учудить. Но Microsoft... :) хотя чем черт не шутит Link to comment Share on other sites More sharing options...
Lion HC Posted May 26, 2009 Report Share Posted May 26, 2009 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 More sharing options...
Shadow TH Posted June 16, 2009 Report Share Posted June 16, 2009 (edited) Есть вопрос. Пишу программу, которая, грубо говоря, считывает байты из одного файла и записывает их в новый (т.е. сначала считывается байт из файла, затем сразу же идёт его запись в новый файл и так далее). Однако, когда размер исходного файла достаточно велик, программа при выполнении операций перестаёт отвечать, она начинает загружать процессор на 50-60%. Соответственно, различные индикаторы прогресса в программе тоже застывают на месте, всё окно программы как бы заморожено, хотя сам процесс считывания/записи идёт (это заметно из того, что размер нового файла с каждым разом увеличивается). Как только процесс чтения/записи завершается, программа снова начинает отвечать и процессор перестаёт быть загруженным. Почему так происходит? P.S: Должен заметить, что это было не только в VB.NET, но и раньше, когда писал подобные приложения в VB 6.0. Edited June 16, 2009 by Shadow TH Link to comment Share on other sites More sharing options...
Lion HC Posted June 16, 2009 Report Share Posted June 16, 2009 Вы считываете/записываете каждый раз только по 1 байту? Какой примерно размер файла? Link to comment Share on other sites More sharing options...
Shadow TH Posted June 16, 2009 Report Share Posted June 16, 2009 (edited) Вы считываете/записываете каждый раз только по 1 байту? Какой примерно размер файла? Ну, допустим, файл размером 10 МБ. Я открываю файл для чтения и ещё один файл для записи. Затем в цикле указываю нижний предел = 1, и верхний предел в зависимости от того, сколько байтов мне нужно сохранить в новом файле. Уже в самом цикле находятся операторы чтения/записи. Edited June 16, 2009 by Shadow TH Link to comment Share on other sites More sharing options...
Lion HC Posted June 16, 2009 Report Share Posted June 16, 2009 В том то и проблема... Очень много итерацый и в каждой выполняется и чтение и запись... Ето и ест много ресурсов. Попробуйте переписывать пакетами по несколько байт. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now