Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326

Проводник при создании Ole объекта

29.01.2012, 12:45. Показов 3010. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа решил модернизировать свою программу.
Смысл ее состоит в том, чтобы из папки, где jpg файлы, грузить их в word. В конце каждого загруженного рисунка в ворде вставляет строку, где написано название файла.
В данной версии путь к этой папке фиксирован в тексте
C++
1
2
3
4
TStringList *b = new TStringList();
  b->Clear();
  b->Sorted = true;
  AnsiString str,Path = "C:\\*.jpg";
Хочу модернизировать программу созданием проводника. Уйти от фиксированной папки, чтобы пользователь мог выбрать любую папку и количество рисунков в ней, чтобы загрузить в ворд файл.

Есть один главный вопрос
Придется ли менять весь код программы? Так как сейчас за счет фиксированной папки, я работаю с ее содержимым как со строками. Если делать проводник, то получается совсем другая программа.
Подскажите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2012, 12:45
Ответы с готовыми решениями:

Ошибка при создании объекта Circle
HMODULE SquareDLL = LoadLibrary(L"square.dll"); VoidSquare GetClassSquare; GetClassSquare =...

При создании статического объекта получают различные адреса при различных обращениях
Проблема. Описал класс в модуле object.h, там же создал его экземпляр obj. В этом же заголовочном файле в этом же пространстве имён...

Почему закрывается окно объекта OLE при открытии другого объекта?
Добрый день! Есть таблица, одно из полей которой - Поле объекта OLE. При двойном нажатии открывается окно приложения (в данном случае...

23
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.01.2012, 20:48
Студворк — интернет-сервис помощи студентам
Вместо вот этого
Цитата Сообщение от log Посмотреть сообщение
str= AnsiString("Рисунок №")+IntToStr(c)+AnsiString(" - ")+b->Strings[i];
вставь вот это
C++
1
str = AnsiString("Ðèñóíîê №")+IntToStr(c)+AnsiString(" - ")+ChangeFileExt(ExtractFileName(b->Strings[i]),"");
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
30.01.2012, 20:52  [ТС]
C++
1
vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", (Path.SubString(1,3)+ b->Strings[i]+".jpg").c_str(), false, true);
ругается на эту строчку.
ведь параметр Path не определен
C++
1
[C++ Error] Unit1.cpp(64): E2451 Undefined symbol 'Path'
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.01.2012, 20:55
Просто скопируй и вставь
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
80
81
82
83
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <utilcls.h>
#include <jpeg.hpp>
#include <sysvari.h>
#include "ComObj.hpp"
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
       TStringList *b = new TStringList();
       b->Clear();
       b->Sorted = true;
 
       OpenPictureDialog1->Options.Clear();
       OpenPictureDialog1->Options << ofFileMustExist << ofHideReadOnly << ofAllowMultiSelect << ofEnableSizing;
 
        if(!OpenPictureDialog1->Execute())return;
        {
          for(int i=0;i<OpenPictureDialog1->Files->Count;++i)
            {
              b->Add(OpenPictureDialog1->Files->Strings[i]);
            }
        }
 
 AnsiString str;
 
 Variant vVarParagraph,Var,Dms,Word;
 Word = CreateOleObject("Word.Application");
 Word.OlePropertySet("Visible", false);
 Variant Doc = Word.OlePropertyGet("Documents");
 Doc.OleProcedure("Add");
 
 if(Doc.OlePropertyGet("Count") != 1)
 {
  MessageBox(0, "Ошибка при создании документов",
                 "Ошибка", MB_OK);
 
  return;
 }
 Dms=Doc.OleFunction("Item",1);
 Dms.OleProcedure("Activate");
 Var=Dms.OlePropertyGet("Paragraphs");
 
 int d = 0,c=0;
 for(int i = 0; i < b->Count;i++)
 {
  d++;
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", b->Strings[i].c_str(), false, true);
  vVarParagraph.OlePropertySet("Alignment",1);
  d++;
  c++;
  str = AnsiString("Рисунок №")+IntToStr(c)+AnsiString(" - ")+ChangeFileExt(ExtractFileName(b->Strings[i]),"");
  Var.OleProcedure("Add");
  vVarParagraph=Var.OleFunction("Item",d);
  vVarParagraph.OlePropertyGet("Range").
               OlePropertySet("Text",str.c_str());
               vVarParagraph.OlePropertySet("Alignment",1);
 }
 
 Word.OlePropertySet("Visible", true);
 
 delete b;
 b = NULL;
 
}
//---------------------------------------------------------------------------
1
Деструктор ума
 Аватар для log
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
30.01.2012, 21:01  [ТС]
блин ты прав.
я просто вставлял твои строки в свой код
в результате пропустил твою строку
C++
1
vVarParagraph.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", b->Strings[i].c_str(), false, true);
все пашет. все работает
спасибо огромное

Добавлено через 3 минуты
буду разбираться в коде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2012, 21:01

В экземпляре объекта не задана ссылка на объект при динамическом создании объекта
Выдается ошибка NullReferenceException в private void button2_Click(object sender, EventArgs e) { ...

Ошибка при вставке объекта в поле OLE
Добрый день! Очень нужна помощь с базой данных. Есть следующая база данных (скрин 1 + сам архив с БД). Необходимо сделать так,...

Ошибка при создании объекта. (При изменении цвета заполнения фигуры)
Дано: Adobe Flash CS3 Prof. Требуется программно изменить цвет заполнения нарисованной фигуры, преобразованной в символ. При помощи...

При подключении DLL: Ошибка при создании объекта из компоненты
Создана DLL. При попытке подключения из 1С получаем сообщение: Ошибка при создании объекта из компоненты c:Program FilesMicrosoft...

NPE при создании объекта
Добрый день! Пробую засунуть в Set класс реализующий Runnable. У класса есть конструктор куда передается число и строка. Выбрасывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

Новые блоги и статьи
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru