 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Juan Invitado
|
Publicado: Dom 18 Ago, 2002 8:33 pm Asunto: Codigo en Pascal a C++ |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 18 Ago, 2002 11:08 pm Asunto: |
|
|
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 |
|
 |
Juan Invitado
|
Publicado: Lun 19 Ago, 2002 12:06 am Asunto: |
|
|
Muchísimas gracias Leo!
Ha funcionado a la perfección. Te debo unas cervezas.
Juan. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|