#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TOleContainer *mas [2];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Сохраняем и удаляем
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->OleContainer1->SaveToFile("1.doc");
Form1->OleContainer2->SaveToFile("2.doc");
Form1->OleContainer3->SaveToFile("3.doc");
Form1->OleContainer1->Free();
Form1->OleContainer2->Free();
Form1->OleContainer3->Free();
}
//---------------------------------------------------------------------------
// Создаем и загружаем
void __fastcall TForm1::Button2Click(TObject *Sender)
{
for (int i=0; i<3; i++) {
mas = new TOleContainer(Form1);
mas->DoubleBuffered = True;
mas->Parent = Form1;
mas->Left = 150*(i+1);
mas->Top = 50;
mas->Visible = True;
mas->AllowActiveDoc = False;
mas->AllowInPlace = False;
mas->BorderStyle = bsNone;
mas->CreateObject("Word.Document.8",True);
mas->LoadFromFile(IntToStr(i+1)+".doc");
}
}
//---------------------------------------------------------------------------
Проблемы с TOleContainer
Так вот веду войну с TOleContainer.
Простой пример: есть форма, на нем 3 контейнера Оле и две кнопки. По нажатию на первую контейнера сохраняются в файлы и уничтожаются. По нажатию на вторую - создаются три контейнера и загружаются из файла.
Вот код:
Код:
Проблема вот в чем: процесс восстановления из файлов занимает очень много времени.
Как можно убрать эти жуткие тормоза?
*mas [2];
а используется три ячейки, как я понял
Цитата:
возможно, проблема с памятью:
*mas [2];
а используется три ячейки, как я понял
*mas [2];
а используется три ячейки, как я понял
:)
В С массивы нумеруются с 0
ПС: учи язык ;)
В С массивы нумеруются с 0
ПС: учи язык ;)[/QUOTE]
Аутотренингом занимаешься? :)
Нумеруются то они с 0 - но выделяешь память только под 2 элемента.
Во-первых цикл for (int i=0; i<3; i++) крутится три раза при i=0, =1, =2
Во вторых кто нить исходники запускал? Там все работает ок.
Проблема не в этом!!
Проблема в тормозах самого OLEContainer - как от них избавиться?
Во-первых цикл for (int i=0; i<3; i++) крутится три раза при i=0, =1, =2
Во вторых кто нить исходники запускал? Там все работает ок.
Проблема не в этом!!
[/QUOTE]
Речь идет о вот этом фрагменте кода:
Код:
TOleContainer *mas [2];
здесь создается массив указателей размером в два элемента. Так как логика этого непонятна - то естественно появился вопрос То что цикл крутится три раза никто не сомневался.
[QUOTE=Triaffer]
Проблема в тормозах самого OLEContainer - как от них избавиться?[/QUOTE]
Не использовать OLEContainer :)
Но а если серьезно - определи в какой именно операции происходит собственно торможение системы. Может быть указанная ошибка здесь и не причем - а может быть даже очень.