Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Convertir codigo Delphi a Builder (https://www.clubdelphi.com/foros/showthread.php?t=53227)

_Willa 14-02-2008 16:26:07

Convertir codigo Delphi a Builder
 
HOla,

Ahora q tengo un poco más de tiempo estoy convirtiendo a una serie de componentes que estan creados en Delphi a Builder...
Lo bueno es que son de codigo abierto, por eso me he decidido a convertir los ejemplos a Builder.

Me han surgido una serie de dudas a la hora de convertir, y por eso lo indico aqui a ver si hay alguien que sepa me puede indicar . "el paso a builder"

Código:

  L=Round(Sqrt(Sqr(PT.x-LastBrushX)+Sqr(PT.y-LastBrushY)));
Necesito aqui las instrucciones Round, Srt, Sqr

Código:

  if (SXSkinLibrary1.Styles[A] is TSXSkinGeneralStyle) then
La sentencia if, especialmente la clausula is, indicar que SXSkinLibrary1.Styles[A] es del tipo TSXSkinStyleList


Código:

  Dec(StartDragPT.X,Left);
Creo que es decrementar tantan vaces como indique "Left"

Al igual que creo que Inc(BrushCounter,2); // en Delphi
creo que en Builder, seria algo asi como BrushCounter+=2; si existe alguien q me lo confirme.

Bueno, pues eso si hay alguien que sepa delphi o que tb ha realizado alguna que otra adaptación a builder, ...y tiene tiempo pues que me heche una manilla. Gracias.
Si alguien ha trabajado con estos componentes que se ponga en
contacto conmigo y comente que tal le va, los problemas que ha tenido, etc.

Los componentes son:
http://www.saarixx.info/sxskincomponents/en/

Ñuño Martínez 15-02-2008 09:15:30

Código:

{ Object Pascal. }
  L = Round (Sqrt (Sqr (PT.x - LastBrushX) + Sqr (PT.y - LastBrushY)));

// C++
  L == (int)(sqrt (pow (PT->x - LastBrushX, 2) + pow (PT->y - LastBrushY, 2)));

Fíjate que en Object Pascal has escrito "L = ..." y no "L := ..." ;)

Por otro lado utilizo el operador flecha (->) ya que, por lo que sé, Builder utiliza punteros para referenciar los objetos.

Código:

{ Object Pascal. }
  if (SXSkinLibrary1.Styles[A] is TSXSkinGeneralStyle) then

//  C++
  if (strcmp (typeid (SXSkinLibrary1->Styles[A]).name (), "TSXSkinGeneralStyle") == 0) {

El código anterior fallará más que una escopeta de feria. Deberías buscar otro mecanismo. Lee esto.

Código:

{ Object Pascal }
  Dec (StartDragPT.X, Left);
  Inc (BrushCounter, 2);

// C++
  StarDragPT->X -= Left;
  BrushCounter += 2;


Gabo 15-02-2008 10:10:13

Sólo una pequeña nota...

= es para las asignaciones en una variable y == para preguntar si una expresión es igual a otra, por lo que:

Código:

// C++
L == (int) (sqrt (pow (PT->x - LastBrushX, 2) + pow (PT->y - LastBrushY, 2));

Debería ir con un solo =.

Ñuño Martínez 15-02-2008 11:37:10

[Gabo], tienes razón, pero como ya escribí antes _Willa escribió "L =..." (comparación) y no "L :=..." (asignación). De todas formas, buena puntualización que seguro que alguno se despista.


La franja horaria es GMT +2. Ahora son las 19:00:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi