powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / от Delphi к CPP
18 сообщений из 93, страница 4 из 4
от Delphi к CPP
    #40062827
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Глобальные методы и переменные не пишу (почти)
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40062833
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Логгер P7 отлично останавливается на строке из под студии.
Всяко легче чем лечить по фото с AV.
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40064284
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Еще нужна помощь в разработке

немного переписываю конструктор формы

на делфи было так

Код: pascal
1.
2.
3.
4.
5.
constructor TfGraph.Create(AOwner : TComponent; Act : boolean);
begin
 inherited Create(AOwner);
 Action := Act;
end;



ну и соответсвенно при вызове

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try
   fGraph := TfGraph.Create(Self, false);
   try
     fGraph.Show;
   except
     raise;
   end;
 except
   raise;
 end;



а как в Си это смастерить? Спасибо
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40064285
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968,
Ты начинай писать. Что ты ждешь прямо копи паст банальный.
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40064326
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968
Код: pascal
1.
2.
3.
4.
5.
constructor TfGraph.Create(AOwner : TComponent; Act : boolean);
begin
 inherited Create(AOwner);
 Action := Act;
end;

Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
class TfGraph : public TForm {
public:
  // объявление конструктора
  TfGraph(TComponent* AOwner, bool Act);
  ...
};

Код: plaintext
1.
2.
3.
4.
5.
6.
// реализация конструктора
TfGraph::TfGraph(TComponent* AOwner, bool Act) :
  TForm(AOwner) // вызов конструктора базового класса
{
  Action = Act;
}


patrick1968
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try
   fGraph := TfGraph.Create(Self, false);
   try
     fGraph.Show;
   except
     raise;
   end;
 except
   raise;
 end;

Странный код. Исключение ловится, и сразу же возбуждается повторно. На C++ будет так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try {
  fGraph = new TfGraph(this, false);
  try {
    fGraph->Show();
  } catch (...) { // ловим любое исключение
    throw; // возбуждаем повторно пойманное исключение
  }
} catch (...) {
  throw;
}
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40064383
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пётр Седов
Примерно так:

Прекрасный код, как и изначальный...
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065421
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Громадный респект за помощь. Не мог найти решение по синтаксису еще одного вопроса. Нужно поместить картинку из файла в объект Picture в Fastreport, на делфи было так

Код: pascal
1.
TfrxPictureView(frxReport1.FindObject('Picture4').Picture.LoadFromFile("maingr.bmp");



но в С++
frxReport1->FindObject('Picture4') нет Picture и LoadFromFile тоже
хотя можно через поток, но это слишком нагромождено, может есть более простое и правильное решение? Спасибо.
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065461
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968
Код: pascal
1.
TfrxPictureView(frxReport1.FindObject('Picture4').Picture.LoadFromFile("maingr.bmp");

Здесь явно не хватает закрывающей круглой скобки. В Delphi, выражение:
Код: pascal
1.
TfrxPictureView(obj_reference)

это приведение типа. В C++ будет так:
Код: plaintext
1.
static_cast<TfrxPictureView*>(obj_pointer)
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065568
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну примерно так я и представлял
сделал следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
 ss = "maingr.bmp";
TMemoryStream *st = new TMemoryStream;
Graphics::TBitmap *bm = new Graphics::TBitmap();
bm->Handle = LoadBitmap(HInstance, ss.c_str());
bm->SaveToStream(st);
static_cast<TfrxPictureView*>(frxReport1->FindObject("Picture4")->LoadFromStream(st));


Пришлось делать через поток
,но всё-таки, что-то пошло не так
получается ошибка [bcc32 Error] Sert.cpp(122): E2031 Cannot cast from 'void' to 'TfrxPictureView *'
- что-то я не допонял
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065579
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобки надо расставлять правильно, а не от балды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065583
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибку понял - LOadFrom за скобками быть должен
Еще растолкуйте, пожалуйста такую тему, просто привычка от делфи в свете видимости переменных

есть у меня структура, объявленная в разделе PUBLIC в файле abc.h
Код: plaintext
1.
2.
3.
4.
   struct TMyPoint {
	  int PInd;
	  double Moment;
	  };


в форме (при создании) определяю массив

TMyPoint* Points = new TMyPoint[3];

и мне нужно, что бы он был виден по всех процедурах формы единообразно, как его нужно представлять в этих формах?
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065585
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968Ошибку понял - LOadFrom за скобками быть должен

А что, в оригинальном тексте на Дельфи он был внутри скобок?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065586
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про делфи - это к другому вопросу
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065591
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968
Добрый день. Громадный респект за помощь. Не мог найти решение по синтаксису еще одного вопроса. Нужно поместить картинку из файла в объект Picture в Fastreport, на делфи было так

Код: pascal
1.
TfrxPictureView(frxReport1.FindObject('Picture4').Picture.LoadFromFile("maingr.bmp");



но в С++
frxReport1->FindObject('Picture4') нет Picture и LoadFromFile тоже
хотя можно через поток, но это слишком нагромождено, может есть более простое и правильное решение? Спасибо.


А в самом отчете если, типа:
Код: plaintext
1.
2.
3.
4.
void Picture1OnBeforePrint(TfrxComponent Sender)
{
  Picture1.FileLink=<WorkDir>+"photo\\"+<frxDBDataset1."photo">;
}
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40065603
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, тут есть варианты

Я тут спрашивал по массиву, поможете? А то мне непонятно почему теряются значения массива. Наверное неверное объявление, при показе формы они проставляются, а в другой процедуре теряют значения.
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40066078
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Для отображения картинки в отчете
делаю следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Chart1->SaveToBitmapFile("maingr.bmp");
 ss = "maingr.bmp";
TMemoryStream *st = new TMemoryStream;
Graphics::TBitmap *bm = new Graphics::TBitmap();
bm->Handle = LoadBitmap(HInstance, ss.c_str());
bm->SaveToStream(st);
static_cast<TfrxPictureView*>(frxReport1->FindObject("Picture4"))->LoadFromStream(st);



В последнем операторе при выполнении ошибка, что файл неверного типа, очевидно, что у frxReport1->FindObject("Picture4") нет Picture, как в делфи, тогда как же поступить?
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40066523
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968, а типа такого:
Код: plaintext
1.
((TfrxPictureView*) Rep->FindObject("Picture4"))->Picture->LoadFromFile(photoname);
...
Рейтинг: 0 / 0
от Delphi к CPP
    #40066531
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
patrick1968
в форме (при создании) определяю массив

TMyPoint* Points = new TMyPoint[3];

и мне нужно, что бы он был виден по всех процедурах формы единообразно, как его нужно представлять в этих формах?
Массив должен быть полем класса. Если длина известна на этапе компиляции, то обычный массив:
Код: plaintext
1.
2.
3.
4.
5.
6.
class TfGraph : public TForm {
public:
  ...
private:
  TMyPoint _points[3];
};

Если длина не известна на этапе компиляции, то можно использовать std::vector:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <vector>

class TfGraph : public TForm {
public:
  TfGraph(TComponent* AOwner, bool Act);
  ...
private:
  std::vector<TMyPoint> _points;
};

TfGraph::TfGraph(TComponent* AOwner, bool Act) :
  TForm(AOwner)
{
  _points.resize(3);
}
...
Рейтинг: 0 / 0
18 сообщений из 93, страница 4 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / от Delphi к CPP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]