| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Трансляция кода Delphi в код C++Builder
Содержание Введение Цель этой статьи состоит в том, чтобы помочь вам понять основные различия и подобия между C++ и Object Pascal (язык, используемый в Delphi от Borland), и помочь вам в преобразовании проекта написанного на Delphi в проект написанный на C++ (С++Builder от Borland).В жалбнейшем в этой статье вместо терминов Object Pascal и Delphi будет употребляться аббревиатура "OP".
Следует отметить, что язык С++ является регистро зависимым, в отличие от OP , который таковым не является.
C++
Для обработки строк имеется ряд библиотечных функций. Основные из них strcat — конкатенация (склеивание) двух строк, strcmp — сравнение двух строк, strcpy — копирование одной строки в другую, strstr — поиск в строке заданной подстроки, strlen — определение длины строки, strupr — преобразование символов строки к верхнему регистру, sprintf — построение строки по заданной строке форматирования и списку аргументов и ряд других функций. OP
Delphi поддерживает строки
практически неограниченной длины (до 2 Гб), в дополнение к 255-символьным
строкам, известным как pascal-строки. Новая директива компилятора $Н позволяет
контролировать смысл использования зарезервированного слова string. Состояние
этой директивы по умолчанию ($Н+) подразумевает использование в качестве типа
string длинных строк. $Н- подразумевает использование коротких 255-символьных
pascal-строк. Все
компоненты Delphi используют длинные строки.Следует отметить, что, вне
зависимости от состояния директивы $Н, если специфирована максимальная длина
строки, меньшая 255, то подразумевается короткая строка (ShortString).
Назначение длины строки с использованием квадратных скобок всегда подразумевает
подтип ShortString. Длинные строки, введенные в Delphi
2.0, в большинстве случаев совместимы со строками старого типа. При этом
необходимо принимать во внимание следующие особенности их
использования:
Поскольку реально длинные строки не
дублируются, а для них поддерживаются счетчики использований, то присваивание
длинных строк происходит намного быстрее по сравнению с короткими
строками.Несмотря на
то, что большая часть кода, используемого при работе со строками
интероперабельно для коротких и длинных строк (то есть применимо к обоим видам
строк), тем не менее, некоторые операции над короткими строками не применимы к
длинным строкам. Длинные строки не могут
передаваться в параметры типа OpenString или как var-параметры, соответствующие
коротким строкам. Массивы Массивы - упорядоченные последовательности одного типа данных (могут включать также и объекты). Методы для объявления массива в C ++ и OP - различные. С++ OP var ArrayS: array[1..31] of double; Оба языка поддерживают многомерные массивы С++ double dMatrix[50] [20]; OP dMatrix: array[1..50, 1..20] of double; Приравнивание и сравнение переменных C++ Сравнение производиттся оператором "двойное равно" (==), приравнивание одним равно (=) int
i,j; OP Сравнение производиттся оператором "равно" (=), приравнивание двоеточие+одно равно (:=) ... Константы - значения, которые не изменяются . Идентификатор может быть объявлен как константа, и в C ++ и OP. И C ++ и OP константам должны быть назначены значения при их объявлении. С++ При объявлении константы перед типом данных используется
ключевое слово const В С++ константы также можно определять через директиву
препроцессора #define но на практике это устарело. Так как компилятор не может выполнить контроля соответствия типов(он не может определить что это ini или double) OP Константы, подобно переменным, должны быть объявлены в блоке кода "const" в начале определения процедуры или функции ,определения или в декларации объекта . function PayBack_d(var
dAmount: double): double; Блоки Кода, которые исполняют определенную задачу в C ++, называются "функциями" независимо от того, действительно ли они возвращают значение. В OP, функции должны возвращать значение, процедуры не возвращают значение. В C ++, все функции должны иметь прототип, объявленный перед применением (так что транслятор может сравнивать обе функции , чтобы гарантировать соответствие). В OP, однако, функция или определение процедуры могут опустить (но это не желательно) параметры и опускать тип возвращения.Декларация функции в C ++ и определений требует фигурных скобок () независимо от того, действительно ли передаются любые параметры. OP функции и процедуры не нуждаются в фигурных скобках () при их объявлении или определении , если не передается никаких параметров,для вызова функции или процедуры. С++ Реализация OP Каждая функция и процедура должны быть идентифицированы
включением ключевого слова "function" или "procedure" в начале каждого
определения . И C ++ и OP могут передавать параметры по значению или по
ссылке или передавать константы... Вообще, C ++ более компактен чем OP. Но, C ++ не имеет инструкцию with ... do с... Это неудачно, потому что это действительно - большая особенность OP. C ++ код будет более подробным по сравнению с OP. В C ++, когда Вы должны обратиться к членам данных, вы
заканчиваете оператор подобно этому... Но в OP, Вы можете делать это гораздо менее читаемым,
делая так... Комментарии OP в отличие от С++ поддерживает 3 вида комментариев. Это
связано с тем, что Borland при написании Delphi внес в язык Pascal очень много
элементов из C++.В часности добавился однострочный комментарий как в
С++ Управляющие конструкции (if, else, switch...) Существует пять структур управления на обоих языках, и они весьма подобны. Этот обзор займет много места . 1. Конструкция if ... else C++
if(<логическое выражение>) // в скобках единственное выражение
{
...
}
else if(<логическое выражение>)
{
...
}
else
{
...
}
OP
if <логическое выражение> then
begin
{единственное выражение не должно находиться в скобках}
...
end
else if <логическое выражение> then
begin
....
end
else
begin
...
end; {только самый последний "end" в выражении терминируется точкой с запятой}
2. Конструкция switch/case C++
switch(<целочисленная константа>)
{
case iX: ... break;
case iY: ... break;
default: ...
}
OP
case <целочисленная выражение переменная или константа> of
{здесь "begin" не нужен}
iX:
begin
...
end; {точка с запятой после каждого "end";}
iY:
begin
...
end;
else {двоеточие не требуется}
begin
...
end;
end;{вот здесь "end;" }
3. Цикл for C++
for(iCount = 0; iCount <= 10; iCount++)
{
// инкреметн нужен для цикла, iCount++,может быть увеличен
// на любое значние не только на 1
...
break; // для выхода из цикла
continue; // для продолжения цикла
...
}
OP
for iCount := 1 to 10 do
begin
... {цикл for может увеличивать счетчик только на 1}
break; { для выхода из цикла }
continue; { для продолжения цикла }
...
end ;
Есть одно различие между выполнением "break" и "continue" в языках. В C ++, break, и continue - ключевые слова - часть языка;
В OP это библиотечные процедуры.Хотя используются также.
4. Цикл while C++
while(<логическое выражение>)
{
// выражение проверяется в самом начале цикла,так что код может никогда не использоваться
// если выражение вернет false
...
break; // для выхода из цикла
continue; // для продолжения цикла
...
}
OP
while <логическое выражение> do
begin
{ выражение проверяется в самом начале цикла,так что код может никогда не использоваться
если выражение вернет false }
...
break; { для выхода из цикла }
continue; { для продолжения цикла }
...
end;
5. Цикл do ... while 5) The do/repeat ... loop construct:
C++
do
{
// выполняется некий код, затем проверяется выражение. В этом случае код выполнится хотябы один раз
...
break; // для выхода из цикла
continue; // для продолжения цикла
...
}while(<логическое выражение>);
OP
repeat
{ eвыполняется некий код, затем проверяется выражение. В этом случае код выполнится хотябы один раз
заметьте что в цикле нет ключевых слов begin ... end }
...
break; { для выхода из цикла }
continue; { для продолжения цикла }
...
until <логическое выражение>;
Рубрика: C++ Builder
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|