Форум: "Потрепаться";
Текущий архив: 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.47 MB
Время: 0.012 c