Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 15 из 22<  1 ... 12  13  14  15  16  17  18 ... 22  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 29.07.2005
Откуда: Ufa
Добрый день, а никто не подскажет как в Builder 2007 обстоит дело с поддержкой ассемблерных вставок с использованием SSE2, и генерирует ли компилятор оптимизированный под эти инструкции код?



Партнер
 

Member
Статус: Не в сети
Регистрация: 18.08.2004
Откуда: г.Юбилейный
Подскажите, как создать массив более миллиарда строк, после миллиона строк уже Билдер при компиляции вылетает :(

_________________
Учебные материалы для студентов http://www.studlab.ru/


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Deimos писал(а):
Подскажите, как создать массив более миллиарда строк, после миллиона строк уже Билдер при компиляции вылетает

Зачем вам такой массив? :shock: .


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Deimos
Если не все строки будут использоватся (а я с трудом представляю себе полностью забитый массив из миллиарда строк) то можно использовать разряженные массивы.


 

Microsoft Visual J# v1.1 Redistributable Народ подскажите как установить? Я новичок, с++ 6.0 требует, я скачал с майкрософт, файл msxml, установил а С++ все равно говорит что не усановлен, потом скачал Visual Studio Installer 1.1, но он сказал что надо сначала С++ установить... Что делать, совсем запутался... Помогайте пожал.
Добавлено спустя 38 минут, 12 секунд
Еще одна просьба: Помогите найти такую книгу по С++, чтоб с Примерами и Задачами, чтоб можно было начать с "0" Так как почти вся литература не дает ни примеров, не задач для выполнения :( ... Приметивные азы знаю по С++ 5.


 

Member
Статус: Не в сети
Регистрация: 18.08.2004
Откуда: г.Юбилейный
Ты что-то не то скачал, здесь вопросы по билдеру!
Поставь C++ Bulder 6 и купи книжку "Программирование в C++ Bulder 6 или 2006" авторы А.Я. Архангельский М.А. Тагин.

_________________
Учебные материалы для студентов http://www.studlab.ru/


 

Там С++ требует предустановленого, "Microsoft Visual J# v1.1 Redistributable", и без его установки не устанавливается...
Добавлено спустя 1 минуту
Но в его установки и вся проблема...


 

Member
Статус: Не в сети
Регистрация: 01.06.2005
Откуда: Челябинск
Приветсвую, помогите ламеру скомпилить один файл, используется С++ билдер из БДС 2007. Для необходимо кода подключена библиотека zlib, сам код небольшой, но возникает ошибка [ILINK32 Error] Fatal: Unable to open file '', притом библиотеку zlib он находит, не ругается на ее незнание, сам код вот:
Код:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <zlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "zlib.h"
using namespace std;

const size_t buffer_size = 16384;

void writeData(const string& fname, const char *data, size_t size)
{
   static ofstream rtf;
   static int      n = 0;
   static int      brack  = 0;
   static bool     in = false;
   ostringstream   os;

   for (int i = 0; i < static_cast<int>(size); ++i)
   {
      if (*data == '}')
      {
         ++brack;
         if (brack == 1)
         {
            in = true;
            ++n;
            os.str(string());
            os << fname << '.' << n << ".rtf";
            rtf.open(os.str().c_str(), ios_base::out | ios_base::binary);
            cout << "New RTF: " << os.str() << endl;
         }
      }
      if (in)
         rtf << *data;
      if (*data == '}')
      {
         --brack;
         if (brack == 0)
         {
            in = false;
            rtf.close();
         }
         if (brack < 0)
            brack = 0;
      }
      ++data;
   }
}

int main(int argc, char **argv)
{
   z_stream      z;
   unsigned char buf_in[buffer_size], buf_out[buffer_size];

   if (argc != 2)
   {
      cout << "You must specify one MTF-file" << endl;
      return 1;
   }

   ifstream mtf(argv[1], ios_base::in | ios_base::binary);
   mtf.seekg(8);

   z.zalloc = Z_NULL;
   z.zfree = Z_NULL;
   z.opaque = Z_NULL;
   z.avail_in = 0;
   z.next_in = Z_NULL;
   inflateInit(&z);

   while (!mtf.eof())
   {
      mtf.read(reinterpret_cast<char *>(&buf_in[0]), buffer_size);
      z.avail_in = mtf.gcount();
      if (z.avail_in <= 0)
         break;
      z.next_in = buf_in;

      do
      {
         z.avail_out = buffer_size;
         z.next_out = buf_out;
         inflate(&z, Z_NO_FLUSH);
         writeData(argv[1], reinterpret_cast<const char *>(&buf_out[0]), buffer_size - z.avail_out);
      } while (z.avail_out == 0);
   }

   inflateEnd(&z);

   return 0;
}

_________________
а отдыхать мы будем в аду...


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Подскажите плиз, че то я никак не разберусь...
Как проверить, нажата ли в данный момент клавиша Ctrl?
(Надо в обработчике события производить разные действия в зависимости от того, нажата клавиша ctrl или нет)

Есть функция KeyPress(char& Key), но на не реагирует на клавиши Ctrl, Alt, Shift.


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Все, разобрался, надо в обработчике OnMouseDown поставить проверку условия

if (Shift.Contains(ssCtrl))


 

допоможіть розв'язати програмування!
2. В одномірному масиві, що складаеться з n цілих елементів, обчислити:!) мінімальний
по модулі елемент масиву; 2) суму модулів елементів масиву, розташованих після
першого елемента, рівного нулю. Перетворити масив таким чином, щоб у першій його
половині розташовувалися елементи, що стояли в парних позищях, а в другій половині
- елементи, що стояли в непарних позиціях.
3. Елемент матриці називається локальним мінімумом, якщо він строго менше всіх
наявних у нього сусідів. Підрахувати кількість локальних мінімумів заданої матриці
розміром 10 на 10. Знайти суму модулів елементів розташованих вище головної
діагоналі.
4. Вибрати три різні точки з заданої множини точок на площині так, щоб була
мінімальною різниця між кількостями точок. що лежать всередині і поза трикутника з
вершинами в обраних точках.
5. 1. Описати структуру з ім'ям МАRSН, що містить наступні поля: назва початкового
пункту маршруту; назва кінцевого пункту маршруту; номер маршруту. 2. Написати
програму, що виконує наступині дії: введения з клавіатури даних у масив, що складаеться з восьми елементів тину МАRSН; записи повинні бути упорядковані по номерах маршрутів; вивід на екран інформації про маршрути, номер якого введено з клавіатури; якщо таких маршрутів немає, видати на дисплей відповідне повідомлення.
6. Виконати завдання 2-5 використовуючи динамічне виділення пам'яті.

Добродію, ви звертаєтєся до участників конференції, маючи тільки один пост. І ви навіть не поторбувалися перекласти питання. Ви зневажаєте правила конференції, а також норми етикету і моралі. Прошу вас відредагувати повідомлення.
Отредактировано модератором: Daemon. Дата: 07.01.2008 2:26


 

Junior
Статус: Не в сети
Регистрация: 30.07.2007
Откуда: Киев
Может кто знает как мне помочь...
Я написал функцию шифровки файлов (методом простого XOR)...
Только есть проблема... Она как-то странно работает...
Она нормально зашифровует и расшифровует txt,html, bmp файлы...
Но разные другие - например доковские или видео не совсем корректно...
Например видео получается с артефактами...
Может кто-то сможет мне помочь :)
Код:
// ШИФРОВКА  ФАЙЛОВ
int TForm1::Crypto(char key,AnsiString FileName)
{int f;
int n;  //Число прочитанных байтов файлридом
char buf[250];   //Буффер ввода
char a;
int i;
if (FileExists(FileName))
  {f=FileOpen(FileName,fmOpenReadWrite);  //Открываем файл
   while (n)                 //Пока есть прочитанные данные
    {n=FileRead(f,buf,250);              //Считываем 250 байт в буффер
     for (i=0; i<strlen(buf); i++)
      {a=buf[i];                         //Шифруем
       buf[i]=a ^ key;
       i++;
      }
     FileSeek(f,-n,1);                  //Возращаемся на n байтов назад
     FileWrite(f,buf,n);               //Записываем из буфера
    }
   FileClose(f);                 //Закрываем файл
  }
return 1;
}


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
Crazy_heead
Я честно говоря не знаком с builder, но думаю дело в том, что файл открыт не в режиме binary, а надо бы...
Добавлено спустя 1 час, 44 минуты, 25 секунд
Я бы на твоем месте попробовал использовать winapi. Вот приведу пример, возможно не самый удачный, но вполне работающий и весьма быстрый:

Код:
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>

using namespace std;

inline void Encrypt(byte *buffer, long size)
{
  for (long i = 0; i < size; i++)
    buffer[i]++;
}

inline void Decrypt(byte *buffer, long size)
{
  for (long i = 0; i < size; i++)
    buffer[i]--;
}

bool ProcessFile(string fileName, long bufferSize, void (*ProcessBuffer)(byte*, long))
{
  bool processed = false;
  if (bufferSize > 0)
  {
    HANDLE hFile = ::CreateFile(
      fileName.c_str(),
      FILE_ALL_ACCESS,
      FILE_SHARE_READ,
      NULL,
      OPEN_EXISTING,
      FILE_FLAG_OVERLAPPED,
      NULL);
    if (hFile != INVALID_HANDLE_VALUE)
    {
      LARGE_INTEGER fileSize;
      if (::GetFileSizeEx(hFile, &fileSize))
      {
        DWORD dw;
        byte *buffer = new byte[bufferSize];
        OVERLAPPED overrlp;
        ZeroMemory(&overrlp, sizeof(OVERLAPPED));
        LARGE_INTEGER pos;
        for (pos.QuadPart = 0; pos.QuadPart < fileSize.QuadPart; pos.QuadPart+=bufferSize)
        {
          overrlp.Offset = pos.LowPart;
          overrlp.OffsetHigh = pos.HighPart;
          ::ReadFile(hFile, buffer, bufferSize, &dw, &overrlp);
          ::GetOverlappedResult(hFile, &overrlp, &dw, true);
          ProcessBuffer(buffer, dw);
          ::WriteFile(hFile, buffer, dw, &dw, &overrlp);
        }
        delete[] buffer;
        processed = true;
      }
      ::CloseHandle(hFile);
    }
  }
  return processed;
}

int main()
{
  cout << "Please enter file name for process: ";
  string fileName;
  cin >> fileName;

  DWORD time;

  time = GetTickCount();
  cout << (ProcessFile(fileName, 8388608, Encrypt) ? "File encrypted" : "File not encrypted") << endl;
  cout << "Time " << GetTickCount() - time << "ms" << endl;

  cout << "Press any key for decrypt" << endl;
  _getch();

  time = GetTickCount();
  cout << (ProcessFile(fileName, 8388608, Decrypt) ? "File decrypted" : "File not decrypted") << endl;
  cout << "Time " << GetTickCount() - time << "ms" << endl;

  cout << "Press any key for exit" << endl;
  _getch();
  return 0;
}


Тут конечно шифрования почти никакого нету, просто тест скорости обработки. У меня лично почти 6гб файл орабатывается менее чем за полсекунды.


 

Member
Статус: Не в сети
Регистрация: 09.07.2007
всем привет
нужна помощь - надо в с++ builder обеспечить редактирование свойств группы компонент (TLabel, TEdit, ...): например, по нажатию кнопки выровнять по левому/правому краю, с заданным шагом, и т.д.
в visual basic это - не проблема: там при добавлении компоненты копированием, он создаёт массив элементов: Label1(1), Label1(2), ..., соответственно, мутим цикл, и все дела.
а как быть в с++ builder?
почитал что-то про создание массива компонент типа TLabel, использование вектора, ... - не работает.


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rcmonitor
Привет, а где не работающий код? В студию!


 

Member
Статус: Не в сети
Регистрация: 09.07.2007
вот он:

Отвечает: 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();


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rcmonitor
Так, как я понимаю, говорим о примере с векторами. Что конкретно не получилось?


 

Member
Статус: Не в сети
Регистрация: 09.07.2007
я пробовал 1.1 и 1.2 - пишет ошибка в коде


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rcmonitor
rcmonitor писал(а):
почитал что-то про создание массива компонент типа TLabel, использование вектора, ... - не работает.

rcmonitor писал(а):
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();

rcmonitor писал(а):
я пробовал 1.1 и 1.2 - пишет ошибка в коде

Так значит ты пробовал все кроме вектора?

И что за ошибка в коде? Ты привел пример, который в свою очередь тебе привели. Но он не заработает конечно же, если его просто тупо вставить. Вот показывай какой код у тебя получился.


 

Member
Статус: Не в сети
Регистрация: 09.07.2007
#include <vcl.h>
#pragma hdrstop

#include "boost_main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
int total=10;
TLabel **pLabels = new TLabel*[Total];
for(int i=0; i<Total; ++i)
pLabels[i] = new TLabel(Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
for(int i=0; i<Total; ++i)
pLabels[i]-> //после стрелки он, по идее, если всё правильно, должен выдавать список свойств, а вместо этого пишет: Unable to invoke Code Completion due to errors in source code

}


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 421 • Страница 15 из 22<  1 ... 12  13  14  15  16  17  18 ... 22  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan