Вопрос № 64290: Здравствуйте, уважаемые эксперты. У меня вопрос по C++ Builder 6: Как в среде C++ Builder 6 можно работать с фалами, какие есть функции (частоиспользуемые)? Припустим у меня есть переменная в которую уже занесен путь к файлу. Как его можно открыть, з...Вопрос № 64292: Еще раз здравствуйте, уважаемые эксперты. Опять вопрос по C++ Builder 6. У меня есть объект типа TStringGrid (таблица) с названием sg_1. У него есть свойство
"Options" и у этого свойтва есть подсвойства, как мне их поменять в процессе выпол...Вопрос № 64315: Здравствуйте уважаемые эксперты. У меня возникли проблемки (в среде Borland C++ Builder 6.0), а именно:
1. Немогу создать обьект в виде массива, а именно, "ListBox" надо обьявить массивом, желательно динамическим, так как создать и...Вопрос № 64328: Я начинающий(совсем зелёный) начал изучать С++.
Купил диск Borland C++ 6 Builder и на Application написал программу
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int k;
k = random(6) + 1;
Label1->Caption...
Вопрос № 64.290
Здравствуйте, уважаемые эксперты. У меня вопрос по C++ Builder 6: Как в среде C++ Builder 6 можно работать с фалами, какие есть функции (частоиспользуемые)? Припустим у меня есть переменная в которую уже занесен путь к файлу. Как его можно открыть, записать содержимое файла в переменную, закрыть файл. Припустим у меня файл с таким путем "C:1.txt" в него занесен массив целых чисел через пробел: "1 2 3 4 5 6 7 8", мне нужно занести эти числа в массив A.
Заранее спасибо.
Отправлен: 26.11.2006, 16:50
Вопрос задал: neWMan (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: John Paramol
Здравствуйте, neWMan!
В VCL есть удобные функции FileCreate,FileOpen,FileSeek,FileRead,FileWrite,FileClose.
Все они используют стандартные ф-ии WinAPI, типа CreateFile,ReadFile и т.д.
Но использование ф-ий WinAPI для рядовых нужд типа вашей затруднено, поэтому лучше VCL.
Вто пример из которого вы можете что-нибудь взять.
Будут вопросы - пишите по внутренней почте.
Удачи!
Приложение:
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 4-ый класс)
Ответ отправлен: 26.11.2006, 19:39 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: V1s0r
Здравствуйте, neWMan!
Не могу сказать, какие есть функции в Borland C++, но язык С++ не привязан к среде программирования, поэтому покажу, как это сделать с помощью самого языка и стандартной библиотеки (пример должен работать везде), надеюсь, что это поможет.
int main()
{
vector<int> A;
const char* fileName = "c:\1.txt";
ifstream fin(fileName);
if (!fin) return 1;
// копируем все числа из файла в массив A
copy(istream_iterator<int>(fin),
istream_iterator<int>(),
back_inserter(A));
// убедимся, что числа записались в A
copy(A.begin(), A.end(),
ostream_iterator<int>(cout, " "));
return 0;
}
Ответ отправил: V1s0r (статус: 1-ый класс)
Ответ отправлен: 27.11.2006, 11:12
Вопрос № 64.292
Еще раз здравствуйте, уважаемые эксперты. Опять вопрос по C++ Builder 6. У меня есть объект типа TStringGrid (таблица) с названием sg_1. У него есть свойство "Options" и у этого свойтва есть подсвойства, как мне их поменять в процессе выполнения программы (т.е. в коде, а не визуально)? Припустим мне нужно поменять значение goEditing.
Заранее спасибо.
Отправлен: 26.11.2006, 16:55
Вопрос задал: neWMan (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: John Paramol
Здравствуйте, neWMan!
sg_1->Options является множеством (Set) зачений перечисляемого (enum) типа TGridOption.
В классе Set определены операторы << и >>, а также функция Contains.
Чтобы добавить опцию делаем так: sg_1->Options << goEditing;
Чтобы убрать: sg_1->Options >> goEditing;
А чтобы проверить наличие опции sg_1->Options.Contains(goEditing);
Удачи!
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 4-ый класс)
Ответ отправлен: 26.11.2006, 19:38 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет.
Вопрос № 64.315
Здравствуйте уважаемые эксперты. У меня возникли проблемки (в среде Borland C++ Builder 6.0), а именно:
1. Немогу создать обьект в виде массива, а именно, "ListBox" надо обьявить массивом, желательно динамическим, так как создать их прийдется под сотню, но активироватся (появлятся) они будут по очереди.
2. Имеем переменную,
String S="Hello word"
Неполучается подсчитать в ней количество определенных символов, и заменить их.
Отвечает: John Paramol
Здравствуйте, Ustilkin Vladimir Vladimirovich!
1.1
Можно использовать дин. массив указателей на объекты.
Плохо тем, что нельзя потом менять размер массива.
// количество листбоксов
int Total=100;
// создаем массив указателей TListBox* размерностью Total
TListBox **pListBoxes = new TListBox*[Total];
// под каждый указатель выделяем объект, привязанный к дескриптору окна
for(int i=0; i<Total; ++i) pListBoxes[i] = new TListBox(Handle);
// обращаться к каждому элементу массива можно так
pListBoxes[10]->Color = clWhite;
// после работы
// сначала удаляем каждый объект
for(int i=0; i<Total; ++i) delete pListBoxes[i];
// потом удаляем весь массив указателей на объекты
delete [] pListBoxes;
1.2
Можно использовать дин. список TList/TObjectList указателей на объекты.
Плохо тем, что не очень удобно обращаться к элементам списка.
Менять размер списка можно.
// создаем динамический список указателей на объекты TListBox
TObjectList *pListBoxes = new TObjectList;
// заполняем список указателями
for(int i=0; i<Total; ++i) pListBoxes->Add(new TListBox(Handle));
// обращаться к каждому элементу списка можно так
((TListBox*)(*pListBoxes)[10])->Color = clWhite;
// после работы
// сначала освобождаем все объекты
pListBoxes->Clear();
// потом удаляем весь список
delete pListBoxes;
1.3
Можно использовать динамический вектор STL, хранящий указатели.
Лучший вариант.
Нужно подключить #include <vector>
// создаем вектор (дин. массив) указателей на объекты TListBox
std::vector<TListBox*> pListBoxes;
// заполняем вектор
for(int i=0; i<Total; ++i) pListBoxes.push_back(new TListBox(Handle));
// обращаться к каждому элементу вектора можно так
pListBoxes[10]->Color = clWhite;
// после работы
// освобождаем память из под всех объектов
for(int i=0; i<pListBoxes.size(); ++i) delete pListBoxes[i];
// опустошаем вектор
pListBoxes.clear();
2.
Вот пример
String S="Hello world!";
int Len = S.Length();
char ChSource = 'o';
char ChDest = 'A';
int Sum = 0;
for(int i=1; i<=Len; ++i)
if(S[i]==ChSource)
{
S[i]=ChDest; ++Sum;
}
ShowMessage(S+"
"+IntToStr(Sum)+" symbols replaced");
Удачи!
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 4-ый класс)
Ответ отправлен: 26.11.2006, 22:39
Вопрос № 64.328
Я начинающий(совсем зелёный) начал изучать С++.
Купил диск Borland C++ 6 Builder и на Application написал программу
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int k;
k = random(6) + 1;
Label1->Caption = IntToStr(k)
cpp23 int n;
Программа не компилирует и выдаёт следующие ошибки:
cpp23 Statement missing,
cpp25 Undefined symbol 'h'
chh28 Expression syntax.
и далее в других , где бы не встречались операторы (cin, cout) прога затыкается.
Помогите пожалуйста или посоветуйте что-нибуть.
Отправлен: 26.11.2006, 22:23
Вопрос задал: Lopzan (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Melamed
Здравствуйте, Lopzan!
22 строка не заканчивается точкой с запитой ;
28 строка должна быть вот такой:
else Label1->Caption = "Вы не угадали";
На счет 25 строки ничего сказать не могу. Возможно вы в файле вместо n набрали h. Но это только
мое предположение.
Желаю успехов в освоении программирования
Ответ отправил: Melamed (статус: 8-ой класс)
Ответ отправлен: 26.11.2006, 22:43
Отвечает: V1s0r
1) cpp23 Statement missing
надо после Label1->Caption = IntToStr(k) поставить ;
2) эта ошибка пропадёт, после исправления предыдущей
3) разыменование указателя ->, а не =>, т.е.
else Label1->Caption = "Вы не угадали";
Практика - это, конечно, отлично, но и без теории никуда.
Почитай книгу по C++, благо на рынке выбор большой.
Как совсем начинающему, могу порекомендовать С за 21 день и С++ за 21 день.
В приложении исправленная программа.
Приложение:
Ответ отправил: V1s0r (статус: 1-ый класс)
Ответ отправлен: 27.11.2006, 10:24
Отвечает: Блок Иван/ Blin
Здравствуйте, Lopzan!
Попробуй мой вариант, но мне не совсем понятно, что значит в твоей программе строка cpp23 int n; Зачем тут cpp23(и вообще, что это такое?) ?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int k;
k = random(6) + 1;
Label1->Caption = IntToStr(k);
int n;