Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Codigo en Pascal a C++

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Codigo en Pascal a C++ Responder citando

Hola foro,

He encontrado un código que me es de utilidad para un programa pero esta en Pascal y no se como pasarlo a c++. Algunas sentencias las he convertido por lógica pero hay otras que ni pa'tras. Aquí os pego algunos fragmentos de código a la espera de que podais ayudarme:

CODIGO 1
---------

S:= Value div 75; //Value es longint
S100:= Value mod 75;
H:= S div 3600;
S:= S mod 3600;
M:= S div 60;
S:= S mod 60;


CODIGO 2
-------------

No se que signifca el #9
//S es String
S:= Format('%.2d'#9'%s'#9'%s'#9'%s'#9'%.2f MB'#9'%s'#9'%s'#9'%s',
[Number,
Title,
MSFToTimeStr(Start,True),
MSFToTimeStr(Length,True), Size, CP, PE,ISRC]);

CODIGO 3
-------------

P,Offset,i: Integer;
C: array[0..255] of Char;
S,S2: string;
begin
Offset := 0;
i := 0;

S2 := ListBox.Items[Index];

P := Pos(#9, S2);
while True do
begin
if (P = 0) then S := System.Copy(S2, 1, MaxInt)
else S := System.Copy(S2, 1, P-1);

R.Right := R.Left + (Header.SectionWidth[i]);
ExtTextOut(ListBox.Canvas.Handle, R.Left, R.Top, ETO_CLIPPED or
ETO_OPAQUE, @R, StrPCopy(C, S), Length(S), nil);

if (i = 0) then dec(R.Right,Offset);
R.Left := R.Right;

if (P = 0) then exit;

S2 := System.Copy(S2, P+1, MaxInt);
P := Pos(#9, S2);
inc(i);
end;
end;


Como os he dicho algunas lineas las he descifrado pero os estaría muy agradecido si me echaseis un cable. Gracias por todo y espero no ser muy pesado.

Un saludo, juan.
Volver arriba
Mensaje    Asunto: Responder citando

Algunas variables no dices lo que son, así que he tenido que "adivinar" un poco lo que podían ser, así que es posible que algún . lo tengas que cambiar por -> o al contrario.

La "traducción" es lo mas literal posible, pero realmente esto en C++ se podría abreviar un poquito o usar funciones diferentes.

Código:
    // Código 1
    // ---------
    // Value es longint
    S = Value / 75;
    S100 = Value % 75;
    H = S / 3600;
    S = S % 3600;
    M = S / 60;
    S = S % 60;


    // Código 2
    // ---------
    // el nueve es el tabulador y dentro de una cadena se pone \x09 o \t
    // S es String
    S = Format( "%.2d\t%s\t%s\t%s\t%.2f MB\t%s\t%s\t%s", ARRAYOFCONST((
            Number,
            Title,
            MSFToTimeStr(Start, true),
            MSFToTimeStr(Length, true), Size, CP, PE, ISRC)) );


    // Código 3
    // ---------
    int P, Offset, i;
    char C[256];
    String S, S2;
    {
        Offset = 0;
        i = 0;

        S2 = ListBox->Items->Strings[Index];

        P = S2.Pos("\t");
        while (true)
        {
            if (P == 0)
                S = S2.SubString(1, MaxInt);
            else
                S = S2.SubString(1, P-1);

            R.Right = R.Left + (Header->Sections->Items[i]->Width);
            ExtTextOut(ListBox->Canvas->Handle, R.Left, R.Top, ETO_CLIPPED
                | ETO_OPAQUE, &R, StrPCopy(C, S), S.Length(), NULL);

            if (i == 0)
                R.Right -= Offset;
            R.Left = R.Right;

            if (P == 0)
                break;                 

            S2 = S2.SubString(P+1, MaxInt);
            P = S2.Pos("\t");
            i++;
        }
    }
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchísimas gracias Leo!

Ha funcionado a la perfección. Te debo unas cervezas.


Juan.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.