adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Непонятки с синтаксисом!
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Сб 6-01-07 : 22-44    Заголовок сообщения: Непонятки с синтаксисом! Ответить с цитатой

Товариши, кто шарит в С++ памагите!
Вот сделал програмку одну на Delphi.
А терь хочу ее в С++ портировать.

Вопрос:
В Паскале переменную типа TImage можно обьявить так:
Im : TImage;
А в С++ там с обьявлением имаджевской переменной проблем много.

Так вот, напишите как будет выглядеть обьявление TImageвской переменной на С++.
Отвены типа
TImage Im; не предлагать, они все равно не работают!!!
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
312
Форумчанин
СообщениеДобавлено: Сб 6-01-07 : 22-46    Заголовок сообщения: Ответить с цитатой

Enigma писал(а):
TImage Im; не предлагать, они все равно не работают!!!

а что не работает? может тебе указатель нужен? или что еще?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Сб 6-01-07 : 22-49    Заголовок сообщения: Ответить с цитатой

TImage* pTim;
pTim = new TImage(<указать нужные параметры>);

ибо *цитата хелп* "objects of VCL classes must be created only with new statement"
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Сб 6-01-07 : 22-53    Заголовок сообщения: Ответить с цитатой

Andron_
objects of VCL classes must be created only with new statement
Во, вот с этим я и парился!!! Перевести все немог и понять, что от меня хотят то!!!
указать нужные параметры - что в эти параметры входит?
если размеры итд, то не покатит.
У меня картинки в БД храняться. Тобишь есть переменная типа имаг, в нее заносим первую запись из БД. Рисуем ее, затем запись+1, и следующуу и.т.д!!
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Andron_
Гуру
Предупреждений : 4
СообщениеДобавлено: Сб 6-01-07 : 22-56    Заголовок сообщения: Ответить с цитатой

Enigma
параметры конструктора, какие хочешь... но наеврное тебе никаких не нада, оставляй пустые скобки.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Panter
Продвинутый форумчанин
СообщениеДобавлено: Вс 7-01-07 : 03-06    Заголовок сообщения: Ответить с цитатой

Andron_ писал(а):
но наеврное тебе никаких не нада, оставляй пустые скобки.

Не совсем так
это объявление конструктора:
__fastcall virtual TImage(Classes::TComponent* AOwner);

Владельца-таки надо указать конструктору Wink
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
dlnsk
Гуру
СообщениеДобавлено: Вт 24-04-07 : 00-05    Заголовок сообщения: Re: Непонятки с синтаксисом! Ответить с цитатой

Enigma писал(а):

В Паскале переменную типа TImage можно обьявить так:
Im : TImage;

Но использовать-то можно все-равно только после:
Im := TImage.Create(<параметры>);

...ибо конструктор - вещь необходимая везде! Wink
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Чт 26-04-07 : 21-34    Заголовок сообщения: Ответить с цитатой

dlnsk
Цитата:
Но использовать-то можно все-равно только после:
Im := TImage.Create(<параметры>);

В делфи и без этого канает
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Klayd
Гуру
Предупреждений : 1
СообщениеДобавлено: Пт 27-04-07 : 00-37    Заголовок сообщения: Ответить с цитатой

Enigma
хы... ерунду говорите... экземпляр класса без конструктора НЕ МОЖЕТ появиться... иначе обращение по неправильному указателю и превед сегментэйшн фоулт... советую поискать конструктор... например в конструкторе формы... или гдето там по близости )) давно уж за делфю не садился...
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Пт 27-04-07 : 02-27    Заголовок сообщения: Ответить с цитатой

Klayd
я тебе серьезно говрорю, что описание конструктора я не делал.
вероятно этим занимаеться компилятор во время компиляции.
во всяком случае делфа такую ошибку прощает.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Klayd
Гуру
Предупреждений : 1
СообщениеДобавлено: Пт 27-04-07 : 09-12    Заголовок сообщения: Ответить с цитатой

Enigma
господи... УЧИТЕ МАТ, ЧАСТЬ!!!
любой класс является потомком базового класса (щас не вспомню как он там зовётся TObject кажется), в котором прописан конструктор по умолчанию. при добавление элемента на форму создаётся класс формы (в который входят все добавляемые вами компоненты) и экземпляр этого класса. При вызове Form.Create вызываются конструкторы для всех экземпляров классов, содержащихся на форме. Ежу понятно, что вы ничего не описывали - класс-то стандартный и без жестокой необходимости конструктор править ему и не нужно... Но утверждать, что его нету или он не вызывается... хм...
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Пт 27-04-07 : 14-06    Заголовок сообщения: Ответить с цитатой

Klayd
Сам читай внимательнее. Я не говорил, что его нет. Конечно же он есть! Так как Im - переменнаая, в которую занесены свойства обьекта TImage (стандартный) со всеми крнструкторами и деструкторами.
dlnsk писал(а):
Но использовать-то можно все-равно только после:
Im := TImage.Create(<параметры>);

Я говорил, что для того чтобы использовать не нужно писать конструктор отдельно для Im!!!!
З.Ы. И вообще кончай мне выкать! Пили же вместе, а ты ме вы да вы.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
dlnsk
Гуру
СообщениеДобавлено: Пн 30-04-07 : 01-31    Заголовок сообщения: Ответить с цитатой

2Enigma:
Полностью согласен с Klayd.
Советую вам прочитать повнимательнее основы ООП! Иначе вы поимеете много проблем с С++ и любым другим языком использующим объектно-ориентированную модель.

Нельзя путать объектную ссылку (Im) и объект. Можно определить объектную ссылку, но нельзя ей пользоваться пока она не ссылается на объект!
Klayd и я говорим не о том, что нужно писать конструктор, а о том, что его нужно вызывать для создания объекта!

Попробуйте сделать:
Im.Picture.LoadFromFile('MyPic.bmp'); //не забудьте поместить файл в папку проекта
и вы получите ошибку времени выполнения, т.к. Im не ссылается на реальный объект в памяти!

Но если вы напишете:
Im := TImage.Create(Form1);
Im.Picture.LoadFromFile('MyPic.bmp');
то все пройдет нормально и вы даже можете отобразить картинку добавив:
Im.Parent := Form1;
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
Enigma
Темный Эльф
Предупреждений : 1
СообщениеДобавлено: Пн 30-04-07 : 02-35    Заголовок сообщения: Ответить с цитатой

dlnsk
цЫтато из кода
***
table1.first;
Tag := 0;
for i := 1 to Table1.recordcount do
with timage.Create(panel1) do
begin
parent:=panel1;
name:='Im'+inttostr(i);
width:=32;height:=32;
top:= 140 + 36*((i-1)div 4);
left:=8 +36*((i-1)mod 4);
picture:=dbimage1.picture;
tag:=i;
table1.Next;
onclick:=im1click;
end;
end;
***
А теперь внимание вопрос!
Enigma писал(а):
В Паскале переменную типа TImage можно обьявить так:
Im : TImage;
А в С++ там с обьявлением имаджевской переменной проблем много.

Просто не внимательно читал и не понял, что мы говорим о разных вещах.
З.Ы. в делфи проблемм нет. Изначально проект был написан на паскале, а вот с переводом его в с++ возникли проблеммы.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
dlnsk
Гуру
СообщениеДобавлено: Вс 27-05-07 : 02-43    Заголовок сообщения: Ответить с цитатой

Я так понимаю, что вы портируете в C++ Builder. Поскольку у него библиотека с Delphi одна и та же, то и пишется в точности также.
Но т.к., если мне не изменяет память, в C++ нет аналога with, то делаем так:

TImage Im;
for (...) {
Im = new TImage(panel1);
Im->Parent = panel1;
//и далее по тексту с добавлением Im-> где надо.
}
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы