Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Builder Запись в файл и кодировка Здравствуйте!!! Уважаемые гуру-программисты посоветуйте новичку как лучше реализовать следующую задачу(мучаюсь с ней уже который час) Необходимо: 1.Открыть уже существующий txt-файл(vopros.txt), записать в него некую информацию считываемую с поля Memo3(причем что бы предыдущие записи не удалялись)получилось пока что только так: #include <vcl.h> #pragma hdrstop #include <fstream.h> ... https://www.cyberforum.ru/ cpp-builder/ thread1739708.html В текстовом файле.Определить номер строки и номер позиции в этой строке, с которой начинается слово “plus” C++ Builder
Определить номер строки и номер позиции в этой строке, с которой начинается слово “plus”. Вывести строки, которые начинаются и за- канчиваются на одну и ту же букву. Вот часть код: void __fastcall TForm1::Button1Click(TObject *Sender) { f=fopen(fn,"wt"); if(f==0){ShowMessage("ewsdgfsd");return;} char s;
C++ Builder "Запомнить" значение Label после завершения программы Здравствуйте, Господа! К примеру, имеется Label1 значение которого по умолчанию "11111". Нажатием на кнопку Button1 меняется значение Label1 на "22222". Нужно чтобы приложение запомнило это значение лэйбл после закрытия программы, т.е. чтобы при следующем запуске значение Label1 было "22222", а не как по умолчанию - "11111". Подскажите пожалуйста, как это реализовать? Спасибо заранее. https://www.cyberforum.ru/ cpp-builder/ thread1739624.html C++ Builder Создать форму с компонентами для вычисления формулы Всем привет!!Вот само задание: Решите задачу используя компоненты Label, Edіt, Button. z= y2(x2+4x2) при x=2, y=4,7 https://www.cyberforum.ru/ cpp-builder/ thread1739322.html
C++ Builder Как соединить StringGrid с другим StringGrid (Rad xe8)
Здраствуйте. Проблема заключается в следующем: Есть таблица которая указана на 1 изображении дание с которой нада синхронизировать с другой таблицей(рис 2.) в поле П.І.Б. только под этой надписью + номер напротив П.І.Б. Вот код которым я питался это сделать но после этого таблица не сохранялась и очень мерцала void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int...
C++ Builder Телефонные номера и префиксы https://www.cyberforum.ru/ cpp-builder/ thread1739245.html
Здравствуйте! Нужно разбить диапозон телефонных номеров на префиксы 74953456000 - 74953789999 74953456 74953457 74953458 74953459 7495346 7495347 7495348
C++ Builder ValueListEditor. Объединение values одинаковых names https://www.cyberforum.ru/ cpp-builder/ thread1739157.html
Здравствуйте, господа программисты. Прошу помощи с этим новым для меня компонентом в Borland C++ Builder 6. Поставленная мне мною же задача такова: По таймеру в ValueListEditor попадает случайный элемент. При совпадении name элемента, value уже добавленного должна увеличиваться на один. При несовпадении новый элемент должен добавляться с value = 1. По найденному в сети примеру на Дельфи...
C++ Builder Перемещение формы - E2316 'Image1MouseDown is not a member of 'TForm2'
Нашел данный код, который позволяет перемещать форму, перетаскивая картинку: void __fastcall TForm2::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { long SC_DRAGMOVE = 0xF012; if (Shift.Contains(ssLeft)) { ReleaseCapture(); SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0); }
C++ Builder Не линкуется проект при портировании на старшую версию билдера https://www.cyberforum.ru/ cpp-builder/ thread1739119.html
Здравствуйте, у меня есть проект на С++Builder 6 рабочий, я его хочу переделать на RAD Studio C++Builder XE10, вроде все пофиксил, запускаю а мне выдает ==> Fatal: Unable to open file 'STLPMT.LIB' <==, подскажите пожалуйста в чем проблема, я такого файла не использовал. Я так понял, что формат не поддерживается Radom с C++Builder 6. В любом случае буду рад помощи.
C++ Builder Как переделать вот это код паскаль под Builder с++? for j:=1 to n do for i:=1 to m do begin read(matr); if matr<>0 then nol:=false; if matr<0 then otr:=true; if matr<min then min:=matr; end end else begi n:=3;m:=3; for i:=1 to m do for j:=1 to n do matr:=matr1; end; https://www.cyberforum.ru/ cpp-builder/ thread1739070.html
C++ Builder Прилипание форм ManualDock
Доброго времени суток. Делаю так: TPanel * Panel; TForm * Form1 = new TForm(NULL); TForm * Form2 = new TForm(NULL); Form1->ManualDock(Panel,NULL,alClient); Form2->ManualDock(Panel,NULL,alClient);
C++ Builder Программное нажатие элемента в TreeView Имеется следующий список TreeView Введение Печатная плата Чипсет Основные функции Северного моста Интерфейсы связи с процессором (*) FSB (Front Site Bus) HyperTransport DMI (Direct Media Interface) https://www.cyberforum.ru/ cpp-builder/ thread1738938.html
91 / 3 / 2
Регистрация: 19.05.2016
Сообщений: 38
0

Быстрое чтение большого массива данных с Excel в C++Builder - C++ Builder - Ответ 9163548

19.05.2016, 22:14. Показов 2558. Ответов 9
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! нужна помощь. Считываю диапазон ячеек с Excel. Например размером 18 на 3500. Код ниже:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Variant
      v_Var_Excel,         
      v_Var_Books,         
      v_Var_Book,         
      v_Var_Sheets,       
      v_Var_Sheet,        
      v_Var_Cells,        
      v_Var_Cell,
v_RangeDataHelp
v_RangeData; 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// запускаем Excel
ExcelInit("ИМЯ_Файла.xls",1);
 
int i_TimeStart = GetTickCount();
 
Variant v_RangeDataHelp ,v_RangeData ;
v_RangeDataHelp = v_Var_Sheet.OlePropertyGet("Range","A1:R3500");
v_RangeData = v_RangeDataHelp.OlePropertyGet("Value");
 
Label1->Caption = "Time: " + FloatToStr((float)(GetTickCount()- i_TimeStart)/1000.0)+" c";
 
//Освобождается память и закрывается Excel
v_RangeDataHelp.Clear();
v_RangeData.Clear();
ExcelClose();
CleaningMemory();
}
 
void __fastcall ExcelInit(AnsiString as_File, int i_Number_Sheet)
{
  // Попытка запуска Excel
  try {
        //Пытаемся запустить Exel
        v_Var_Excel = CreateOleObject("Excel.Application");
        b_Excel_Start = true;
  } catch (...) {
        Application->MessageBox("Невозможно открыть Microsoft Excel!"
        "Возможно Excel не установлен на компьютере.",
        "Ошибка",MB_OK+MB_ICONERROR);
        b_Excel_Start = false;
        return;
  }
  try {
        if(as_File!=""){
                v_Var_Excel.OlePropertyGet("WorkBooks").OleProcedure("Open", as_File.c_str()); //Пытаемся открыть указанный файл
                b_Excel_Start = true;
        }
        else{
                b_Excel_Start = false;
                return;
        }
        //Открываем лист книги с которым будем работать
        v_Var_Sheet = v_Var_Excel.OlePropertyGet("Worksheets",i_Number_Sheet);
  } catch(...) {
        Application->MessageBox("Ошибка открытия книги Microsoft Excel!",
                                         "Ошибка",MB_OK+MB_ICONERROR);
        return;
  }
}
 
void __fastcall ExcelClose()
{
  v_Var_Excel.OlePropertyGet("WorkBooks").OleProcedure("Close");
  v_Var_Excel.OleProcedure("Quit");
}
 
void __fastcall CleaningMemory()
{
  v_Var_Excel.Clear();
  v_Var_Books.Clear();
  v_Var_Book.Clear();
  v_Var_Sheets.Clear();
  v_Var_Sheet.Clear();
  v_Var_Cells.Clear();
  v_Var_Cell.Clear();
}
При однократном вызове все работает быстро. Диапазон 18 на 3500 меньше чем за секунду считывает. Но если вызвать повторно код, то работает порядка 30 секунд. Хотя при каждом вызове сначала открываю Excel, считываю данные, закрываю Excel. Кто подскажет в чем беда????

При тестировании выяснил, что проблема именно в этой строке:

C++
1
v_RangeData = v_RangeDataHelp.OlePropertyGet("Value");
но что именно не так не понятно. т.е. если эту строку убрать, то код работает быстро при любом количестве вызовов, а если вернуть, то первый раз быстро, а при повторных вызовах очень медленно.

Вернуться к обсуждению:
Быстрое чтение большого массива данных с Excel в C++Builder C++ Builder
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2016, 22:14
Готовые ответы и решения:

Максимально быстрое чтение очень большого файла
Добрый день, задача прочитать очень большой файл (1GB-10GB+). Нужно провести операцию с каждой...

Быстрое чтение большого файла. Зависает процесс
Всем доброго времени суток. Есть задача прочитать файл(1-20 мб), который состоит из слов...

Быстрое чтение из Excel
Здравствуйте! Перейду сразу к вопросу. Есть Excel-файл с 9 колонками и 1000 строк, т.е. 9000...

Быстрое чтение из Excel
Доброе время, форумчане! Столкнулся с такой проблемой: 100 лет работал с Excel и беды не знал,...

9
19.05.2016, 22:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2016, 22:14
Помогаю со студенческими работами здесь

Быстрое формирование списков большого количество данных
Здравствуйте ув.Форумчане. У меня вот такой вопрос: необходимо сделать быстрое формирование...

Быстрое создание большого массива элементов управления
Привет всем! У меня есть некоторый пользовательский (свой) элемент управления. Подскажите,...

Загрузка большого массива данных из Excel - стоит ли рассматривать поячеечное считывание?
Добрый день! Есть задача считать из excel большой массив данных (количество строк и столбцов не...

Быстрое чтение массива из файла
Добрый день, появился вроде бы не сложный вопрос, у меня есть динамический массив данных ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru