Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

Конвертировать с C в Delphi   Найти похожие ветки 

 
dreamse   (2005-07-20 15:00) [0]

Подскажите пожайлуста конвертор с C на Delphi а то код большой на С , а я не шарю в этом языке :(

На delphi нужно перевести.


 
syte_ser78 ©   (2005-07-20 15:06) [1]

если такие конвертеры и есть то переведут они лишь чтото наподобие

void a()
{
if (b==1) b=2;
}

в

procedure a;
begin
if b=1 then b:=2;
end;

и врядли чтото сложнее


 
Алхимик ©   (2005-07-20 15:06) [2]

Набираешт в яндексе c2pas или cpp2pas, качаешь то что по ссылочкам, убеждаешься что все это лажа.


 
dreamse   (2005-07-20 15:11) [3]

> syte_ser78 ©   (20.07.05 15:06) [1]

По крайне мере не в ручную код переводить, слишком много :(


 
Igorek ©   (2005-07-20 15:35) [4]

Алхимик ©   (20.07.05 15:06) [2]
Набираешт в яндексе c2pas или cpp2pas, качаешь то что по ссылочкам, убеждаешься что все это лажа.

:)
На самом деле зависит, что за исходники. Если самодостаточный файл С/С++ без инклюдов, внешних макросов, шаблонов, перезагрузок операторов и прочих наворотов, то переводит неплохо. Т.е. перевод одного простого файла можно сделать. А если надо весь проект, да еще сделаный в кодогенераторах типа Builder/VC, да еще с библиотечными макросами (шоб ими Майрософт подавился) то - :( (интерактивный нудный процесс).


 
PVOzerski ©   (2005-07-20 15:46) [5]

Как частичное решение использую http://www.astonshell.com/files/c2pas.zip . Но особо обольщаться не советую. А уж если в Си++-коде окажутся, например, шаблоны...


 
Igorek ©   (2005-07-20 16:08) [6]

PVOzerski ©   (20.07.05 15:46) [5]
А уж если в Си++-коде окажутся, например, шаблоны...

И даже не шаблоны и просто статические переменные..
Напр. код
void f1(void)
{
   static int a;
}
void f2(void)
{
   static int a;
}

оно переведет в
var:
 a: Integer;
var:
 a: Integer;
procedure f1;
begin
end
procedure f2;
begin
end


 
Digitman ©   (2005-07-20 16:16) [7]


> Igorek ©   (20.07.05 16:08) [6]


нормально переведено
в чем ты видишь ненормальность этого перевода ?


 
PVOzerski ©   (2005-07-20 16:23) [8]

Ну, я бы, пожалуй, предпочел вот так:
{$J+}
var:
a: Integer;
procedure f1;
begin
end;
procedure f2;
const a: Integer = 0;
begin
end;
И тогда не возникнет ошибки компиляции из-за задублированной a.


 
Igorek ©   (2005-07-20 16:51) [9]

Digitman ©   (20.07.05 16:16) [7]
нормально переведено
в чем ты видишь ненормальность этого перевода ?

Это риторический вопрос? Или шутка? :)
Во-первых не компилируется.
Во-вторых, если некоторые средства С++ не существуют в Паскале, то надо использовать то что есть.
Т.е. как минимум или:

implementation
var
   f1_a, f2_a: Integer;
initialization//если и в С++ инициализируется
   f1_a := 0;
   f2_a := 0;

или лучше как в [8]
{$J+}
procedure f1;
const a: Integer = 0;
begin
end;
procedure f2;
const a: Integer = 0;
begin
end;
{$J-}


А насчет шаблонов. Так они и в С++ если не используются, то не компилируются в бинарь. А если используются, то и специализируются - т.е. неявно генерируется код. А на Паскале это можно сделать явно. Т.е. обязательно переводить и шаблон и его использование разом.


 
Digitman ©   (2005-07-20 17:15) [10]


> Во-первых не компилируется


понятно что лошадь)


> Во-вторых, если некоторые средства С++ не существуют в Паскале,
> то надо использовать то что есть


далеко, как понимаешь, не всегда в Паскале найдется соотв.функц.эквивалент


> риторический вопрос? Или шутка?


пожалуй, нечто среднее.

ежу понятно, что идентификаторы дублированы.

с др.стороны, я не представляю, как в некоем очередном "шедевре" типа c2pas можно "разрулить" такие ситуации без напряга юзера а-ля "обнаружена такая-то ситуация с потенц. дублированием Паскаль-идентификаторов как результат конверсии по дифолту ... введите, мол, уник.идентификатор либо откажитесь от автоконверсии проблемной для Паскаля C-конструкции"

это ж затрахать юзера можно такими вопросами !
они же сплошь и рядом возникать будут ... и если бы только такие вопросы ! ... с макросами взять хотя бы - уж там-то засада метр на метр)


 
Igorek ©   (2005-07-20 18:42) [11]

Digitman ©   (20.07.05 17:15) [10]
Я раз переводил код с Обьектного Паскаля на С (не на С++).
Было:

interface
type
 A = class
   I: Integer;
   procedure f;
 end;
implementation
procedure A.f;
begin
end;


Стало:
int A_i;
void A_f(void) {};

И такое соглашение об именах хотел заказчик. Я к тому, что много соглашений можно забить по дефолту, и дать возможность их редактировать или переводить интерактивно (для продвинутого юзера). В том смысле, что это в принципе возможно. Ну а что не сделано в шедевре c2pas - это другой вопрос.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
1-1121955070
alexander_ua
2005-07-21 18:11
2005.08.14
Массив из 5 и выше млн. элементов типа single-переполнение стека


14-1122129270
}{eRsOn
2005-07-23 18:34
2005.08.14
Копирование повреждённого CD!


9-1114228100
Ivanov
2005-04-23 07:48
2005.08.14
Image


14-1122024136
asdqwer
2005-07-22 13:22
2005.08.14
SMS Email Gateway


1-1122361542
Dust
2005-07-26 11:05
2005.08.14
Конструктор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский