Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 00:40   #1
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
Радость Добрые люди! Помогите исправить программу!

Всем привет! Помогите пожалуйста. У меня такой вопрос, я пишу на Дельфи, хотелось перевести некоторый код на С++, у меня выдается ошибка, не знаю почему это так:
Вот код (на Дельфи, работающий):
Код:
Procedure Titanic (x,y:integer; Color:TColor);
const dx=5;
        dy=5;
var buf:TColor;
begin
with (Form1.Canvas) do
begin
buf:=pen.Color;
pen.Color:=Color;
MoveTo(x,y);
LineTo(x+2;y+2);
end;
Перевел этот код на С++, выдает ошибку.
Код:
Код:
void Titanic (int x,int y, TColor Color){
const dx=5;
const dy=5;
TColor buf;
while (Form1->Canvas) {
buf=Pen=>Color;//Здесь ошибка :-( 
Pen->Color=Color;// Здесь тоже ошибка :-( }}
Lifefine вне форума Ответить с цитированием
Старый 08.12.2009, 00:46   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

with (Form1.Canvas)
while (Form1->Canvas)
разницы не замечаете? ) хотя бы в переводе на русский ) (with - с, while - пока)
В C++ аналога with нет, всегда нужно указывать полный путь доступа к методам и полям класса. Также в C++ отменили int по умолчанию, потому после const не забудьте дописать int
netrino вне форума Ответить с цитированием
Старый 08.12.2009, 00:51   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Сколько я помню, with X do - это конструкция, позволяющая работать с элементами X. while - это цикл. Т.е. получается, что пока указатель на канвас формы не равен нулю (а это, по идее, будет до закрытия программы) будет выполняться... несколько не то, что вы ожидали.
Сделайте так:
Код:
void Titanic (int x,int y, TColor Color){
const int dx=5;
const int dy=5;
TColor buf;
buf = Form1 -> Canvas -> Pen -> Color;
Form1 -> Canvas -> Pen -> Color = Color;
З.Ы. Не успел...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 08.12.2009, 01:20   #4
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
with (Form1.Canvas)
while (Form1->Canvas)
разницы не замечаете? ) хотя бы в переводе на русский ) (with - с, while - пока)
В C++ аналога with нет, всегда нужно указывать полный путь доступа к методам и полям класса. Также в C++ отменили int по умолчанию, потому после const не забудьте дописать int
Спасибо за сообщение! Я заметил, просто когда вставлю with но С++ не воспринимает.
Lifefine вне форума Ответить с цитированием
Старый 08.12.2009, 01:21   #5
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Сколько я помню, with X do - это конструкция, позволяющая работать с элементами X. while - это цикл. Т.е. получается, что пока указатель на канвас формы не равен нулю (а это, по идее, будет до закрытия программы) будет выполняться... несколько не то, что вы ожидали.
Сделайте так:
Код:
void Titanic (int x,int y, TColor Color){
const int dx=5;
const int dy=5;
TColor buf;
buf = Form1 -> Canvas -> Pen -> Color;
Form1 -> Canvas -> Pen -> Color = Color;
З.Ы. Не успел...

Спасибо! Сейчас попробую вставить код!
Lifefine вне форума Ответить с цитированием
Старый 08.12.2009, 01:35   #6
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Спасибо всем! Тему можно закрыть!

Последний раз редактировалось Lifefine; 08.12.2009 в 01:50.
Lifefine вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц