Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > C/C++ > C/C++
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.03.2013, 20:58
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию Кучка невероятно простых вопросов )

Здравствуйте.
Писал 4 месяца на Делфях, однако за кким то чудом купили Embarcadero C++, и надо переползать на него. Весь код что есть, портировать в С++. Посему желаю задать простейшие вопросы.
1. Тип string. В делфях он string. Как мне в C++ создать переменную srting?
2. Функции. В Делфях я сначала функцию писал public, писал желаемые параметры и тип, тыкал Ctrl + Shift + C, и запиливалась заготовка. Как в C++ 2010 создавать правильно функкцию? Например в Делфи такая
Код:
procedure Add(a,b,c : string)
Как это описать в C++? Чтобы из функции можно было работать с элементами на форме
3. На форме есть Image1, в свойствах забита картинка, bmp. Не могу рисовать программно, как только делаю
Код:
image1->Canvas->Rectangle(10,10,20,20);
Вылетает ошибка - что по битмапу нельзя рисовать. Как удалить рисунок перед началом рисования?
Заранее спасибо за ответы, товарищи
Ответить с цитированием
  #2  
Старый 21.03.2013, 22:23
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Все эти вопросы надо задавать гуглу, а не форуму! Но что поделать, добрый я сегодня.
Цитата:
1. Тип string.
Код:
#include <string.h>
string str; // нереально трудно, правда?
Цитата:
procedure Add(a,b,c : string)
Код:
void Add(string a, string b, string c); // тоже невероятно
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 21.03.2013, 23:06
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

В принципе - вероятно, пробовал. Но отсюда проистекают 2 более глубоких вопроса. Я не зря спросил именно так, чтобы быть уверенным что отталкивают правильно. Продолжаем марафон нубских вопросов :
1. Я делал
Код:
#include <string>
Отсюда вопрос - в чем различие string и String
2. Второй вопрос - интереснее.
В делфях я создавал функцию так - сначала в паблике писал ее имя и параметры, далее тыкал Ctrl + Shift + C, и создавалась заготовка, из которой можно было работать с компонентами на форме. Если создать просто так, то свойства того же самого image1 после . / -> не раскрываются, приходится перед именем компонента ставить название формы на которой он расположен.
Как с этим быть в С++?
Вот пишу я такой :
Код:
void Add(string a, string b, string c);
Начинаю писать
Код:
Image1->
и..... где же тот самый список свойств?
Чувствую в С++ нужно проделывать нечто аналогичное.
Спасибо душевное за ответы
Ответить с цитированием
  #4  
Старый 21.03.2013, 23:43
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Насчет отличия String и string.
string относится к STL. То есть к стандартной библиотеке классов C++. String же - это делфовская строка, подключенная к C++. Лучше использовать string, потому что при необходимости переноса кода на другой компилятор со String возникнет множество проблем. Сам на это натыкался.
Цитата:
Если создать просто так, то свойства того же самого image1 после . / -> не раскрываются
Ерунда. Сам никогда не использовал CtrlShiftC, потому что предпочитаю описывать сам. Если в реализации метода описать правильно, то никаких проблем не будет. В частности, в делфи нужно писать в этом случае не
Цитата:
procedure Add(a,b,c: String)
begin
...
end;
а
Цитата:
procedure TFrom1.Add(a,b,c: String)
begin
...
end;
и все будет работать нормально. Потому что компилятор должен знать, что функция принадлежит именно классу TForm1.
Для C++ аналог
Цитата:
void TForm1::Add(string a, string b, string c) { ... }
Аналог делфового Self в C++ - this. Это все опять же в любом учебнике по С++.
Серьезный минус C++ билдера - отсутствие подчеркивания ошибок и отрубание автодополнения в случае наличия ошибок. Как только исчезает автодополнение - знай, где-то ошибка.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 21.03.2013 в 23:56.
Ответить с цитированием
  #5  
Старый 22.03.2013, 10:56
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

В Unit2.h ставлю
Код:
#include <string.h>
И пишу
Код:
public:		// User declarations
	__fastcall TForm_Sut(TComponent* Owner);
	void TForm_Sut::Draw(int IDName);
Далее в Unit2.cpp свободно могу пользоваться своей функцией
Код:
void TForm_Sut::Draw(int IDName)
{

}
Однако, как только я пишу не int IDName , а string IDName, то вижу
Код:
[BCC32 Error] Unit2.cpp(11): E2147 'string' cannot start a parameter declaration
Да и просто переменная не объявляется string str;

Последний раз редактировалось alexusankov, 22.03.2013 в 11:13.
Ответить с цитированием
  #6  
Старый 22.03.2013, 23:08
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я перепутал. #include <string>. Без ".h".
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 22.03.2013, 23:15
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Еще пару моментов момент :
1.насчет третьего вопроса, подскажите комрады, очень хочется перед началом рисования графика на канвасе отображать красивость какую нить
2. В Делфях я часто делал так:
Код:
MSS.DelimitedText := Text;
MSS.Delimiter = ",";
a := MSS[0];
b := MSS[1]
Как то же самое сделать в С++? Делаю так, но не работает
Код:
int fxs = 0;
int PointS, PointE;
 MASS->DelimitedText = "100,200,400,630";
 MASS->Delimiter = ',';
  while (fxs > MASS->Count)
   {
	 PointS = StrToInt(MASS->Strings[fxs]);
	 PointE = StrToInt(MASS->Strings[fxs + 1]);
	 fxs =+ 2;
   }

Последний раз редактировалось alexusankov, 23.03.2013 в 10:43.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter